如何在没有Eclipse的情况下在APK中包含JAR



我维护一个Android应用程序,不使用Eclipse。我没有使用Eclipse。我用的是ant, build.xmlbuild.properties

我已经把.jar文件放到了lib/目录中。我的代码编译得很好。但是当我在模拟器上运行它时,输出APK不包括.jar,所以我得到一个运行时堆栈跟踪:

ERROR/AndroidRuntime(470): java.lang.NoClassDefFoundError: com.google.ads.AdView

我的build.properties看起来像这样:

jar.libs.dir=libs

libs/目录包含我的。jar文件。

build.xml中需要哪些内容才能使外部.jar文件包含在APK中?

编辑:理论上这个答案应该有效,但它不适合我。它过时了吗?到底发生了什么事?如何从命令行

向android项目添加外部jar库

我刚刚遇到了一个类似的问题,并注意到库不应该放在"myprojectdirlib"中。当我将它们移动到"myprojectdirlibs"时,一切都开始工作了。

事实证明,我需要将我使用的ant版本升级到1.8。在编译过程中,我得到了这个错误消息:

警告:引用out.dex.jar.input.ref没有在运行时设置,但在构建文件解析时发现,试图解析。未来Ant版本可能支持在非执行中定义的引用id目标。

我用谷歌搜索了一下,发现我需要升级Ant,现在我没有收到这个警告,我的应用程序也没有强制关闭。

build.xml中需要哪些内容才能使外部.jar文件包含在APK中?

只要把它放在libs/就足够了。

我的构建。属性看起来像这样:

那一行应该是不必要的。它没有出现在我的build.properties文件中,用JAR文件成功构建。

如果您从项目的bin/目录中使用dexdump -f classes.dex,您将能够确定com.google.ads.AdView是否在那里。如果没有,那么您的构建脚本就有问题了。如果是这样,那么可能您缺少了一个依赖的JAR(尽管我希望在这种情况下有一个VerifyError)。

你使用第三方库,但你似乎没有在上面运行DX。确保不仅你的代码是由DX工具处理的(我假设Ant是这样做的),而且你使用的所有第三方库也是如此。你可以看看7Bee脚本,我用它来转换web应用程序到Android davlik格式,所以它也可以为你工作。您可以在Atjeews页面上找到更多关于该脚本的信息。

解决方案:

  1. 右键单击项目树中的项目,选择项目属性
  2. 选择Java Build Path
  3. 选择TAB Order和出口
  4. 检查GoogleAdMobAdsSdk-4.0.4.jar(或您的版本SDK)
  5. 按OK
  6. 按菜单清理项目——>清洁
  7. 重建项目(项目-自动构建)

相关内容

  • 没有找到相关文章

最新更新