Android room定製,編譯流程
android 預設編譯步驟
1.source build/envsetup.sh
2.lunch
3.kheader(mtk不用)
4.make -j8
5.make -j8 2>&1 |tee log.txt
編譯某個資料夾
cat make.ini
source build/envsetup.sh
lunch 選擇版本
mmm frameworks/base/
mmma packages/apps/Launcher3 加a,查詢單編譯專案的所有模組
匯出打包
source build/envsetup.sh
cat make.ini
lunch
23
kheader
source **********_Benga_324_QHD_NOGPS_B1.sh ide
改模組,燒到手機
改的是xml檔案,更新下
find frameworks/base/packages/SettingsProvider/* -exec touch {} \;
find frameworks/base/packages/SettingsProvider/ -exec touch {} \;(刪除apk,重新整理)
單編模組
mmm frameworks/base/packages/SettingsProvider/
make snod 打包到img下(user版本 必須的操作)
android.mk檔案
應用程式名稱用LOCAL_PACKAGE_NAME,生成的模組的名稱用LOCAL_MODULE
LOCAL_PATH:=$(call my-dir)(由於一般情況下Android.mk和需要編譯的原始檔在同一目錄下)( 將LOCAL_PATH變數定義成 本檔案所在 目錄路徑)
每個編譯模組 都是 以include $(CLEAR_VARS)開始,以include $(BUILD_XXX)結束。
BUILD_PACKAGE 建立一個APK
include $(CLEAR_VARS)(指定讓GNU MAKEFILE為你 清除 除LOCAL_PATH以外 的所有LOCAL_XXX變數)
LOCAL_SRC_FILES,app的所有原始碼,可以 指定 具體的 檔案,如果是java原始碼的話,可以呼叫all-java-files-under得到。
LOCAL_MODULE_TAGS := user eng tests optional
user: 指該模組只在user版本下才編譯
eng: 指該模組只在eng版本下才編譯
optional:指該模組在 所有版本下都編譯,預設是optional
LOCAL_CERTIFICATE := platform //指定 使用的哪種key 來給apk簽名,platform 就是 指 用 platform.pk8和platform.x509.pem兩個檔案 來 簽名。用這兩個key簽名後apk才真正可以放入系統程序中;
include $(BUILD_PACKAGE)編譯一個應用程式(APK)
include $(BUILD_STATIC_LIBRARY)表示編譯成靜態庫,字尾為.a。
include $(BUILD_SHARED_LIBRARY)表示編譯成動態庫,用來指示將當前模組編譯為共享庫,字首為lib,字尾為.so。
include $(BUILD_EXECUTABLE)表示編譯成可執行程式
include $(call all-subdir-makefiles),它的作用就是包含所有子目錄中的Android.mk檔案