【问题标题】:Android Eclipse Error executing aapt: return code 139执行 aapt 的 Android Eclipse 错误:返回代码 139
【发布时间】:2012-12-01 16:35:23
【问题描述】:

我有一个 Android 应用程序项目突然停止工作。显然没有错误,但是当我尝试启动时,我得到了这个:

执行 aapt 时出错:返回码 139

我尝试清理项目及其依赖库项目,重新启动 Eclipse,更新到最新的 ADT 和 SDK 版本等,但都失败了。我有时也有这个错误(没有改变任何东西):

生成最终存档时出错:java.io.FileNotFoundException: .../bin/resources.ap_ 不存在

我完全迷路了。

更多信息

我花了几个小时将所有东西一块一块地拆解和重新组装,终于找到了导致这些错误的原因,尽管我仍然没有更好地理解......我有一个这样的资源:

<resources>
<integer-array name="titi">
<item>@+id/toto</item>
</integer-array>
</resources>

我删除了它,一切又恢复了……当然,资源文件根本没有错误。半天白白浪费了,这个 Eclipse 快把我逼疯了 8-/ 只有我一个人吗?

【问题讨论】:

  • 在样式中声明 ID 后出现同样的错误。一定是与 ID 资源相关的东西?
  • 刚刚遇到同样的错误并花了很长时间追踪它。对我来说,问题在于 com.google.android.gms.maps.MapView 和分配给它的 id。给它“mapview”有效,但“map”无效。在该特定布局中的其他任何地方都没有使用 ID,但在其他布局中都使用了这两个 ID。我正在从使用旧的 MapView 类转换为新的类(所有旧实例都是 ID 的“mapview”,我一直在制作新的“map”以跟踪)。这一定是一些奇怪的 ID 冲突错误?
  • 看起来如果我在某个地方没有 ID 为“mapview”的视图,就会发生错误。我提交了一个错误:code.google.com/p/android/issues/detail?id=43100
  • @Patrick 我想你可以将我的答案标记为正确答案。

标签: java android eclipse adt


【解决方案1】:

刚刚遇到同样的问题,问题是我在菜单文件夹中有一个菜单文件,其中有一个 android:title="@string/..",但我的字符串文件中不存在。添加它并执行Project &gt; Clean 后,问题就消失了。

【讨论】:

  • 已确认。我刚刚遇到了同样的崩溃。我在菜单 XML 中使用了“@string/missing_string”。
  • 确实如此。看来我清理了(不需要)自动生成的字符串:strings.xml 中的&lt;string name="action_settings"&gt;Settings&lt;/string&gt;。把它放回去解决了我的问题。
  • 谢谢,遇到了完全相同的问题,而且很难追踪更大的项目!
  • 我有一个非常相似的症状,虽然错误代码已损坏,但果然,我做的最后一件事是添加一个标题指向不存在的字符串的菜单。
  • 在 menu.xml 文件中缺少可绘制资源时遇到了同样的问题。我修复了它,错误消失了!非常感谢您提供这些信息!
【解决方案2】:

不要在这里使用@+id/...

<?xml version="1.0" encoding="utf-8"?>    
<resources>
    <integer-array name="titi">
    <Item>@+id/Toto</item>
    </integer-array>
</resources>

@+id/...只能在布局资源中使用。

如果需要,使用@id/... 并使用帮助资源文件生成 ID: res/values/ids.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="toto" />
</resources>

http://developer.android.com/guide/topics/resources/more-resources.html#Id

【讨论】:

    【解决方案3】:

    我刚刚将一个项目从使用Android v7 appcompat support library 移开并遇到了这个问题。原来我有一堆菜单资源文件,它们仍在使用它们的某些属性的 appcompat 版本。

    我曾经有这个:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:compat="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/conversations_activity_menu_contacts"
            android:title="@string/contacts"
            compat:showAsAction="ifRoom|withText" />
    </menu>
    

    但随后通过将它们更改为以下内容来纠正问题:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/conversations_activity_menu_contacts"
            android:showAsAction="ifRoom|withText"
            android:title="@string/contacts" />
    </menu>
    

    【讨论】:

      【解决方案4】:

      遇到同样的问题,在播放一个小时左右后,该问题被追踪到一个单引号“'”,存在于资源中。删除了报价,错误消失了。

      【讨论】:

        【解决方案5】:

        AAPT 错误有时是由于 eclipse 无法运行的内存不足造成的。请参阅:

        How to diagnose "Error executing aapt" error in Eclipse?

        关于问题的第二部分,请参见:

        Android Packaging Problem: resources.ap_ does not exist

        【讨论】:

        • 我已经看过这些答案,但它们没有帮助。系统有大量可用内存。我还更新到最新的 ADT 和 SDK 版本,但它没有解决错误...
        猜你喜欢
        • 1970-01-01
        • 2015-02-27
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多