Android 编译时:m、mm、mmm、mma、mmma的区别
?
m:編譯整個安卓系統(tǒng)
?????makes from the top of the tree
mm:編譯當(dāng)前目錄下的模塊,當(dāng)前目錄下需要有Android.mk這個makefile文件,否則就往上找最近的Android.mk文件。
?????? ? builds all of the moudles in the current directory
?????????mma:當(dāng)前目錄新增或刪除文件后,可以用mma重新編譯。
mmm:編譯指定路徑下的模塊,指定的路徑下面需要有Android.mk這個makefile文件
???????????? builds all of the moudles in the supplies directory
mmma:指定目錄下新增或刪除文件后,可以用mmma重新編譯。 // 未全編譯的情況系下,可以使用該命令單編譯模塊
????????????mmm命令?的編譯過程:
??????????? build/core/main.mk(是Android編譯系統(tǒng)的入口文件)
?????????? ->build/core/config.mk(會定好編譯類型和目標(biāo)文件)
????????????????????????????????????????????????????? ->build/core/definitions.mk(定義在編譯過程中用到的宏)
????????????????????????????????????????????????????? ->ONE_SHOT_MAKEFILE->build/core/package.mk(編譯Apk庫文件)
??????????????????????????????????????????????????????????????????????????????????????????????? ?->build/core/java_library.mk(編譯Java庫文件)
???????????????????????????????????????????????????????????????????????????????????????????????? ->build/core/static_java_library.mk(編譯Java靜態(tài)庫文件)
???????????????????????????????????????????????????????????????????????????????????????????????? ->build/core/shared_library.mk->build/core/dynamic_library.mk->build/core/binary.mk->build/core/base_rules.mk
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(?計算一些基本變量的值,并創(chuàng)建一些基本的依賴規(guī)則)
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????->build/core/static_library.mk(編譯.a靜態(tài)庫文件)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ->build/core/executable.mk(編譯可執(zhí)行文件)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ->build/core/prebuilt.mk(編譯已經(jīng)預(yù)編譯好的第三方庫文件)
?????????????????????????????????????????????????????????????????????????????????????????????????->build/core/Makfile(有system.img、boot.img、recovery.img等鏡像文件生成規(guī)則)
?????????????環(huán)境變量ONE_SHOT_MAKEFILE中存放要編譯模塊的Android.mk的文件路徑,如果環(huán)境變量值為空,表示執(zhí)行的是m或者make命令,會對Android源代碼中的所有模塊進(jìn)行編譯。
?
mm、mmm是類似的,都是用來編譯某些模塊。
使用這些編譯命令,首先需要在Android根目錄下配置環(huán)境
#source build/envsetup.sh ? 要確保當(dāng)前根目錄下有envsetup.sh腳本文件#lunch ... 對工程的選擇 #cd?(要編譯模塊所在的目錄) #mm(mma、mmm、mmma) -B -j2 2>&1 ? 開始編譯模塊 注:-B表示編譯模塊的所有文件,-j2表示編譯的時候開啟兩個線程,2>&1表示將錯誤切換到輸出(輸入為0,輸出為1,錯誤為2)。 ?envsetup.sh腳本文件里包含vendorsetup.sh?、lunch、 m mm mmm的定義
?
mmm 和 mm 區(qū)別:
mmm package/apps/DeskClock
cd?package/apps/DeskClock ,然后再mm
轉(zhuǎn)載于:https://www.cnblogs.com/onelikeone/p/9309238.html
總結(jié)
以上是生活随笔為你收集整理的Android 编译时:m、mm、mmm、mma、mmma的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纯css实现漂亮又健壮的tooltip
- 下一篇: java线程安全问题原因及解决办法