为什么Android SDK需要JDK?

5
我正在努力理解为什么Android SDK需要JDK。
  • Android SDK不应该拥有所有它需要的JDK Java类(具有潜在的实现差异)吗?
  • 它是否需要JDK中包含的所有工具?
  • 我们在构建.dex和.apk文件时使用JDK吗?
  • 说Android Java类必须使用Java 5或6编译器兼容性是什么意思?
谢谢。
3个回答

8

ANdoBuild

下面是一般构建过程的概述:

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

From here


NDK怎么样? - Yousha Aleayoub

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

这意味着 .dex 文件是由 .class 文件生成的吗? - JeromePApp
我非常确定Android SDK包含了"ecj.jar"或Eclipse Java编译器jar,所以我认为它不需要单独的Java 5/6兼容编译器。 - Harshiv

0

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

现在,ADK的dx工具将所有的.class文件转换为classes.dex文件。而这个classes.dex文件是在Dalvik虚拟机上执行的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接