4

我维护一个 Android 应用程序并且没有使用 Eclipse。我没有使用 Eclipse。我正在使用ant和。build.xmlbuild.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 中?

编辑:理论上这个答案应该有效,但它不适合我。是不是已经过时了?是什么赋予了?如何从命令行将外部 jar 库添加到 android 项目

4

5 回答 5

4

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

于 2012-04-04T05:42:17.787 回答
1

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

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

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

于 2011-07-30T21:56:44.697 回答
0

解决方案:

  1. 右键单击项目树中的项目并选择项目属性
  2. 选择 Java 构建路径
  3. 选择 TAB 顺序和导出
  4. 检查 GoogleAdMobAdsSdk-4.0.4.jar(或您的版本 SDK)
  5. 按确定
  6. 通过菜单 Project -> Clean 清理项目
  7. 重建项目(项目 - 自动构建)
于 2012-03-28T12:43:35.703 回答
0

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

于 2011-08-01T07:25:36.750 回答
0

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

只要放进去libs/就够了。

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

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

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

于 2011-07-23T15:47:15.043 回答