aapt.exe已停止工作。

10

我最近把我的工作环境转移到了另一台工作站,然后出现了“aapt.exe已停止工作”的错误。

我已经阅读了一些答案,尝试取消“自动构建”,更新我的SDK,或将Android Build输出设置为Normal,然后崩溃就会停止,但是都没有效果。我还删除了我的工作区的.metadata文件,并将Eclipse的首选项恢复为默认值。我从另一台工作站复制了aapt.exe并替换了我的文件,然后这个日志出现了:

        [2013-05-21 14:36:42 - example] ERROR: Unknown option '--output-text-symbols'
[2013-05-21 14:36:42 - example] Android Asset Packaging Tool
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example] Usage:
[2013-05-21 14:36:42 - example]  aapt l[ist] [-v] [-a] file.{zip,jar,apk}
[2013-05-21 14:36:42 - example]    List contents of Zip-compatible archive.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
[2013-05-21 14:36:42 - example]    badging          Print the label and icon for the app declared in APK.
[2013-05-21 14:36:42 - example]    permissions      Print the permissions from the APK.
[2013-05-21 14:36:42 - example]    resources        Print the resource table from the APK.
[2013-05-21 14:36:42 - example]    configurations   Print the configurations in the APK.
[2013-05-21 14:36:42 - example]    xmltree          Print the compiled xmls in the given assets.
[2013-05-21 14:36:42 - example]    xmlstrings       Print the strings of the given compiled xml assets.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
[2013-05-21 14:36:42 - example]         [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
[2013-05-21 14:36:42 - example]         [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
[2013-05-21 14:36:42 - example]         [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
[2013-05-21 14:36:42 - example]         [--rename-manifest-package PACKAGE] \
[2013-05-21 14:36:42 - example]         [--rename-instrumentation-target-package PACKAGE] \
[2013-05-21 14:36:42 - example]         [--utf16] [--auto-add-overlay] \
[2013-05-21 14:36:42 - example]         [--max-res-version VAL] \
[2013-05-21 14:36:42 - example]         [-I base-package [-I base-package ...]] \
[2013-05-21 14:36:42 - example]         [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \
[2013-05-21 14:36:42 - example]         [-S resource-sources [-S resource-sources ...]] \
[2013-05-21 14:36:42 - example]         [-F apk-file] [-J R-file-dir] \
[2013-05-21 14:36:42 - example]         [--product product1,product2,...] \
[2013-05-21 14:36:42 - example]         [-c CONFIGS] [--preferred-configurations CONFIGS] \
[2013-05-21 14:36:42 - example]         [-o] \
[2013-05-21 14:36:42 - example]         [raw-files-dir [raw-files-dir] ...]
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]    Package the android resources.  It will read assets and resources that are
[2013-05-21 14:36:42 - example]    supplied with the -M -A -S or raw-files-dir arguments.  The -J -P -F and -R
[2013-05-21 14:36:42 - example]    options control which files are output.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
[2013-05-21 14:36:42 - example]    Delete specified files from Zip-compatible archive.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
[2013-05-21 14:36:42 - example]    Add specified files to Zip-compatible archive.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt c[runch] [-v] -S resource-sources ... -C output-folder ...
[2013-05-21 14:36:42 - example]    Do PNG preprocessing and store the results in output folder.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  aapt v[ersion]
[2013-05-21 14:36:42 - example]    Print program version.
[2013-05-21 14:36:42 - example] 
[2013-05-21 14:36:42 - example]  Modifiers:
[2013-05-21 14:36:42 - example]    -a  print Android-specific data (resources, manifest) when listing
[2013-05-21 14:36:42 - example]    -c  specify which configurations to include.  The default is all
[2013-05-21 14:36:42 - example]        configurations.  The value of the parameter should be a comma
[2013-05-21 14:36:42 - example]        separated list of configuration values.  Locales should be specified
[2013-05-21 14:36:42 - example]        as either a language or language-region pair.  Some examples:
[2013-05-21 14:36:42 - example]             en
[2013-05-21 14:36:42 - example]             port,en
[2013-05-21 14:36:42 - example]             port,land,en_US
[2013-05-21 14:36:42 - example]        If you put the special locale, zz_ZZ on the list, it will perform
[2013-05-21 14:36:42 - example]        pseudolocalization on the default locale, modifying all of the
[2013-05-21 14:36:42 - example]        strings so you can look for strings that missed the
[2013-05-21 14:36:42 - example]        internationalization process.  For example:
[2013-05-21 14:36:42 - example]             port,land,zz_ZZ
[2013-05-21 14:36:42 - example]    -d  one or more device assets to include, separated by commas
[2013-05-21 14:36:42 - example]    -f  force overwrite of existing files
[2013-05-21 14:36:42 - example]    -g  specify a pixel tolerance to force images to grayscale, default 0
[2013-05-21 14:36:42 - example]    -j  specify a jar or zip file containing classes to include
[2013-05-21 14:36:42 - example]    -k  junk path of file(s) added
[2013-05-21 14:36:42 - example]    -m  make package directories under location specified by -J
[2013-05-21 14:36:42 - example]    -o  create overlay package (ie only resources; expects <overlay-package> in manifest)
[2013-05-21 14:36:42 - example]    -u  update existing packages (add new, replace older, remove deleted files)
[2013-05-21 14:36:42 - example]    -v  verbose output
[2013-05-21 14:36:42 - example]    -x  create extending (non-application) resource IDs
[2013-05-21 14:36:42 - example]    -z  require localization of resource attributes marked with
[2013-05-21 14:36:42 - example]        localization="suggested"
[2013-05-21 14:36:42 - example]    -A  additional directory in which to find raw asset files
[2013-05-21 14:36:42 - example]    -G  A file to output proguard options into.
[2013-05-21 14:36:42 - example]    -F  specify the apk file to output
[2013-05-21 14:36:42 - example]    -I  add an existing package to base include set
[2013-05-21 14:36:42 - example]    -J  specify where to output R.java resource constant definitions
[2013-05-21 14:36:42 - example]    -M  specify full path to AndroidManifest.xml to include in zip
[2013-05-21 14:36:42 - example]    -P  specify where to output public resource definitions
[2013-05-21 14:36:42 - example]    -S  directory in which to find resources.  Multiple directories will be scanned
[2013-05-21 14:36:42 - example]        and the first match found (left to right) will take precedence.
[2013-05-21 14:36:42 - example]    -0  specifies an additional extension for which such files will not
[2013-05-21 14:36:42 - example]        be stored compressed in the .apk.  An empty string means to not
[2013-05-21 14:36:42 - example]        compress any files at all.
[2013-05-21 14:36:42 - example]    --debug-mode
[2013-05-21 14:36:42 - example]        inserts android:debuggable="true" in to the application node of the
[2013-05-21 14:36:42 - example]        manifest, making the application debuggable even on production devices.
[2013-05-21 14:36:42 - example]    --min-sdk-version
[2013-05-21 14:36:42 - example]        inserts android:minSdkVersion in to manifest.  If the version is 7 or
[2013-05-21 14:36:42 - example]        higher, the default encoding for resources will be in UTF-8.
[2013-05-21 14:36:42 - example]    --target-sdk-version
[2013-05-21 14:36:42 - example]        inserts android:targetSdkVersion in to manifest.
[2013-05-21 14:36:42 - example]    --max-res-version
[2013-05-21 14:36:42 - example]        ignores versioned resource directories above the given value.
[2013-05-21 14:36:42 - example]    --values
[2013-05-21 14:36:42 - example]        when used with "dump resources" also includes resource values.
[2013-05-21 14:36:42 - example]    --version-code
[2013-05-21 14:36:42 - example]        inserts android:versionCode in to manifest.
[2013-05-21 14:36:42 - example]    --version-name
[2013-05-21 14:36:42 - example]        inserts android:versionName in to manifest.
[2013-05-21 14:36:42 - example]    --custom-package
[2013-05-21 14:36:42 - example]        generates R.java into a different package.
[2013-05-21 14:36:42 - example]    --extra-packages
[2013-05-21 14:36:42 - example]        generate R.java for libraries. Separate libraries with ':'.
[2013-05-21 14:36:42 - example]    --generate-dependencies
[2013-05-21 14:36:42 - example]        generate dependency files in the same directories for R.java and resource package
[2013-05-21 14:36:42 - example]    --auto-add-overlay
[2013-05-21 14:36:42 - example]        Automatically add resources that are only in overlays.
[2013-05-21 14:36:42 - example]    --preferred-configurations
[2013-05-21 14:36:42 - example]        Like the -c option for filtering out unneeded configurations, but
[2013-05-21 14:36:42 - example]        only expresses a preference.  If there is no resource available with
[2013-05-21 14:36:42 - example]        the preferred configuration then it will not be stripped.
[2013-05-21 14:36:42 - example]    --rename-manifest-package
[2013-05-21 14:36:42 - example]        Rewrite the manifest so that its package name is the package name
[2013-05-21 14:36:42 - example]        given here.  Relative class names (for example .Foo) will be
[2013-05-21 14:36:42 - example]        changed to absolute names with the old package so that the code
[2013-05-21 14:36:42 - example]        does not need to change.
[2013-05-21 14:36:42 - example]    --rename-instrumentation-target-package
[2013-05-21 14:36:42 - example]        Rewrite the manifest so that all of its instrumentation
[2013-05-21 14:36:42 - example]        components target the given package.  Useful when used in
[2013-05-21 14:36:42 - example]        conjunction with --rename-manifest-package to fix tests against
[2013-05-21 14:36:42 - example]        a package that has been renamed.
[2013-05-21 14:36:42 - example]    --product
[2013-05-21 14:36:42 - example]        Specifies which variant to choose for strings that have
[2013-05-21 14:36:42 - example]        product variants
[2013-05-21 14:36:42 - example]    --utf16
[2013-05-21 14:36:42 - example]        changes default encoding for resources to UTF-16.  Only useful when API
[2013-05-21 14:36:42 - example]        level is set to 7 or higher where the default encoding is UTF-8.
[2013-05-21 14:36:42 - example]    --non-constant-id
[2013-05-21 14:36:42 - example]        Make the resources ID non constant. This is required to make an R java class
[2013-05-21 14:36:42 - example]        that does not contain the final value but is used to make reusable compiled
[2013-05-21 14:36:42 - example]        libraries that need to access resources.
[2013-05-21 14:36:42 - example]    --ignore-assets
[2013-05-21 14:36:42 - example]        Assets to be ignored. Default pattern is:
[2013-05-21 14:36:42 - example]        !.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~

基本上,我的项目的src文件有关于R的错误,因为aapt.exe崩溃并且无法生成R,参考此链接


你的项目中是否有一个build.xml或其他项目文件,试图将参数“--output-text-symbols”传递给aapt调用?这是阻碍你前进的具体问题。也许你在另一台工作站上使用的是允许此操作的aapt版本,但你现在使用的工作站上的版本不支持它。 - john.k.doe
因为我最初创建这个项目时使用的是Eclipse Indigo,所以一切工作正常。但是当我使用Eclipse Juno导入它后,出现了这个问题。我所做的是将我的Eclipse还原为Indigo版本,以使该项目设置正常工作。 - Compaq LE2202x
9个回答

22

将样式中的id移除,例如@+id,然后重新构建即可成功...

<item name="android:id">@+id/calender</item>

8
对我来说,这在菜单里。 - DeltaCap019

5
当您定义一个不存在的字符串或任何资源,并且aapt.exe无法检测到该资源的不可用性时,就会发生这种情况。
例如:
<item
        android:id="@+id/action_reply"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:icon="@drawable/ic_action_reply"
        android:title="@string/action_reply"/>

在strings.xml中未定义字符串action_reply,ADT无法检测到,并且aapt.exe停止工作。


3
对于我而言,问题出在一个菜单的xml文件中。我只需将id替换为+id,更改为:
<item
    android:id="@id/item_reset"
    android:title="Reset"
    android:showAsAction="ifRoom"/>

to

<item
    android:id="@+id/item_reset"
    android:title="Reset"
    android:showAsAction="ifRoom"/>

1

当我在操作栏中添加图标时,出现了这个错误。

我通过添加 .png 格式的图片来解决了这个问题,而不是使用 .jpg 格式。


0

对我来说,问题出在这样的事情上:

android:title="@android:string/chat"

我改为这样:

android:title="@string/chat"

0

这可能是由于您的 R.menu.your_layout.xml 中出现了一些错误。


0
我通过从可绘制资源中删除一张高清图片来解决了这个问题。

0

它可以是在其他布局中使用的字符串,而您已将其删除。


0
我之前遇到了"aapt.exe因为/res/values文件夹中存储的.xml文件中的HTML代码未转义特殊字符而停止工作"的问题。
因此,请尝试对您的字符串转义特殊字符(例如将@转换为\@,将"转换为\"等)。

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