【问题标题】:Can Android use standard built JAR files?Android 可以使用标准构建的 JAR 文件吗?
【发布时间】:2010-11-16 08:45:12
【问题描述】:

我很确定答案是否定的,但我使用的是新的 IntelliJ EAP 版本,并且有一个我在不久前从事过的项目,该项目是针对 JDK 1.6 编写的,用于基于小程序的应用程序。

但是现在我可以看到它在我有兴趣创建的 android 应用程序中是如何有用的。

我现在是否必须再次针对 android sdk 重新编写所有代码/测试,或者我可以直接放入现有的 JAR 文件并仅将 android 用于 UI 层。

它只是 android 似乎使测试变得比它需要的更难,而且我已经编写了很多现有的测试并且正在运行,如果仅仅编写一个快速的单元测试(标准 Junit @Test 风格)不是那么难,我不会介意移植,但是我只是没有得到整个仪器的东西,因为我现在不需要 UI...

言归正传,我可以在 android 应用程序中使用我现有的 JDK 构建代码吗?

【问题讨论】:

    标签: android unit-testing java


    【解决方案1】:

    不!

    Android 使用来自 project Harmony 的“Dalvik”VM,它使用一组不同的字节码,这些字节码与标准 Java JVM 字节码不兼容。

    这样做是为了优化 VM 以在移动平台上运行,并且可能更重要的是试图避免与 Sun 和现在的 Oracle 的版权和专利纠纷。

    更多信息here

    但是有一个名为“dx”的工具可以在开发环境中执行转换。

    【讨论】:

    • 想了很多...我只是希望有一种更简单的方法可以在测试驱动的方法中为 android 开发,因为目前纯粹的单元测试似乎几乎是不可能的。 ..
    【解决方案2】:

    好的,让我解开你的困惑。

    在编译过程中,jar 被转换为 dex Dalvik 字节码,因此您可以使用第 3 方 jar 库。

    但是,在您的情况下,因为它的小程序具有不同的应用程序生命周期,是的,您可能必须重新执行它才能使其在 android 中工作。

    就所有 java 移动开发甚至 JavaMe 都使用测试工具而言。这基本上意味着 Junit 测试在模拟器或设备中运行,但在 android 的情况下,您使用 android mock objects 来测试 android 特定的东西。

    【讨论】:

    • 我不会使用小程序部分,我只会使用小程序使用的库 (JAR) 中的功能。
    • 是的,但小程序部分可能无法编译,因为它依赖于 android 不使用的 javaSe 部分。
    • 对不起,我认为我很困惑,可能还有 2 个单独的 JAR 文件。一个包含标准的 Java 代码/对象,它基本上都是简单的模型和逻辑。然后有另一个 JAR 使用这个并作为小程序打开。据我所知,我只想接管第一个 JAR,Android 支持该代码中使用的所有内容,它只是在 JDK 1.6 JAR 中......无论哪种方式,我仍然认为答案是否定的......
    猜你喜欢
    • 2013-10-04
    • 2012-01-10
    • 2013-08-20
    • 2013-08-13
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多