我整理了一个相当简单的Mono for Android应用程序,它只是在后台服务中播放"AndroidResource"MP3(复制自Greg Shackles最新的Visual Studio Magazine关于MfA中后台服务的文章).我把代码放在一起,使用我自己的自定义MP3文件,并尝试构建它,只是为了得到这个可爱的错误.
"aapt.exe" exited with code 1
Run Code Online (Sandbox Code Playgroud)
这是错误列表和构建输出日志中的唯一信息.
注意:请不要将此"android.enableAapt2 = false"作为答案发布.这不是一个解决方案.它只是忽略了在运行时没有引起任何问题的真正错误.
解决方案很简单,只是在清单文件中的intent过滤器之外删除了错误放置的操作标记.
有一个由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>
Run Code Online (Sandbox Code Playgroud)
错误显示此行:
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
Run Code Online (Sandbox Code Playgroud)
如果我评论/删除此动作标记行,项目构建正常但是它是必要的GCM,我无法删除它.
当您看到日志时,主清单文件中不会发生错误,发生在/ build/intermediates/manifests/full/debug /AndroidManifest.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 …Run Code Online (Sandbox Code Playgroud) 错误详情
AGPBI: {"kind":"error","text":"error: \u003citem\u003e inner element must either be a resource reference or empty.","sources":[{"file":"...\\app\\src\\main\\res\\values\\ids.xml","position":{"startLine":2,"startColumn":4,"startOffset":57,"endColumn":61,"endOffset":114}}],"original":"","tool":"AAPT"}
:app:mergeDebugResources
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
:app:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details.
Run Code Online (Sandbox Code Playgroud)
资源文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="tv_deviceName" type="id">tv_deviceName</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
建立环境
嗨,我在编译时遇到问题,我收到此错误:
Gradle:任务执行失败':ElectronicComponentInventorySearch:mergeDebugResources'.
java.io.IOException:无法运行程序"/ opt/android-studio/sdk/build-tools/android- 4.2.2/aapt":error = 2,没有这样的文件或目录
当我使用locate时:/opt/android-studio/sdk/build-tools/android-4.2.2/aapt
在我尝试任何事情之前,我确保将整个android-studio目录列入我的帐户,并将所有内容的权限设置为775.
这是怎么回事?
我在使用Gradle和Android Studio时遇到了很多问题.
在项目中的任何资源中进行更改都可以在编译期间随机提供异常,这是我在Android Studio中看到的:
Gradle: Error while executing aapt command
Gradle: Execution failed for task ':App Code:processReleaseResources'.
Run Code Online (Sandbox Code Playgroud)
这就是我看到手动执行Gradle的原因:
"/Applications/Android Studio.app/sdk/tools/templates/gradle/wrapper/gradlew" asD
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
:App Code:preBuild UP-TO-DATE
:App Code:preDebugBuild UP-TO-DATE
:App Code:preReleaseBuild UP-TO-DATE
:libraries:facebook:compileLint
:libraries:facebook:copyReleaseLint UP-TO-DATE
:libraries:facebook:mergeReleaseProguardFiles UP-TO-DATE
:libraries:facebook:packageReleaseAidl UP-TO-DATE
:libraries:facebook:preBuild UP-TO-DATE
:libraries:facebook:preReleaseBuild UP-TO-DATE
:libraries:facebook:prepareReleaseDependencies
:libraries:facebook:compileReleaseAidl UP-TO-DATE
:libraries:facebook:compileReleaseRenderscript UP-TO-DATE
:libraries:facebook:generateReleaseBuildConfig UP-TO-DATE
:libraries:facebook:mergeReleaseAssets UP-TO-DATE
:libraries:facebook:mergeReleaseResources UP-TO-DATE
:libraries:facebook:processReleaseManifest UP-TO-DATE
:libraries:facebook:processReleaseResources UP-TO-DATE
:libraries:facebook:generateReleaseSources …Run Code Online (Sandbox Code Playgroud) 我刚刚更新了ADT,而不是SDK,现在我只在一个项目中遇到了问题,我找不到了
Error executing aapt. Please check aapt is present at /opt/android/platform-tools/aapt
Run Code Online (Sandbox Code Playgroud)
路径是正确的,我检查了两次以上.
-rwxrwxrwx 1 martin martin 3,5M 2010-12-08 10:41 /opt/android/platform-tools/aapt
Run Code Online (Sandbox Code Playgroud)
我可以通过控制台启动aapt,权限是777,我重新启动eclipse,关闭/重新打开项目,重新启动adb,最后我的Ubuntu.
一些想法为什么这可能只发生在一个项目?
经过这么多小时的空闲时间后,我准备将我的第一个应用程序发布到游戏商店,但遗憾的是我在上传已签名的应用程序时遇到了困难.
我已经使用我创建的密钥库(所有这些都通过Eclipse和ADT)成功导出了应用程序,因此我将已签名的APK上传到Play商店(此处).
我一直收到这条消息:
上传失败您的APK无法使用'aapt dump Badging'进行分析.错误输出:无法运行aapt转储标记:W/ResourceType(14856):获取资源号为0x01080049的值时没有已知包错误获取'android:icon'属性:属性不是字符串值
因此:

