把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;
1.\build\target\product 目录下generic.mk文件:
java代码
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5ichR3cf52bjl2LcNXZnFWbp9CXt92YuUWelRXaukXas92avw1LcpDc0RHaiojIsJye.png)
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文件。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5ichR3cf52bjl2LcNXZnFWbp9CXt92YuUWelRXaukXas92avw1LcpDc0RHaiojIsJye.png)
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包,并删除