【问题标题】:Java project won't compile to a JAR correctly for AndroidJava 项目不会为 Android 正确编译为 JAR
【发布时间】:2012-07-27 14:00:22
【问题描述】:

在我正在开发的应用程序中,我的 Java 库存在问题 - https://github.com/kennydude/Boid-Twitter-API

当我运行构建 Android 包的 ant android 时,它构建得很好,Eclipse 可以很好地读取 Jar。

但在我的设备上,它说 dalvik 找不到任何类并最终抛出 ClassDef 异常。

我以前用过jar,所以我想知道是不是我的ant文件坏了

【问题讨论】:

  • 不应该 eclipse 为 android 构建一个 apk 而不是一个 jar 吗?
  • android 应用程序从不以任何方式、形状和形式使用 jar。
  • 这是一个图书馆,所以是的。
  • @user827992 你错了,请删除你的误导性评论
  • @Alex 请打开一本书或阅读有关 Android 的文档,谢谢。

标签: java android ant jar


【解决方案1】:

我会在 Eclipse 中打开您的应用程序项目(依赖于运行时未找到的 Java 库的项目)并将 Java 库生成的 jar 文件添加到其构建路径中。然后执行

android -s update project -p .

在与您的应用程序的 Manifest.xml 文件相同的目录中,以便生成 ant 构建文件。

在此之后,您应该能够使用 ant 构建您的应用程序

ant debug

ant release

【讨论】:

  • 我不使用 ant 构建应用程序,只使用库。我使用 Eclipse 作为应用程序,所以我认为 android update project 不会工作
  • 然后将jar文件添加到您的项目构建路径就足够了。
  • 我在我的一个项目中使用了 gson。我只是将 gson jar 文件添加到构建路径中,生成的 apk 按预期工作,并且 gson 正在运行时使用。
  • 哦是的 .. 我的 jar 文件在项目的“libs”目录中。我将它们符号链接到另一个由不同项目共享的位置。可能位置不对?但这应该会给您构建错误,而不是运行时的错误。
  • 位置正确,文件在libs/twitter-android.jar
【解决方案2】:

我通过确保 Ant 编译为 Java 的 1.6 来修复它,这是我在 Eclipse 中应用程序的目标。

【讨论】:

    【解决方案3】:

    也许您没有将 jar 放在 libs 目录而不是 lib 目录中?这是一个类似的问题Java (Android) - class not found exception

    【讨论】:

    • 我过去在 ADT 更改规则时已经遇到过这个问题,但它在正确的目录中
    【解决方案4】:

    首先要为 Android 构建一个带有 ant 的 apk,你必须使用 ant debugant release,我不知道 ant android 做了什么以及为什么要使用它,但这个命令不是Android 的 ant 标准方法,这是肯定的。

    Ant 只是一个构建工具,如果开发者在 ant 中提供了构建解决方案,并不意味着他的应用程序是针对 Android 的。

    在 Android 下,非原生库的所有内容都转换为 DEX 对象,类似于 Dalvik 的字节码,您的应用中没有 jar 或其他容器。

    这个问题可能对你有帮助Adding a library/JAR to an Eclipse Android project

    这个话题有很多概念性错误,你可能想在使用之前研究Android平台。

    【讨论】:

    • 我研究Android平台已经2年多了,所以我很清楚自己在做什么。我知道 Ant 做什么,以及标准的 Android Ant 设置是如何工作的。但是,我正在构建一个 标准 Java 库以在 Android 中使用。
    • @JoeSimpson 这就是答案,我无法写出与现实不同的东西,如果您对此深信不疑,请解释为什么它不起作用。 Dalvik 机器只能理解 DEX 字节码语言,你提供了一个 jar 文件并且你期望它能够工作,你不能认真。我还在 Google I/O 上关注了很多演讲,但我从来没有听说过 Dalvik 从 jar 中读取,我不知道你在学习什么,但它不是 Android。
    • @JoeSimpson 我想帮忙,但你一直在错误的方向上前进,你的应用程序无法正常工作,但你仍然相信,看看这个youtube.com/watch?v=TkPiXRNee7A 如果来自 Android 团队的工程师的谈话并不能说服你我不知道什么可以。
    • 该应用已切换库并且之前可以运行。我的问题是 在 Android 中工作 的 jar 文件。它已在任何地方使用,例如github.com/talklittle/reddit-is-fun 请通过了解我可以做我所追求的来帮助。 Android SDK 可以将 JAR 文件编译成 DEX 字节码。去和 Android 工程师谈谈,他们会告诉你同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多