日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 编译过程

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 编译过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引用:http://www.cnblogs.com/devinzhang/archive/2011/12/20/2294686.html

http://blog.sina.com.cn/s/blog_7bee201901013nkk.html

Android工程的編譯過程

現在很多人想對Android工程的編譯和打包進行自動化,比如建立每日構建系統、自動生成發布文件等等。這些都需要我們對Android工程的編譯和打包有一個深入的理解,至少要知道它的每一步都做了什么,需要什么環境和工具,輸入和輸出是什么。那么我們就來挖掘一下Android的編譯過程中的細節。

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

我們重點關心的是(1)這個過程的輸入是什么?(2)這個過程的輸出是什么?(3)這個過程使用了什么工具?至于使用什么參數,可以自己去看對應命令的幫助文件,或者在網上搜索,這不是本文的重點。

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

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

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

第二步:處理AIDL文件,生成對應的.java文件(當然,有很多工程沒有用到AIDL,那這個過程就可以省了)
【輸入】源碼文件、aidl文件、framework.aidl文件
【輸出】對應的.java文件
【工具】aidl工具

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

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

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

第六步:對未簽名.apk文件進行簽名
【輸入】未簽名的.apk文件
【輸出】簽名的.apk文件
【工具】jarsigner

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

知道了這些細節之后,我們就可以實現很多我們想實現東西了,比如:自動化,我們可以使用某種腳本,像Windows下的批處理,linux下的Bash,Java下的Ant,Python、Perl這樣的腳本語言,甚至直接用Java、.net這們的強類型語言也是可以的。如果你真正弄懂了上面的步驟,了解了編譯打包過程的本質,你完全可以以你想要的任何方式實現它的自動化,這才是真正的“舉一反三,以不變應萬變”。再比如,對Android SDK的精簡,大家知道,現在Android SDK動轍幾百兆,我們完全可以應用上面的知識,只保留必要的工具,把SDK精簡到10M以下。當然,還可以做很多事情,前提是你真正弄懂了它。

轉載于:https://www.cnblogs.com/sode/p/3286388.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的android 编译过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩高清在线观看 | 天天插美女 | 一道本av | 男人添女人下部高潮视频 | 黄色片免费网站 | 日韩视频免费观看 | 九色影院| 久久国产精品影院 | 国产性av| 免费网站av | 久久久精品影视 | 中日韩av电影 | 成人无码av片在线观看 | 蜜桃久久久久久久 | 伊人二区 | 麻豆三级在线观看 | 黄av资源| 最新在线中文字幕 | youjizz日韩| jizz日本在线播放 | 国产一级片中文字幕 | 野花社区视频在线观看 | 波多野结衣亚洲一区二区 | 一区中文字幕 | 国产秋霞| 亚洲成人av综合 | 日韩色图片| 免费观看黄色一级片 | 成人三级黄色片 | 操丝袜美女视频 | 91精品免费在线 | 黄色成人在线观看 | 韩国一区二区三区四区 | 国产探花精品在线 | 视频网站在线观看18 | av黄在线观看 | 国产在线观 | 天堂中文在线播放 | 91精品久久久久久久久久入口 | 黄瓜视频色版 | 69精品无码成人久久久久久 | 中年夫妇啪啪高潮 | 特级免费毛片 | 国产精品av免费观看 | 国产精品白嫩白嫩大学美女 | 亚洲va久久久噜噜噜久久天堂 | 国产免费www| 农村少妇无套内谢粗又长 | 国产一区二区三区四区在线观看 | 亚洲精品女人久久久 | 人妻一区二区三区四区 | 亚洲啪啪网 | 国产福利小视频在线 | 国产高清不卡视频 | 亚洲永久免费 | 成人午夜av在线 | 一级特黄毛片 | 91猎奇在线观看 | 99国产揄拍国产精品 | av黄色在线免费观看 | 欧美性大战久久久久久 | 日韩国产成人无码av毛片 | 超碰caopor | 18pao国产成视频永久免费 | 亚洲一区二区三区四区视频 | 欧美网 | 日韩精品一区二区三区av | 国产精品第56页 | 狠狠干狠狠艹 | jjzz黄色片 | 2021av视频 | 九九色播| 午夜免费福利在线 | 伊人青青操 | 午夜播放| 中文字幕免费高清视频 | 美女扒开腿让男人捅 | 国产精品7777 | 色wwwwww | 中文字幕日韩三级 | 神马福利视频 | 91欧美激情一区二区三区 | 日韩精品三级 | a在线播放 | 国产黄色一级片视频 | 韩国av电影在线观看 | 成人久久久久久久 | 欧美一区二区三区小说 | 欧美青青草| 丰满白嫩尤物一区二区 | 亚洲码中文 | 少妇被黑人到高潮喷出白浆 | 日本九九视频 | 久久久久亚洲av无码网站 | 国产99久久精品 | 99riAv国产精品无码鲁大师 | av一级在线 | 欧美色图亚洲天堂 | 天天色天天干天天 |