android构建过程
?
參考: http://blog.csdn.net/shangmingchao/article/details/47375111
首先,需要了解一下構(gòu)建APK的七大工具:
①aapt
全稱是Android?Asset Packaging Tool,Android資源打包工具。可以將資源文件編譯成二進制文件,還可以查看、創(chuàng)建、更新zip格式的文檔附件(zip、jar、apk)。
②aidl
全稱是Android Interface Definition Language,Android接口定義語言。可以將.aidl文件編譯成.Java文件。
③javac
全稱是Java?Compiler,Java編譯器。可以將Java語言編寫的類和接口定義文件(.java)編譯成字節(jié)碼類文件(.class)。
④dx
全稱是Dalvik Executable,Dalvik虛擬機可執(zhí)行程序。可以將部分.class文件轉(zhuǎn)換成一個.dex文件。
⑤apkbuilder
可以將.dex文件、已經(jīng)打包好的資源文件、libs中的Native庫等其它資源打包成未簽名的.apk文件。SDK3.0之后廢棄了該工具,可以直接利用sdklib.jar中的APKBuilderMain.class實現(xiàn)其功能。
⑥jarsigner
全稱是Java Archive Signer,Jar簽名工具。可以為jar文件簽名,還可以校驗jar文件的簽名和完整性。
⑦zipalign
可以優(yōu)化apk。以幫助操作系統(tǒng)更高效地根據(jù)請求獲取資源,將Data structure alignment(DSA,數(shù)據(jù)結(jié)構(gòu)對齊標準)限定為4-byte boundaries。
?
這七大工具就包含在 我們配置Android SDK時下載的 Android SDK Build-tools中,有了這“七個小矮人”的幫助,我們就能順利地將IDE中的項目變成可以在設(shè)備上運行的應(yīng)用程序了,下圖簡單描述了這個過程,是官網(wǎng)上的一張圖^_^。
詳細的構(gòu)建過程如下圖所示:
也是官網(wǎng)上的一張圖,哈哈。總之就是利用各種工具以生成中間文件(intermediates)的形式最終生成apk文件。下面是關(guān)于這個過程的一些解釋:
?
①aapt工具將程序的資源文件(如AndroidManifest.xml文件、Activity中的xml布局文件)進行編譯,并生成供Java代碼引用資源的R.java文件。
?
②aidl工具將所有.aidl接口轉(zhuǎn)換成.java接口。
?
③所有的Java代碼(包括R.java和.aidl文件)被Java編譯器編譯成.class文件。
?
④dex工具將所有的.class文件轉(zhuǎn)換成Dalvik字節(jié)碼,第三方庫和所有在module構(gòu)建中用到的.class文件也將被轉(zhuǎn)換成.dex文件,以便被打包成最終的.apk文件。
?
⑤所有無需編譯的資源(如圖片)、已經(jīng)編譯好的資源,以及.dex文件被發(fā)往apkbuilder工具以打包成一個.apk文件。
?
⑥打包好了.apk文件后,一旦apk被創(chuàng)建,在安裝到設(shè)備之前必須用debug key或release key簽名。
?
⑦最終,若應(yīng)用已經(jīng)用發(fā)行模式簽名了,你必須用zipalign工具對齊.apk。因為對齊最終的apk有助于該應(yīng)用在設(shè)備上運行時減小內(nèi)存的使用。
?
?
Android構(gòu)建對應(yīng)的API Level參見:API_LEVEL。
總結(jié)
以上是生活随笔為你收集整理的android构建过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: nginx + mysql + php-
- 下一篇: [转载]HTTP协议详解
