【问题标题】:Why does the Android SDK need a JDK?为什么 Android SDK 需要 JDK?
【发布时间】:2013-08-28 13:58:41
【问题描述】:

我试图理解为什么 Android SDK 需要 JDK。

  • Android SDK 不应该包含它需要的所有 JDK Java 类(可能存在实现差异)?
  • JDK 中包含的所有工具都需要它吗?
  • 我们在构建 .dex 和 .apk 文件时是否使用 JDK?
  • Android Java 类必须使用 Java 5 或 6 编译器编写是什么意思?

谢谢

【问题讨论】:

    标签: android compilation java


    【解决方案1】:

    典型构建的一般过程概述如下:

    • Android 资产打包工具 (aapt) 获取您的应用程序 资源文件,例如 AndroidManifest.xml 文件和 XML 您的活动的文件,并编译它们。 R.java 也是 生成,以便您可以从 Java 代码中引用您的资源。
    • aidl 工具将您拥有的任何 .aidl 接口转换为 Java 接口。
    • 您的所有 Java 代码,包括 R.java 和 .aidl 文件,都是 由 Java 编译器 编译并输出 .class 文件。
    • dex 工具将 .class 文件转换为 Dalvik 字节码。任意第三 您已包含在您的派对库和 .class 文件中 项目也被转换成 .dex 文件,以便它们可以 打包到最终的 .apk 文件中。
    • 所有非编译资源(如图像)、编译资源和 .dex 文件被发送到 apkbuilder 工具以打包成一个 .apk 文件。
    • 构建 .apk 后,必须使用调试或 在将其安装到设备之前释放密钥。
    • 最后,如果应用程序在发布模式下签名,您必须 将 .apk 与 zipalign 工具对齐。对齐最终的 .apk 当应用程序在设备上运行时减少内存使用量。

    More referance here..

    【讨论】:

    • NDK 怎么样?
    【解决方案2】:

    Android SDK 使用 JDK 将您的 .java 文件编译为 .class 字节码。

    【讨论】:

    • 也就是说 .dex 文件是由 .class 文件组成的?
    • 我很确定 Android SDK 包含“ecj.jar”或 Eclipse Java Compiler jar,所以我认为它不需要单独的 java 5/6 兼容编译器。
    【解决方案3】:

    当您构建项目时,所有 .java 文件都会转换为 .class。您需要 JDK。

    现在adk的dx工具将所有的.class文件转换成classes.dex文件,这个classes.dex文件在dalvik虚拟机上执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-02
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多