1. 程式人生 > >Android room定製,編譯流程

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檔案