这里通过RK平台内置HOME 程序来讲解RK平台内置应用相关知识点
文章目录
前言
- 以RK576 Android15 平台为例,来实现内置第三方应用作为系统HOME 程序;
- 这里面涉及到RK平台内置相关的几个知识点,整理出来,方便后续开发;
一、需求-场景
客户有自己的LAUNCHER,现在要用客户的LAUNCHER 作为HOME要应用启动程序。
场景:
大量的定制产品,本身有自己的LAUNCHER 程序的,现在要用客户的HOME 程序来作为系统默认的HOEM 程序。
二、参考资料
MTK平台-内置应用作为系统Launcher 这是之前MTK为例,详细说明了第三方作为系统LAUNCHER 的一个案例。
可以参考:
- 一些思想、方法,比如都需要将系统默认的Launcher3 去HOME属性
- 既然是内置,那么如何内置,RK平台和MTK 两个完全不一样的,需要对比看看
以下提供其它部分参考资料,方便在不明白的时候可以查阅资料,在实现需求过程中,每一步要怎么实现。
- MTK内置第三方APP-卸载不可卸载-签名问题 : MTK平台内置APK基本知识,搞清楚 如何内置apk、给不同签名、是否可卸载等。
- Android系统多人协同开发-源码管理篇二 :搞清楚源码管理思路,为什么要这个干。公共代码、分支代码区别,然后拷贝资源到公共代码用于编译的原因。
- MTK-Android13-实现拷贝预置资源到vendor分区下 : 这是关联的知识点,如果有相关资源拷贝,这个知识点是少不了的。
- MTK平台 Android12-Android13 默认搜狗输入法 : 之前一个案例,内置一个apk 需要的步骤
- MTK-Android12_13-显示在其它应用的上层功能默认 特殊权限举例说明
三、内置应用作为系统LAUNCHER-HOME程序
这里以RK3576 为例,来说明内置步骤
1、默认Launcher去掉HOME属性
就是把系统默认的Launcher3 的HOME属性去掉。 这个根据实际项目情况,配置的Launcher 不一样,源码去掉的位置也不一样了。
路径:\packages\apps\Launcher3\quickstep\AndroidManifest-launcher.xml
把 <category android:name="android.intent.category.HOME" /> 配置拿出来,去掉。

2、内置应用到不可卸载区
在RK 源码目录中:\device\rockchip\rk3576\rk3576_u\preinstall\ 放置自己的HOME 应用程序,如下:
放置内置的应用apk 软件

配置编译脚本-Android.mk
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := YuShi_D_OS_1.0_20251202
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/bundled_persist-app
LOCAL_SRC_FILES := $(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
LOCAL_DONT_CHECK_MODULE := true
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_JNI_SHARED_LIBRARIES_ABI := arm64
LOCAL_PREBUILT_JNI_LIBS := \
lib/arm64/libmmkv.so\
lib/arm64/libBugly_Native.so\
include $(BUILD_PREBUILT)
配置库文件

3、默认授权-针对第三方应用无systemuid-自动授权
比如如下,第三方应用涉及到需要权限,作为系统Launcher后,需要自动给应用授权的 。比如如下,没有默认授权,应员工起来之后就是需要各种授权,影响体验了。

那么就默认授权一次吧:
/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java

填写自己的包名,主动调用一次:对于 输入法一定是需要默认授权的。
四、相关知识点 - preinstall-preinstall_del_forever-preinstall_del
在定制客化产品中,对于RK平台,也都有预装apk的,有内置需求的不同要求,如下;
- 应用可以卸载
- 应用可以卸载 但是恢复出厂设置后要求可恢复
- 应用不可卸载
所以不同的应用类型和客户不同的需求类型有对应的预置方式。
不同预置方式 -对比说明
| 特性维度 | preinstall | preinstall_del_forever | preinstall_del |
|---|---|---|---|
| 中文含义 | 不可卸载预装 | 可卸载预装 | 可卸载但可恢复预装 |
| 用户权限 | 不可卸载(无卸载按钮) | 可正常卸载(如普通应用) | 可正常卸载 |
| 恢复机制 | 恢复出厂设置依旧存在 | 恢复出厂设置不再出现(已“永久删除”) | 恢复出厂设置会重新出现 |
| 应用性质 | 系统核心应用、厂商关键服务 | 纯粹的商业合作第三方应用 | 重要的合作或推荐应用 |
| 存储位置 | 通常安装在/system/app或/system/priv-app(系统分区) | 首次开机后安装到/data/app(用户数据分区),卸载后即删除。 | 安装包在系统分区,首次安装到用户分区,卸载后包仍在,恢复出厂时重装。 |
不同预置方式-小结
| 文件夹 | 对厂商/渠道的价值 | 对用户的体验 |
|---|---|---|
| preinstall | 固化核心服务与生态,保障基础体验和商业控制。 | 负面为主(无法移除的累赘),但部分核心应用有必要。 |
| preinstall_del_forever | 实现预装收入,同时遵守“可卸载”的合规要求,模式简单。 | 相对友好,给予用户清理权限。 |
| preinstall_del | 在获得预装收入的同时,确保该应用在设备生命周期内长期存在,最大化后续价值。 | 较为反感,感觉应用“阴魂不散”,剥夺了完全清理设备的自由。 |
五、资源配置-配置文件的思考
做过MTK 或者 阅读过我相关MTK 内置文章或者其它文章,对于 新增应用、新增属性 在哪个文件里面新增,之前都有相关介绍的。 其实换一个平台RK ,到底都是一样的,系统都有相关的部分参考。
这里把知识点总结出来,无外乎三个目的:
- 方便更加高效的配置自己的 各种类型的应用apk
- 添加、修改、新增 一个系统属性更加方便
- 添加各种库文件、拷贝 更加高效、方便
1、 添加属性
/device/rockchip/rk3576/rk3576_u/rk3576_u.mk
如下:


2、内置应用配置
上面已经讲解了内置不同类型应用方式,创建不同的文件夹,放到不同文件夹下即可:如下:

现在有个问题,你的应用可能涉及到库文件、等,那么就需要配置文件
配置文件preinstall:preinstall.mk

配置文件preinstall_del:preinstall.mk

配置文件preinstall_del_forever:preinstall.mk
按照如上经验,按需配置即可

3、拷贝脚本配置
如开机动画、脚本、各种文件拷贝:
路径:\device\rockchip\common\device.mk
如下看部分内容配置:多么属性的脚本内容呀

4、开机动画-logo配置
开机动画bootanimation.zip 配置
如上已经说明了属性配置 ,里面就有开机动画的配置,如下:
所以看机动画路径:\device\rockchip\common\bootanimation.zip

uboot-kernel Logo 配置
这里直接给结论:/kernel-6.1/logo.bmp 和 /kernel-6.1/logo_kernel.bmp 如下所示: 
总结
- 这里以RK平台3576 Android15 为例,内置HOME程序涉及到的知识点,对比MTK 看看,项目中常见的一个需求,这里小结。
- 内置应用,特别是第三方应用、输入法内置一定涉及到权限默认的,这也是一个特别重要的知识点
- 对于RK平台不同的内置方案,按客户需求实际配置
- 对于配置文件:拷贝、开机动画、开机LOGO 、属性配置 等常规的需求开发,这里也关联性进行了小结
- 这里以RK3576-Android12 为例,其实RK 平台,其它Android版本 的配置方式、内置apk 方法 基本一直,路径不一致而已,具有一定的参考意义。
3021

被折叠的 条评论
为什么被折叠?



