2013-08-28 72 views
5

我想了解爲什麼Android SDK需要JDK。爲什麼Android SDK需要JDK?

  • Android SDK不應該擁有它需要的所有JDK Java類(可能存在實現差異)?
  • 是否需要它包含在JDK中的所有工具?
  • 當我們構建.dex & .apk文件時,我們是否使用JDK?
  • 這意味着Android Java類必須使用Java 5或6編譯器遵從性編寫?

感謝

回答

7

ANdoBuild

一個典型的構建的一般過程概述如下:

  • 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..

1

Android的SDK使用JDK你.java文件編譯成字節碼.class

+0

因此,這意味着一個.DEX文件從.class文件製成? – JeromePApp

+0

我很確定Android SDK包含「ecj。jar「或Eclipse Java Compiler jar,所以我認爲它不需要單獨的java 5/6兼容編譯器。 – Harshiv

0

當您構建項目時,所有.java文件都轉換爲.class。您需要JDK。

現在adk的dx工具將所有的.class文件轉換爲classes.dex文件,並且這個classes.dex文件在dalvik虛擬機上執行。