应用程序本身在真实设备上运行良好,正在使用的图像文件是android-assets-studio网站使用的普通PNG文件.
我在这里搜索了StackOverflow并发现了很多关于它的帖子(这里).我读了很多,并尝试了下一步,但没有任何帮助:
将应用程序图标放在不同的文件夹("drawable","drawable-mdpi",...甚至"drawable-xxxhdpi")中,具有多种组合(从每个文件夹中放入/删除).
在"应用程序"标记和启动器活动标记上设置标签,图标和主题.
更改图像文件名和文件本身(将其替换为默认的应用程序图标).
清理项目.
检查Lint消息.
更新ADT(至22.3.0.v201310242005-887826),Eclipse(至Kepler Service Release 1),SDK工具(至22.3),SDK构建工具(至19.0.1).一切都是最新的官方版本.
检查是否没有使用双jar文件(多个库上不存在jar文件,特别是如果它有不同的版本).
尝试将strings.xml放入"res/values-en"而不是"res/values"
尝试将"android:value"属性添加到清单上的所有元数据标记(由Google建议).它没用.事实上,在我读过的所有教程中,我从来没有从AppWidget看到过这样的要求,所以我认为不需要它.
尝试了aapt命令:
aapt dump badging
Run Code Online (Sandbox Code Playgroud)这向我展示了游戏商店显示的相同内容(我已经用XXX替换了真正的包名和应用名称):
Run Code Online (Sandbox Code Playgroud)application: label='XXX XXX' icon='res/drawable-mdpi/app_icon.png' launchable-activity: name='XXX.XXX.XXXActivity' label='XXX XXX' icon='res/drawable-mdpi/app_icon.png' W/ResourceType( 9132): No known package when getting value for resource number 0 x01080049 ERROR getting 'android:icon' attribute: attribute is not a string value
即使文件存在于此文件夹中,也会发生这种情况.
这是清单.再次,用XXX替换了活动和应用程序的真实路径和名称.我可以向你保证路径是正确的,因为应用程序可以正常运行.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="XXX.XXX"
android:installLocation="auto"
android:versionCode="2"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="19" …Run Code Online (Sandbox Code Playgroud) 我想重写从Android的命名空间,例如布局文件R.layout.popup_menu_item_layout(这是从代码中引用的com.android.internal.R.layout.popup_menu_item_layout).通过说覆盖,我假设xml在项目中声明一个文件,该文件将优先于框架拥有的布局.
请注意,这只是一个示例布局,因此问题涉及sdk/platforms/android-XX/data/res/layout目录中存在的每个布局.
工具:覆盖
有一个未记录的 tools:override标签可用,它会覆盖特定的资源.请参阅此答案以获取示例,该示例将覆盖设计支持库中的值,而不是来自Android框架的值.
应用于tools:override="true"布局的根标签不会生效.
XML布局参考 - refs.xml
正如在描述这个帖子,声明refs.xml文件/values/与以下内容目录:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="layout" name="activity_main">@layout/activity_second</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
将参考activity_second.xml一次activity_main.xml使用.有一个答案建议使用这种技术来替代Snackbar布局.
这也不会生效.
有没有合法的方法来覆盖/替换android包中的布局文件?
当我编译一个Android应用程序时(我尝试使用sdk中的示例应用程序).我收到此错误:
>Error executing aapt: Cannot run program "/home/roel/projects/sdk/build-tools/18.0.1/aapt": >error=2, No such file or directory: error=2, No such file or directory KeyChainDemo >line 1 Android ADT Problem
Run Code Online (Sandbox Code Playgroud)
但是aapt在那个地方?
>[roel@archUSB 18.0.1]$ ls /home/roel/projects/sdk/build-tools/18.0.1/
>NOTICE.txt aidl dx libLLVM.so libbcinfo.so llvm-rs-cc source.properties
>**aapt** dexdump lib libbcc.so libclang.so renderscript
Run Code Online (Sandbox Code Playgroud)
注意:我也得到错误"R无法解决",但我很确定当我解决问题1时,我也解决了这个问题
在工作中,我需要使用maven与Android.
maven使用appt.exe进行自己的编译过程.
自从我升级到ADT 22后,maven说它无法找到这个文件,而且它是正确的 - 文件已从"...\platform-tools"中删除.
我试图卸载并重新安装sdk管理器和ADT,但它没有帮助.
我该怎么做才能解决这个问题?
为什么会消失?
编辑:
目前,我使用了一种解决方法,即将所有旧的"平台工具"文件复制(不替换)到当前文件中.它似乎工作,但也许它可能会导致问题.