Android Studio 3.0 清单错误:未知元素 <action>成立 [英] Android Studio 3.0 Manifest Error: unknown element <action> found
问题描述
注意:请不要将此"android.enableAapt2=false"作为答案发布.它不是解决方案.它只是忽略了在运行时不会引起任何问题的真正错误.
解决方案很简单,只是删除了错误放置在清单文件中意图过滤器之外的动作标签.
有一个由 Android Studio 2.3 构建的应用程序.更新 Android Studio 3.0 Stable 后,开始出现此错误并且无法构建我的项目.
这里是我的 manifest.xml
<应用程序android:name=".ApplicationClass"机器人:allowBackup =真"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"机器人:大堆=真"android:supportsRtl="true"android:theme="@style/AppTheme"><!--其他不相关的东西--><action android:name="com.google.android.c2dm.intent.REGISTRATION"/><接收器android:name="com.google.android.gms.gcm.GcmReceiver"机器人:出口=真"android:permission="com.google.android.c2dm.permission.SEND"><意图过滤器><action android:name="com.google.android.c2dm.intent.RECEIVE"/><category android:name="com.xxx.xxx"/></意图过滤器></接收器></应用程序>
错误显示这一行:
如果我注释/删除此操作标记行,项目构建良好,但 GCM
需要它,我无法删除它.
如您所见,错误不在主清单文件中发生,发生在/build/intermediates/manifests/full/debug/AndroidManifest.xml>
尝试清理、重建、禁用即时运行.有什么解决办法吗?
错误日志:
/THE_PROJECT_PATH/app/build/intermediates/manifests/full/debug/AndroidManifest.xml错误:(99) 错误:未知元素<action>成立.错误:(99) 未知元素<action>成立.错误:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2 错误:检查日志以获取详细信息错误:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2 错误:检查日志以获取详细信息错误:com.android.tools.aapt2.Aapt2Exception:AAPT2 错误:检查日志以了解详细信息错误:任务:app:processDebugResources"的执行失败.>执行 aapt 失败信息:BUILD FAILED in 1s信息:6个错误信息:0 条警告信息:查看控制台中的完整输出
你的标签放错了地方.新的 AAPT (AAPT2) 现在会在这方面引发错误.
来自此处的文档:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
<块引用>使用 AAPT2 时的行为变化
为了改进增量资源处理,Android 插件 3.0.0 默认启用 AAPT2.尽管 AAPT2 应该立即适用于较旧的项目,但本节介绍了一些您应该注意的行为更改.
Android 清单中的元素层次结构
在以前版本的 AAPT 中,嵌套在 Android 清单中不正确节点中的元素要么被忽略,要么导致警告.例如,考虑以下示例:
<申请...<activity android:name=".MainActivity"><意图过滤器><action android:name="android.intent.action.MAIN";/><category android:name="android.intent.category.LAUNCHER";/></意图过滤器><action android:name="android.intent.action.CUSTOM";/></活动></应用程序></清单>
以前版本的 AAPT 只会忽略错位的标签.但是,使用 AAPT2 时,您会收到以下错误:
AndroidManifest.xml:15: 错误:未知元素 成立.
要解决此问题,请确保您的清单元素嵌套正确.如需了解详情,请阅读清单文件结构.>
NOTICE: Please do not post this "android.enableAapt2=false" as an answer. It is not a solution. It is just ignoring the real error which is not causing any problem on runtime.
Solution was simple, just removed mistakenly placed action tag outside of an intent filter in the manifest file.
Have an application which was building by Android Studio 2.3 fine. After updating Android Studio 3.0 Stable, started to having this error and unable to build my project.
Here my 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>
Error shows this line:
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
If I comment/remove this action tag line, the project builds fine but it is necessary for GCM
and I cannot remove it.
As you see the logs, The error not occurs at main manifest file, occurs at /build/intermediates/manifests/full/debug/AndroidManifest.xml
Tried cleaning, rebuilding, disabling instant run. Is there any solution?
The Error Logs:
/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
You have a misplaced tag. The new AAPT (AAPT2) now throws an error on this.
From the docs in here: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
Behavior changes when using AAPT2
To improve incremental resource processing, Android plugin 3.0.0 enables AAPT2 by default. Although AAPT2 should immediately work with older projects, this section describes some behavior changes that you should be aware of.
Element hierarchies in the Android manifest
In previous versions of AAPT, elements nested in incorrect nodes in the Android manifest are either ignored or result in a warning. For example, consider the following sample:
<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>
Previous versions of AAPT would simply ignore the misplaced tag. However, with AAPT2, you get the following error:
AndroidManifest.xml:15: error: unknown element <action> found.
To resolve the issue, make sure your manifest elements are nested correctly. For more information, read Manifest file structure.
这篇关于Android Studio 3.0 清单错误:未知元素 <action>成立的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!