【问题标题】:Packaging a jar for Android为 Android 打包一个 jar
【发布时间】:2012-01-27 18:45:04
【问题描述】:

我已经将一些简单的类模块化到他们自己的项目中,以便在其他地方重用。这些类通常只包含字段和访问器方法(即没有特定于 Android 的内容)。

它们稍后使用antjar task 打包并存储在 Maven 存储库中。

在一个 Android 项目中,我已将上述 jar 文件存储到 libs 目录中并添加到构建路径中。然而,在运行模拟器时,我得到一个与我的包相关的“找不到类”异常。其他第三方库(如 GSon)正在被很好地使用。

是否需要任何特定步骤才能使jar 文件与 Android 兼容? (This reply 似乎另有建议)。我该如何进一步调试?

【问题讨论】:

    标签: android jar dependencies


    【解决方案1】:

    没有,只要你不需要,例如javax.* 中不在 Android 中的类。如果我是你,我会考虑使用Android Maven Plugin 来构建你的版本。查看官方示例集合中的 morseflash 示例。它准确地展示了您的场景。

    【讨论】:

      【解决方案2】:

      如果您要重用 Android 组件和资源,您只需要一个 Android 库项目。就您而言,我相信您已将项目添加到构建路径中,但我确信您不会将其作为依赖项目的一部分导出。

      所以打开项目属性,打开 Java Build Path 选项,并确保在 Order and Export 选项卡中选择了您的 JAR 作为导出的依赖项。

      更新

      这是您的条目应显示的内容:

       <classpathentry exported="true" kind="lib" path="libs/tlvince-dao-0.1.0.jar"/>
      

      我还分叉了一个 updated version 你的要点。

      【讨论】:

      • 您能否添加项目的 .classpath 文件的要点以便我们进行调试?
      • 我尝试了使用和不使用exported="true" 仍然无济于事:( 如前所述,GSon,同样的classpathentry 有效,这让我相信那里是 jar 的差异
      【解决方案3】:

      此问题是由于将 jar 编译为 Java 7。Android does not support Java 7(尚未)。

      通过在antjavac task 中设置target="1.6" 来编译成Java 6 字节码解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 2011-05-16
        • 2015-06-17
        • 2011-10-06
        • 2018-07-30
        • 1970-01-01
        相关资源
        最近更新 更多