卡在Xamarin AAPT错误上

6

我刚在Windows 8上安装了Xamarin Studio,创建了一个C# Android项目,并尝试编译它,但没有成功。

我遇到的错误是在AAPT工具上,但即使使用msbuild的详细输出,我在输出窗口中只得到以下内容:

Task "Aapt"
Aapt Task
  AssetDirectory: 
  ManifestFile: C:\Users\Giuseppe\AppData\Local\Temp\i4va1gur.y4b\AndroidManifest.xml
  ResourceDirectory: obj\Debug\res\
  JavaDesignerOutputDirectory: C:\Users\Giuseppe\AppData\Local\Temp\i4va1gur.y4b
  PackageName: AndroidLocationLogger.AndroidLocationLogger
  UncompressedFileExtensions: 
  ExtraPackages: 
  AdditionalResourceDirectories: 
  LibraryProjectJarsWildcard: obj\Debug\__library_projects__\*.jar
  ExtraArgs: 
C:\Users\Giuseppe\AppData\Local\Android\android-sdk\platform-tools\aapt.exe package -f -m -M C:\Users\Giuseppe\AppData\Local\Temp\i4va1gur.y4b\AndroidManifest.xml -J C:\Users\Giuseppe\AppData\Local\Temp\i4va1gur.y4b --custom-package androidlocationlogger.androidlocationlogger -F C:\Users\Giuseppe\AppData\Local\Temp\i4va1gur.y4b\resources.apk.bk -S obj\Debug\res -I C:\Users\Giuseppe\AppData\Local\Android\android-sdk\platforms\android-8\android.jar --auto-add-overlay 
C:\Program Files\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(707,2): error MSB6006: "aapt.exe" exited with code -1073741816.
Done executing task "Aapt" -- FAILED.
Done building target "_UpdateAndroidResgen" in project "AndroidLocationLogger.csproj" -- FAILED.

鉴于它给我的数据很少,我真的不知道如何调试这个问题...

10个回答

12

这种错误主要是由于项目中文件的名称引起的,首先检查这些文件的名称。同时,注意文件名是否包含符号和空格,只需将它们更正即可避免此类错误。


这是图像名称中的祝福连字符。谢谢你! - Mark Larter
我的布局文件名字里有一个空格 "xxx .xml"! - Stephane Mathis
这个答案对我有用。我的一个图片文件名中有一个德语的ä。 - user1725145
1
我并没有一个无效的字符,而是有一个名为values-21的文件夹,而不是values-v21(在21之前缺少了“v”)。这应该被标记为答案。 - user4275029
我创建了一个新项目,但是出现了这个错误。一个新项目怎么可能会有这样的错误呢? - Milad Faridnia

2

增加的资源文件(图片、声音等)应只包含[a-z0-9_.],即不允许使用特殊字符,除了“_”和“.”,否则你会得到这个错误:"aapt.exe" exited with code 1. (MSB6006)"


2
根据我的经验,通常是由于资源出现问题(换句话说,就是添加到项目资源文件夹下的某些内容,通常在Drawable或Layout文件夹中)导致的。如果您进入Resource.Designer.cs文件,可能会提供一些关于项目问题的线索。
一种可能的解决方法是移除您添加到项目中的任何附加文件,然后尝试重新构建它。
另一种可能有效的方法是清理项目Build-> Clean Solution,然后重新构建解决方案。
如果您刚刚开始,也许您可以启动一个新项目,然后从这个损坏的项目中打开文件并复制它们,或者只复制代码部分,并逐步建立项目,以便诊断哪个文件有错误。
请告诉我这对您是否有用,
此致
敬礼,
詹姆斯。

嗨,我正在从头开始创建一个项目,直接进行编译,没有新文件或任何东西。资源目录未更改! - Giuseppe Maggiore

2
这种错误也可能发生在你安装了Android构建工具,而Xamarin不支持的情况下。默认情况下,Xamarin.Android项目会优先选择最新版本的Android构建工具。我安装了24.0.0-preview版本,但它不被支持。 你可以通过在.csproj文件中添加AndroidSdkBuildToolsVersion属性来手动提供构建工具版本。 参见:Xamarin.Android构建过程

1
如果您正在使用.resx文件进行本地化,请确保将它们的“生成操作”设置为“嵌入式资源”。

1
我已经能够通过删除布局目录中存在的错误的android.axml文件来解决这个问题。如果你复制一个文件并且不重命名该文件,它可能存在无效的文件字符,在构建过程中会引起问题...
例如:"myLayout(copy).axml"。
请确保正确地重命名您的布局文件,并/或从项目中删除它们并重新构建。

0

我曾经遇到过两种情况导致此错误。

1)如果文件名中有不良字符,至少appt会在诊断输出中报告错误。(build->log输出=诊断)

2)如果您的布局文件或菜单文件引用了拼写错误或缺失的资源。这需要一些搜索。这是没有诊断的appt错误。

基本上,任何以axml格式的资源文件都可以引用drawable、string、color、menu、menu selector等。逐个打开每个文件,直到找到您引用但资源文件夹中不存在的内容。


0
对我而言,导致 "aapt.exe" 出现错误代码的原因是资源文件名中的 @ 符号。更改了资源文件名后,该错误得以解决。

这是对所发布问题的可能解决方案,我编辑了我的问题并进一步澄清。 - fire in the hole

0
将文件属性设置为Android资产即可解决问题。

我做了相反的事情,它起作用了。将属性从Android资产更改为无。 - Afshin Ghazi

-1
如果您的9 patch图案做错了,您将会遇到这个错误。我必须在我的图像的四个边上标记可扩展的补丁,以使错误消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接