我的问题是,我可能会在Eclipse上整个晚上进行编程、编译和使用我的设备,然后突然出现“执行aapt错误”的当前项目错误,当然R.java也不能(正确)生成了。然后我重新启动Eclipse,一切都消失了。然而,我平均每天都会看到这个问题。
我最近切换到了amd64,并安装了最新的Android-2.3 SDK和匹配的工具。我知道现在有一个platform-tools文件夹,其中包含一个aapt版本,应该可以独立于SDK版本工作。起初,我按照SDK网站的指示将此目录添加到了我的PATH中。我还尝试过不将其添加到我的路径中,并创建一个链接platforms/android-9/tools,以便每个SDK版本都可以使用自己的旧副本。不用说,platform-tools/aapt在那里并且有正确的权限,我随时都能在命令行上执行它。
当我写一个有错误的xml文件或其他类型的文件时,适当地得到一个错误提示。我会看到一行额外的内容,上面写着"aapt: /lib32/libz.so.1: no version information available"。我正在运行最近的gentoo linux系统。我已经安装了所有支持x86在amd64上的东西,但还是重新安装了emul-linux-x86-baselibs和zlib以确保。问题仍然存在。我看到一些页面上对一些zlib bug的恐惧描述,但我不确定是否相关。我意识到我不在参考Ubuntu平台上,但肯定差异不会那么大吧?
这很可能是aapt或工具本身的bug。为什么它突然停止工作呢?我也遇到了R.java中的id错误,即简单的findViewById()代码会因为混合的id而导致ClassCastExceptions,一旦失败的aapt后,只需要进行"clean project"就可以完美地工作。
最后,我运行了一些关于aapt的命令,似乎没有添加任何额外的信息:
#ldd aapt
./aapt: /lib32/libz.so.1: no version information available (required by ./aapt)
linux-gate.so.1 => (0xffffe000)
librt.so.1 => /lib32/librt.so.1 (0x4f864000)
libpthread.so.0 => /lib32/libpthread.so.0 (0x4f849000)
libz.so.1 => /lib32/libz.so.1 (0xf7707000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/32/libstdc++.so.6 (0x415e9000)
libm.so.6 => /lib32/libm.so.6 (0x4f876000)
libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0x4fac6000)
libc.so.6 => /lib32/libc.so.6 (0x4f5ed000)
/lib/ld-linux.so.2 (0x4f5ca000)
#file aapt
aapt: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
请问我的配置有什么问题吗?是不是出现了错误(如果没有,请重新报告)?
更新于2010-01-06:
我获得了更多的知识。最近我尝试导出签名的apk时,遇到了另一个我以前没有见过的关于aapt的错误信息(来自Eclipse错误视图的完整详细信息)。同样要注意的是,我可以重启Eclipse,然后再次导出apk而没有任何问题,至少可以持续一段时间。
我开始认为这与我系统上的内存不足有关。"onvoldoende geheugen beschikbaar"这个信息意味着"内存不足"。
当我在转储HPROF文件时,在DDMS中也看到了内存不足的错误。
以下是错误日志(简略版):
!ENTRY com.android.ide.eclipse.adt 4 0 2011-01-05 23:11:16.097
!MESSAGE Export Wizard Error
!STACK 1
org.eclipse.core.runtime.CoreException: Failed to export application
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(Unknown Source)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: com.android.ide.eclipse.adt.internal.build.AaptExecException: Error executing aapt. Please check aapt is present at /opt/android-sdk/android-sdk-linux_x86-1.6_r1/platform-tools/aapt
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeAapt(Unknown Source)
at com.android.ide.eclipse.adt.internal.build.BuildHelper.packageResources(Unknown Source)
... 5 more
Caused by: java.io.IOException: Cannot run program "/opt/android-sdk/android-sdk-linux_x86-1.6_r1/platform-tools/aapt": java.io.IOException: error=12, Onvoldoende geheugen beschikbaar
...
Caused by: java.io.IOException: java.io.IOException: error=12, Onvoldoende geheugen beschikbaar
...
!SUBENTRY 1 com.android.ide.eclipse.adt 4 0 2011-01-05 23:11:16.098
!MESSAGE Failed to export application
!STACK 0
com.android.ide.eclipse.adt.internal.build.AaptExecException: Error executing aapt. Please check aapt is present at /opt/android-sdk/android-sdk-linux_x86-1.6_r1/platform-tools/aapt
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeAapt(Unknown Source)
at com.android.ide.eclipse.adt.internal.build.BuildHelper.packageResources(Unknown Source)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(Unknown Source)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(Unknown Source)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.io.IOException: Cannot run program "/opt/android-sdk/android-sdk-linux_x86-1.6_r1/platform-tools/aapt": java.io.IOException: error=12, Onvoldoende geheugen beschikbaar
...
Caused by: java.io.IOException: java.io.IOException: error=12, Onvoldoende geheugen beschikbaar
CFLAGS=-m32 ./configure
зј–иҜ‘е’Ңе®үиЈ…е®ғпјҢ然еҗҺдҪҝз”Ёsudo make install
гҖӮеңЁsudo ldconfig
д№ӢеҗҺпјҢaapt
еҒңжӯўжҠұжҖЁгҖӮ - trojanfoe