閱讀737 返回首頁    go 阿裏雲 go 技術社區[雲棲]


android make編譯的那些事



首先要理解編譯三個m的含義:
m,是make
mm ,在編譯單一模塊的時候可以在當前目錄下使用
mmm 編譯指定目錄


其中mmm後麵要跟模塊的根目錄,不是所有的目錄下都有子模塊,那些含有Android.mk檔案目錄才是模塊的根目錄。


1、單獨編譯某模塊,需要在mmm後麵指定模塊路徑
如:mmm frameworks/base/native/video/jni 


2、或者可以跳轉到你想編譯模塊相對應目錄下執行“mm”命令。
           就可以編譯單獨的模塊,事實上,這個命令與mmm命令沒有本質的區別。


3、用 m 編譯全部的模塊 
         也可以在src目錄下直接執行


修改APK應用:在packages中的應用如果修改後都可以單獨編譯。先執行 
$. build/envsetup.sh #初始化
$mmm packages/providers/ContactsProvider/
##用mm/mmm來編譯生成的.apk並不會打包到system.img中,需要我們手動通過make snod把system文件夾打包為system.img
##可以使用make snod將模塊打包到system.img中,也可以使用 adb install *.apk安裝
注:通過mmm packages/providers/ContactsProvider/ 編譯後的apk在 out/target/product/generic/system/app 
這時候通過 adb install out/target/product/generic/system/app/xxx.apk 安裝你剛修改過的apk就可以在模擬器上看到你修改的效果了。


修改framework:如果在Contacts.java中修改了,必須重新編譯下framework。先執行 
$ . build/envsetup.sh #初始化
#網上有的說要執行 make update-api,實際上直接make PRODUCT-sdk-sdk就可以將修改後的framework編譯到sdk中。 #編譯framework後,那些修改了的應用可以不用再單獨編譯了。4~6分鍾
$ make PRODUCT-sdk-sdk #重新生成SDK 10~20分鍾


不是android的一個,但是經常用。make 2&>txt
將make的信息輸出到txt中,如果make > txt則無法輸入
Linux Shell 環境中支持輸入輸出重定向,用符號"<"和">"來表示。0、1和2分別表示標準輸入、標準輸出和標準錯誤信息輸出,可以用來指定需要重定向的標準輸入或輸出
make &>test
表示標準和錯誤全部輸出
4、make -n &>txt
make -n 是現實編譯命令,但是不去執行,非常有用
5.顯示詳細的編譯過程信息(ndk)
在definitions.mk中有定義。


ifeq ($(V),1)
hide = $(empty)
else
hide = @
endif


要想把所有的編譯命令輸出來,隻需要先export V=1就可以了。
輸出NDK詳細log
$NDK/ndk-build V=1 2>&1 | tee log.txt




最後更新:2017-04-02 16:48:17

  上一篇:go tomcat6.0支持 SSI相關配置
  下一篇:go 使用apache commons-net包實現文件ftp上傳