我正在尝试使用命令行模式下的ant构建我的android项目。 它适用于eclipse,它曾经与ant一起工作,直到我安装了最新的android sdk。
我跑ant release -buildfile projectdir\build.xml
。编译过程没问题,在对齐apk后,它在运行时失败了ClassDefNotFoundError acra.ACRA
。
我试图从项目中删除对acra的任何引用,但是在尝试执行来自库jar的任何代码时它将在运行时失败。
我的jar位于项目根目录的libs
文件夹中。我有点理解这会导致ant将它们链接到apk中。但事实并非如此。
当我使用以前版本的android sdk时,我有一个名为build.properties
的文件,其中的属性引用了jars文件夹external.libs.dir=libs
。但是现在我不能让它继续工作,即使我使用新属性名jar.libs.dir=libs
和新属性文件名ant.properties
。
我读到引发ClassDefNotFoundError是因为在编译时发现了librairies,但它们没有链接到apk,所以在运行时找不到它们。 我怎样才能链接apk中的外部罐子?
答案 0 :(得分:2)
编译过程没问题,在对齐apk后,它在运行时因ClassDefNotFoundError而失败acra.ACRA
ACRA中没有acra.ACRA
类,至少在当前版本中没有。它是org.acra.ACRA
。
我的jar位于项目根目录的libs文件夹中。我有点理解这会导致ant将它们链接到apk中。但事实并非如此。
是的,确实如此。然后ProGuard将其删除,unless you teach ProGuard not to。