九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Android工程的編譯過(guò)程

現(xiàn)在很多人想對(duì)Android工程的編譯和打包進(jìn)行自動(dòng)化,比如建立每日構(gòu)建系統(tǒng)、自動(dòng)生成發(fā)布文件等等。這些都需要我們對(duì)Android工程的編譯和打包有一個(gè)深入的理解,至少要知道它的每一步都做了什么,需要什么環(huán)境和工具,輸入和輸出是什么。那么我們就來(lái)挖掘一下Android的編譯過(guò)程中的細(xì)節(jié)。

首先,我們假定你的系統(tǒng)(什么系統(tǒng)都行,不限于Linux還是Windows系統(tǒng),當(dāng)然,我在這里默認(rèn)使用Linux系統(tǒng)來(lái)舉例子,但在 Windows中幾乎沒(méi)有什么差別)已經(jīng)安裝了JDK和Android SDK。再假定你的Android SDK的路徑是ANDROID_SDK_HOME,你想要編譯的Android OS版本是ANDROID_OS_VERSION(比如android-1.6、android-8、android-10等)。

我們重點(diǎn)關(guān)心的是(1)這個(gè)過(guò)程的輸入是什么?(2)這個(gè)過(guò)程的輸出是什么?(3)這個(gè)過(guò)程使用了什么工具?至于使用什么參數(shù),可以自己去看對(duì)應(yīng)命令的幫助文件,或者在網(wǎng)上搜索,這不是本文的重點(diǎn)。

步驟中提到的工具如下表:

名稱(chēng)功能介紹在操作系統(tǒng)中的路徑
aaptAndroid資源打包工具${ANDROID_SDK_HOME}/platform-tools/appt
aidlAndroid接口描述語(yǔ)言轉(zhuǎn)化為.java文件的工具${ANDROID_SDK_HOME}/platform-tools/aidl
javacJava Compiler${JDK_HOME}/javac或/usr/bin/javac
dex轉(zhuǎn)化.class文件為Davik VM能識(shí)別的.dex文件${ANDROID_SDK_HOME}/platform-tools/dx
apkbuilder生成apk包${ANDROID_SDK_HOME}/tools/opkbuilder
jarsigner.jar文件的簽名工具${JDK_HOME}/jarsigner或/usr/bin/jarsigner
zipalign字節(jié)碼對(duì)齊工具${ANDROID_SDK_HOME}/tools/zipalign

第一步:打包資源文件,生成R.java文件
【輸入】Resource文件(就是工程中res中的文件)、Assets文件(相當(dāng)于另外一種資源,這種資源Android系統(tǒng)并不像對(duì)res中的文件那樣優(yōu)化它)、AndroidManifest.xml文件(包名就是從這里讀取的,因?yàn)樯蒖.java文件需要包名)、Android基礎(chǔ)類(lèi)庫(kù)(Android.jar文件)
【輸出】打包好的資源(一般在Android工程的bin目錄可以看到一個(gè)叫resources.ap_的文件就是它了)、R.java文件(在gen目錄中,大家應(yīng)該很熟悉了)
【工具】aapt工具,它的路徑在${ANDROID_SDK_HOME}/platform-tools/aapt(如果你使用的是Windows系統(tǒng),按慣例路徑應(yīng)該這樣寫(xiě):%ANDROID_SDK_HOME%\platform-tools\aapt.exe,下同)。

第二步:處理AIDL文件,生成對(duì)應(yīng)的.java文件(當(dāng)然,有很多工程沒(méi)有用到AIDL,那這個(gè)過(guò)程就可以省了)
【輸入】源碼文件、aidl文件、framework.aidl文件
【輸出】對(duì)應(yīng)的.java文件
【工具】aidl工具

第三步:編譯Java文件,生成對(duì)應(yīng)的.class文件
【輸入】源碼文件(包括R.java和AIDL生成的.java文件)、庫(kù)文件(.jar文件)
【輸出】.class文件
【工具】javac工具

第四步:把.class文件轉(zhuǎn)化成Davik VM支持的.dex文件
【輸入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),庫(kù)文件(.jar文件)
【輸出】.dex文件
【工具】javac工具

第五步:打包生成未簽名的.apk文件
【輸入】打包后的資源文件、打包后類(lèi)文件(.dex文件)、libs文件(包括.so文件,當(dāng)然很多工程都沒(méi)有這樣的文件,如果你不使用C/C++開(kāi)發(fā)的話(huà))
【輸出】未簽名的.apk文件
【工具】apkbuilder工具

第六步:對(duì)未簽名.apk文件進(jìn)行簽名
【輸入】未簽名的.apk文件
【輸出】簽名的.apk文件
【工具】jarsigner

第七步:對(duì)簽名后的.apk文件進(jìn)行對(duì)齊處理(不進(jìn)行對(duì)齊處理是不能發(fā)布到Google Market的)
【輸入】簽名后的.apk文件
【輸出】對(duì)齊后的.apk文件
【工具】zipalign工具

知道了這些細(xì)節(jié)之后,我們就可以實(shí)現(xiàn)很多我們想實(shí)現(xiàn)東西了,比如:自動(dòng)化,我們可以使用某種腳本,像Windows下的批處理,linux下的Bash,Java下的Ant,Python、Perl這樣的腳本語(yǔ)言,甚至直接用Java、.net這們的強(qiáng)類(lèi)型語(yǔ)言也是可以的。如果你真正弄懂了上面的步驟,了解了編譯打包過(guò)程的本質(zhì),你完全可以以你想要的任何方式實(shí)現(xiàn)它的自動(dòng)化,這才是真正的“舉一反三,以不變應(yīng)萬(wàn)變”。再比如,對(duì)Android SDK的精簡(jiǎn),大家知道,現(xiàn)在Android SDK動(dòng)轍幾百兆,我們完全可以應(yīng)用上面的知

http://www.cnblogs.com/devinzhang/archive/2011/12/20/2294686.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
android的編譯和運(yùn)行過(guò)程深入分析
編譯生成APK的全過(guò)程
Jenkins中使用ant管理Android應(yīng)用開(kāi)發(fā)生命周期
使用ANT打包Android應(yīng)用
android命令行打包、簽名+自動(dòng)打包器
安卓平臺(tái)與SDKTools版本以及ADT版本的對(duì)應(yīng)關(guān)系
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服