編譯android原始碼apk是否生成odex方法

2021-09-02 08:04:28 字數 858 閱讀 7270

其實android系統預設的配置是,如果沒有指定disable_dexpreopt := true(android.mk中加入),那麼user版本生成odex,其他版本不生成odex檔案;

進入原始碼目錄:build/core/main.mk中找到

ifneq (true,$(disable_dexpreopt))

ifeq ($(user_variant),user)

ifeq ($(host_os),linux)

with_dexpreopt := true

endif

endif

endif

所以user版不想生成odex,那麼只需要定義disable_dexpreopt := true;

而eng版本要生成odex的話,那麼只需要把with_dexpreopt := true ;

如果想單獨控制某乙個應用是否生成odex的話可以在這個應用的android.mk中新增with_dexpreopt := true;

對於這個配置的邏輯可以參考

/build/core/package.mk

ifneq (true,$(with_dexpreopt))

local_dex_preopt :=

else

ifneq (,$(local_src_files))

ifndef local_dex_preopt

local_dex_preopt := true

endif

endif

endif

endif

ifeq (false,$(local_dex_preopt))

local_dex_preopt :=

endif

Android原始碼 編譯apk指令

有些時候我們 編寫完畢後,需要在原始碼的環境之中進行編譯。也就是利用系統原始碼的環境,進行編譯系統apk或者so 檔案。在原始碼根目錄之中執行 輸入 source build envsetup.sh 初始化當前的編譯環境 選擇編譯版本 輸入lunch然後根據版本選擇輸入相應版本號數字 切換路徑 通過...

原始碼中編譯生成完整apk

因為ap需要用到system許可權,所以在原始碼中編譯是最省力的方式。但是在編譯後發現乙個問題,編譯出的apk還會帶乙個同名的odex,這樣編譯出的apk是不完整的,被剔除了dex檔案,是無法單獨拿出來給機子安裝用的。後來發現需要兩個地方做修改 一 在本身的android.mk中加入 local d...

Debian編譯Android原始碼

筆記本 intel i3 ram 4g linux debian 8.1.0 amd64 xfce cd 1.iso android 4.2.2android官方推薦使用ubuntu編譯原始碼,但我試了ubuntu 12.04 ubuntu 14.04,結果都在安裝好所需檔案重啟電腦後,系統就出莫名...