如何在没有Eclipse的APK中包含JAR?

时间:2011-07-23 15:37:10

标签: android ant jar admob build.xml

我维护一个Android应用程序而不使用Eclipse。我没有使用Eclipse。我使用的是antbuild.xml以及build.properties

我将.jar文件放入libs /目录。我的代码编译只是花花公子。但是当我在模拟器上运行它时,输出APK不包含.jar,所以我得到一个运行时堆栈跟踪:

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

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

jar.libs.dir=libs

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

build.xml中需要什么才能将外部.jar文件包含在APK中?

编辑:理论上这个答案应该有效,但它不适合我。它已经过时了吗?是什么赋予了? How to add external jar libraries to an android project from the command line

5 个答案:

答案 0 :(得分:4)

我刚刚遇到了类似的问题,并注意到库不应放在“myprojectdir \ lib”中。当我把它们移到“myprojectdir \ libs”时,一切都开始起作用了。

答案 1 :(得分:1)

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

  

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

我用Google搜索,发现我需要升级Ant,现在我没有收到此警告,我的应用程序也没有强行关闭。

答案 2 :(得分:0)

  

build.xml中需要什么才能将外部.jar文件包含在APK?

只需将其放入libs/即可。

  

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

这条线不应该是必要的。它没有出现在使用JAR文件成功构建的build.properties文件中。

如果您使用项目的dexdump -f classes.dex目录中的bin/,则可以确定com.google.ads.AdView是否在其中。如果没有,那么构建脚本就会有些奇怪。如果确实如此,那么也许你缺少一个依赖的JAR(虽然在这种情况下我会期望VerifyError。)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

解决方案:

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