Android预装应用有很多种方法:
推荐第三种
一、在Vender文件夹内预装不可卸载应用
另一种预装应用存放方式,存放目录为W:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps
在该文件夹下存放所需APP文件夹,在文件夹内存放APK文件和MK文件,其Android.mk形式为:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TESTAPP
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)
另外还需在W:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps\apps.mk
中增加如此描述
PRODUCT_PACKAGES += TESTAPP
二、在Package文件夹内预装不可卸载应用
另一种预装应用存放方式,存放目录为W:\Code\px30-jd4_android8\AIO-PX30-JD4\packages\apps
在该文件夹下存放所需APP文件夹,在文件夹内存放APK文件和MK文件,其Android.mk形式为:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := BILIBILI
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := false
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
另外还需在W:\Code\px30-jd4_android8\AIO-PX30-JD4\device\rockchip\common\device.mk
中增加如此描述
PRODUCT_PACKAGES += BILIBILI
三、在Device下预装应用
该方法可预装:
- 不可卸载应用
- 可卸载应用,重置后恢复
- 可卸载应用,重置后不可恢复
先讲下流程,在W:\Code\RK3399PRO_HDMI_ANDROID8\device\rockchip\common\device.mk
文件内有如下代码:
# Prebuild apps
ifneq ($(strip $(TARGET_PRODUCT)), )
TARGET_DEVICE_DIR=$(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_PRODUCT)/BoardConfig.mk')
TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(TARGET_DEVICE_DIR)))
# $(info device-rockchip-common TARGET_DEVICE_DIR: $(TARGET_DEVICE_DIR))
$(shell python $(LOCAL_PATH)/auto_generator.py $(TARGET_DEVICE_DIR) preinstall bundled_persist-app)
$(shell python $(LOCAL_PATH)/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del bundled_uninstall_back-app)
$(shell python $(LOCAL_PATH)/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del_forever bundled_uninstall_gone-app)
-include $(TARGET_DEVICE_DIR)/preinstall/preinstall.mk
-include $(TARGET_DEVICE_DIR)/preinstall_del/preinstall.mk
-include $(TARGET_DEVICE_DIR)/preinstall_del_forever/preinstall.mk
endif
其主要内容为,根据预装APP文件,生成相应的文件。
1、不可卸载应用
将应用放入该文件夹内
W:\Code\RK3399PRO_HDMI_ANDROID8\device\rockchip\rk3399pro\preinstall
2、可卸载应用,重置后可恢复
将应用放入该文件夹内
W:\Code\RK3399PRO_HDMI_ANDROID8\device\rockchip\rk3399pro\preinstall_del
3、可卸载应用,重置后不可恢复
将应用放入该文件夹内
W:\Code\RK3399PRO_HDMI_ANDROID8\device\rockchip\rk3399pro\preinstall_del_forever
最后在W:\Code\RK3399PRO_HDMI_ANDROID8\device\rockchip\rk3399pro\device.mk
文件内添加所要增加的应用名,如下所示:
PRODUCT_PACKAGES += \
BILIBILI \
NeteaseCloudMusi \
Quark_Browser_unins \
tim
在make工程后,会发现之前放进去的APK文件会,会被生成一个文件夹,文件夹内有Android.mk文件和apk文件,有些应用还会有lib文件
END
预装应用的默认权限,请参考该文章《Android 默认打开应用权限》