2012-03-29 71 views
2

我想在命令行模式下使用ant建立我的android项目。 它与Eclipse一起工作,它用来与蚂蚁一起工作,直到我安装了最新的android sdk。我运行ant release -buildfile projectdir\build.xml。编译过程没问题,在对齐apk之后,它在运行时会失败ClassDefNotFoundError acra.ACRA。 我试图从项目中删除对acra的任何引用,但在尝试执行来自库jar的任何代码时,它在运行时会失败。与蚂蚁建设android项目

我的罐子位于项目根目录下的libs文件夹中。我有点理解这将导致蚂蚁将它们链接到apk。但事实并非如此。

当我使用以前版本的android sdk时,我有一个名为build.properties的文件,它具有引用jars文件夹external.libs.dir=libs的属性。但是现在我无法再继续工作了,即使我使用新的属性名称jar.libs.dir=libs和新的属性文件名称ant.properties

我读到ClassDefNotFoundError是因为在编译时找到了库,但它们没有链接到apk中,所以在运行时无法找到它们。 如何连接APK中的外部罐子?

+0

你的私人build.xml不会引用“jar.libs.ref”吗? – NickT 2012-03-29 21:06:30

+0

不,它没有提到这一点,build.xml是由android工具'android.bat'生成的,而不是由我生成的。 – Joel 2012-03-29 21:09:42

+0

哦,只是一个想法,我想知道如果你仍然有一个旧的r16兼容的build.xml。我恐怕没有任何建议。 – NickT 2012-03-29 21:11:34

回答

2

编译过程是确定的,并对准APK后,它在运行时失败,ClassDefNotFoundError acra.ACRA

没有acra.ACRA类ACRA,至少在当前版本。它是org.acra.ACRA

我的罐子在项目根目录下的libs文件夹中。我有点理解这将导致蚂蚁将它们链接到apk。但事实并非如此。

是的,它的确如此。然后ProGuard将它们移除,unless you teach ProGuard not to

+0

是的,它是org.acra.ACRA,我已经很久以前在proguard.cfg中添加了这些行,但现在它不再工作了,因为我已经安装了最新的android sdk。 – Joel 2012-03-29 21:03:21

+0

你可以在你提供的链接中看到我在说什么,最后的评论正是我所拥有的问题。不幸的是,它没有提供答案。 – Joel 2012-03-29 21:04:50

+1

@Joel:如果你使用的是R17工具,它不再使用'proguard.cfg':http://tools.android.com/recent/proguardimprovements看看调整到新的设置是否有帮助。另外,您可以使用'ant debug'来测试以确认问题与ProGuard相关。 – CommonsWare 2012-03-29 21:07:30