把常用的應用程式編譯到img檔案中,就成了系統的一部分,使用者不必自己安裝,當然也解除安裝不了;
同時也可以删減系統自帶的應用程式,精簡系統;
1.\build\target\product 目錄下generic.mk檔案:
java代碼
product_packages := \
accountandsyncsettings \
deskclock \
alarmprovider \
bluetooth \
calculator \
calendar \
camera \
testmid \
certinstaller \
drmprovider \
email \
gallery3d \
latinime \
launcher2 \
mms \
music \
我們添加一個testmid \ 應用名稱。
2.把testmid包放入
\packages\apps 目錄下,修改android.mk檔案。
local_path:= $(call my-dir)
include $(clear_vars)
local_module_tags := optional
local_src_files := $(call all-subdir-java-files)
local_package_name := testmid
local_certificate := platform
include $(build_package)
注:local_package_name := testmid (包名必須和generic.mk中添加的相同)
編譯源碼,可以看到在
\out\target\product\smdkv210\system\app
目錄下生存了testmid.apk了。這時system.img也包含了此應用。
-------------------------------------------------------------------
特殊情況:有時,應用需要包含jar包,這時的app導入源碼時會出現問題:
module.target.java_libraries.libarity already defined by ... stop
由于 local_static_java_libraries := libarity 會引發錯誤資訊。
目前解決方法是:
\build\core 目錄下修改base_rules.mk
注釋掉錯誤資訊:
ifdef $(module_id)
#$(error $(local_path): $(module_id) already defined by $($(module_id)))
endif
$(module_id) := $(local_path)
--重新編譯,這時可以通過了。
(2)、删除原廠(telchips)帶源碼的應用程式,如dtv_dvbt
在/device/telechips/m801/device.mk
注釋掉相應語句:
# product_packages += \
# sampledvbtplayer \
同時,在/out/target/product/m801/system/app 找到相應的.apk包,并删除