一、将自己的应用内置到系统中,变为系统应用
- 在源码的packages/apps/下新建一个文件夹,我这里将文件夹命名为MySystemApp
- 使用系统签名打包APK,将APK放入MySystemApp文件夹中:如何生成系统签名请自己搜索
- 在MySystemApp下新建Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MySystemApp # 替换你自己的模块名,建议模块名和文件夹名一致,因为我没试过不一致能否成功
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := MySystemApp.apk # 替换你自己的apk名字
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_PREBUILT)
对Android.mk的参数解释:
LOCAL_MODULE
用来指定模块的名称,该模块名称需要加入到PRODUCT_PACKAGES
LOCAL_MODULE_TAGS
用来指定该app在编译什么样子的版本的时候会被安装到机器上;
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
LOCAL_MODULE_CLASS
在采用预装这种形式的时候,该变量来指定预装的模块的类型,此处为APPS;
LOCAL_CERTIFICATE
用于设置APK的签名模式,一共有如下四种:
media:使用media签名文件签名
platform:使用平台签名文件签名,也就是系统签名
shared:使用shared签名文件签名
PRESIGNED:如果文件已经签过名,不需要重新签名,则使用PRESIGNED
LOCAL_SRC_FILES
要预装的APK源文件;
LOCAL_PROPRIETARY_MODULE
LOCAL_PRIVILEGED_MODULE 决定了其编译后的在ROM中的安装位置: 如果不设置或者设为false,安装位置为system/app; 如果设置为true,安装位置为system/priv-app。
- 在/device/rockchip/common/modules/hdmi_in.mk中的PRODUCT_PACKAGES里添加自己的模块名,或者在device/rockchip/rk3588/device.mk中添加,这两个地方都是成功的
PRODUCT_PACKAGES += \
...... \
MySystemApp
- 整编,烧录
- 如果是在hdmi_in.mk下添加的,是在设备的/vendor/app/目录中;在device.mk中添加的,在设备的/system/app/目录中
二、更新自己的系统应用
如果要对应用代码进行修改的话,不需要重新进行编译以及烧录
- 重新打包最新的APK
- 执行如下命令直接替换apk
adb root
adb remount
adb push '你自己新打包的apk路径' 在设备中你的apk路径
eg: adb push 'MySystemApp.apk' /system/app/MySystemApp/
adb reboot