網(wǎng)絡(luò)服務(wù)器設(shè)備福清市百度seo
ninja的簡(jiǎn)介
隨著Android版本的更迭,makefile體系逐漸增多,導(dǎo)致make單編模塊的時(shí)間越來(lái)越長(zhǎng),每次都需要半個(gè)小時(shí)甚至更長(zhǎng)時(shí)間,其原因?yàn)槊看蝝ake都會(huì)重新加載所有mk文件,再生成ninja編譯,此完整過(guò)程十分耗時(shí),實(shí)際編譯代碼僅占其中的一小部分。
因此我們可以使用google提供的一種快速編譯方式:ninja,使用ninja編譯,基本上十幾秒就能快速編完一個(gè)模塊,但必須注意ninja編譯不會(huì)重新加載mk文件,故只適用于修改已存在的代碼文件的情況,如果涉及到文件的增減、目錄的重構(gòu)就必須用mm/make重新編譯之后,才能使用ninja快速編譯新的修改。
第一步:進(jìn)行一次完整編譯
source build/envsetup.sh
lunch xxxx-userdebug
./build.sh --dist
(或者make -j24)
第二步:使用ninja進(jìn)行編譯
source build/envsetup.sh
lunch xxxx-userdebug
prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxxx.ninja <module_name> -j24其中module_name為模塊名或鏡像名:bootimage、dtboimage、framework、Settings等理論上所有的Makefile或者Android.mk中的module_name皆可使用ninja進(jìn)行快速編譯
舉例如下:
prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja bootimage -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja dtboimage -j24prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja sepolicy -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja Settings -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja framework -j24
其他常用命令
?
printconfig – 打印當(dāng)前配置清單(lunch xxx)make bootimage -j16make module_name -j16m 編譯從根目錄開(kāi)始的所有modulemm 進(jìn)到module目錄進(jìn)行編譯,目錄下要有Android.mkmmm 加指定的路徑參數(shù),指定目錄下要有Android.mkcroot – cd to the top of the treemake clean-<module_name> 例如:make clean-libutils、make clean-chargermake clean 刪除out目錄