單獨(dú)編譯Android 源代碼中的模塊實(shí)現(xiàn)方法
第一次下載好Android源代碼工程后,我們通常是在Android源代碼工程目錄下執(zhí)行make命令,經(jīng)過(guò)漫長(zhǎng)的等待之后,就可以得到Android系統(tǒng)鏡像system.img了。以后如果我們修改了Android源代碼中的某個(gè)模塊或者在Android源代碼工程新增一個(gè)自己的模塊,是不是還是執(zhí)行make命令呢?答案是否定的,Google為我們準(zhǔn)備了另外的命令來(lái)支持編譯單獨(dú)的模塊,以及重新打包system.img的命令。在繼續(xù)學(xué)習(xí)Android源代碼之前,就讓我們先來(lái)看看這個(gè)命令吧。
一. 首先在Android源代碼目錄下的build目錄下,有個(gè)腳本文件envsetup.sh,執(zhí)行這個(gè)腳本文件后,就可以獲得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意:這是一個(gè)source命令,執(zhí)行之后,就會(huì)有一些額外的命令可以使用:
- croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. - cgrep: Greps on all local C/C++ files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/*.xml files. - godir: Go to the directory containing a file.
這些命令的具體用法,可以在命令的后面加-help來(lái)查看,這里我們只關(guān)注mmm命令,也就是可以用它來(lái)編譯指定目錄的所有模塊,通常這個(gè)目錄只包含一個(gè)模塊。
二. 使用mmm命令來(lái)編譯指定的模塊,例如Email應(yīng)用程序:
USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/
編譯完成之后,就可以在out/target/product/generic/system/app目錄下看到Email.apk文件了。Android系統(tǒng)自帶的App都放在這具目錄下。另外,Android系統(tǒng)的一些可執(zhí)行文件,例如C編譯的可執(zhí)行文件,放在out/target/product/generic/system/bin目錄下,動(dòng)態(tài)鏈接庫(kù)文件放在out/target/product/generic/system/lib目錄下,out/target/product/generic/system/lib/hw目錄存放的是硬件抽象層(HAL)接口文件,后面的文章里面,我們會(huì)陸續(xù)提及到,敬請(qǐng)關(guān)注。
三. 編譯好模塊后,還要重新打包一下system.img文件,這樣我們把system.img運(yùn)行在模擬器上時(shí),就可以看到我們的程序了。
USER-NAME@MACHINE-NAME:~/Android$ make snod
四. 參照Ubuntu上下載、編譯和安裝Android最新源代碼一文介紹的方法運(yùn)行模擬器:
USER-NAME@MACHINE-NAME:~/Android$ emulator
這樣一切就搞定了。
希望對(duì)研究Android 源碼的小伙伴有所幫助!
- Android內(nèi)核源碼 在Ubuntu上下載,編譯,安裝
- Android源碼 在Ubuntu上下載,編譯和安裝
- 為Android的apk應(yīng)用程序文件加殼以防止反編譯的教程
- Android APK反編譯圖文教程
- Android開(kāi)發(fā)apk反編譯和二次打包教程
- Android應(yīng)用程序的編譯流程及使用Ant編譯項(xiàng)目的攻略
- 詳談Android編譯命令
- 從源碼編譯Android系統(tǒng)的Java類庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法
- 利用源碼編譯Android系統(tǒng)的APK和可執(zhí)行命令的方法
- 使用Android studio創(chuàng)建的AIDL編譯時(shí)找不到自定義類的解決辦法
- Android 源碼如何編譯調(diào)試
相關(guān)文章
Android實(shí)現(xiàn)列表元素動(dòng)態(tài)效果
本文將利用AnimatedList組件實(shí)現(xiàn)列表元素的一些動(dòng)態(tài)效果,例如添加元素時(shí)的漸現(xiàn)效果,刪除元素逐漸消失的效果等,感興趣的小伙伴可以了解一下2022-03-03
Android滑動(dòng)刪除數(shù)據(jù)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android滑動(dòng)刪除功能2017-01-01
Android SharedPreferences四種操作模式使用詳解
這篇文章主要介紹了Android SharedPreferences四種操作模式使用詳解的相關(guān)資料,這里介紹了獲取Android SharedPreferences的兩種方法及比較,和操作模式的介紹,需要的朋友可以參考下2017-07-07
Android ViewPager實(shí)現(xiàn)無(wú)限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)無(wú)限循環(huán)效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
Android代碼檢查規(guī)則Lint的自定義與應(yīng)用詳解
本文主要介紹了Android代碼檢查規(guī)則Lint的自定義與應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Android RecyclerView的簡(jiǎn)單使用
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView簡(jiǎn)單使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
android計(jì)算pad或手機(jī)的分辨率/像素/密度/屏幕尺寸/DPI值的方法
本文將介紹手機(jī)布局/界面設(shè)計(jì)/分辨率/密度相關(guān),接下來(lái)介紹android計(jì)算pad或手機(jī)的分辨率像素等等的方法,感興趣的朋友可以了解下,希望本文可以幫助你2013-01-01

