当前位置: 首页 > 知识库问答 >
问题:

Android Studio 3.0清单错误:找到未知元素

景帅
2023-03-14

注意:请不要将此“android.enableapt2=false”作为回答。这不是一个解决办法。它只是忽略了真正的错误,这不会在运行时造成任何问题。

解决方案很简单,只是在清单文件中删除了错误放置在意图过滤器外部的操作标记。

有一个由Android Studio 2.3构建的应用程序。更新Android Studio 3.0 Stable后,开始出现此错误,无法构建我的项目。

我的manifest.xml

<application
    android:name=".ApplicationClass"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <!--other unrelated stuff-->

    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

    <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.xxx.xxx" />
        </intent-filter>
    </receiver>
</application>

错误显示以下行:

<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

如果我评论/删除此操作标记行,则项目构建正常,但对于GCM是必要的,我无法删除它。

正如您在日志中看到的,错误不是出现在主清单文件中,而是出现在/build/intermediates/manifests/full/debug/Android manifest . XML中

尝试清理,重建,禁用即时运行。有什么解决办法吗?

错误日志:

/THE_PROJECT_PATH/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
Error:(99) error: unknown element <action> found.
Error:(99) unknown element <action> found.
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Information:BUILD FAILED in 1s
Information:6 errors
Information:0 warnings
Information:See complete output in console

共有3个答案

杜苏燕
2023-03-14

根据清单文件结构,将操作内容放入如下意图过滤器中。

<intent-filter>
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
 </intent-filter>
潘皓
2023-03-14

在根项目中gradle.properties添加此代码:

android.enableAapt2=false

这对我很有效

root 
| 
|--gradle.properties
王飞虎
2023-03-14

你的标签放错地方了。新的AAPT(AAPT2)现在对此抛出一个错误。

从这里的文档:https://developer . Android . com/studio/build/grad le-plugin-3-0-0-migration . html

为了改善增量资源处理,Android插件3.0.0默认启用AAPT2。虽然AAPT2应该立即与旧项目一起工作,但是本节描述了一些您应该知道的行为变化。

在以前版本的 AAPT 中,嵌套在 Android 清单中不正确节点中的元素要么被忽略,要么会导致警告。例如,请考虑以下示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.myname.myapplication">
   <application
       ...
       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
           <action android:name="android.intent.action.CUSTOM" />
       </activity>
   </application>
</manifest>

以前版本的AAPT会简单地忽略放错位置的标签。但是,对于AAPT2,您会得到以下错误:

AndroidManifest.xml:15: error: unknown element <action> found.

若要解决此问题,请确保您的清单元素正确嵌套。有关详细信息,请阅读清单文件结构。

 类似资料:
  • 我正在使用代码欺骗TDD开发一个简单的PHP应用程序。我用一个简单的断言创建了我的第一个单元测试DogTest.php,但是它抱怨找不到Dog类。 我在根目录中创建了一个Dog.php文件,并将其放在/src下,但两者都不起作用。我认为这要么是名称空间问题,要么是自动加载问题,但是Codeception文档(以及我看过的各种TDD指南)缺少这个重要的细节。 有人能告诉我如何让我的狗测试来检测狗类吗

  • 环境Chrome:版本39.0.2171.95 Chrome Driver:2.13(最新)Selenium WebDriver

  • 我使用selenium IDE 1.9.0记录测试。请告诉我什么地方没有错,以及如何解决问题。 以下是我记录测试的步骤。1.我使用用户名和密码登录网站。2.我导航到搜索成员页面,输入成员的姓名,单击名称链接。系统将引导我进入成员配置文件页面。 脚本停在这一行: 我第一次玩脚本时,它运行没有任何错误。在运行该脚本8小时后,它提示我以下错误: 我使用调试函数来查看出了什么问题。以下是调试窗格中显示的消

  • 好的,我正在制作一个项目,该项目将使用我的localhost从应用程序中测试出用户名和密码。我收到了AndroidM的错误消息anifest.xml.它说: 错误:找到未知元素[用户权限]。找到未知元素[用户权限]。 错误:java.util.concurrent.执行异常:java.util.concurrent.执行异常:com.android.tools.aapt2. Aapt2Except

  • 我正在android模拟器中运行我的flutter项目。我正面临以下错误。附屏幕截图。 但是,我可以在相应的文件路径中看到< code>AndroidManifest.xml文件。

  • 问题内容: 我收到以下错误: 这是我的persistence.xml文件: 这是我的persistenceLayer.xml: persistence.xml位于src / META-INF中,该文件位于构建路径中,因此应正确找到它。谁有想法? 问题答案: 好吧,我通常将persistence.xml放在资源文件夹/src/main/resouces/META- INF/persistence.x