其實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,結果都在安裝好所需檔案重啟電腦後,系統就出莫名...