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 默認打開應用權限》