Rk-内置应用作为系统Launcher-内置APK-拷贝文件-替换开机动画

这里通过RK平台内置HOME 程序来讲解RK平台内置应用相关知识点

文章目录


前言

  • 以RK576 Android15 平台为例,来实现内置第三方应用作为系统HOME 程序;
  • 这里面涉及到RK平台内置相关的几个知识点,整理出来,方便后续开发;

一、需求-场景

客户有自己的LAUNCHER,现在要用客户的LAUNCHER 作为HOME要应用启动程序。

场景:

大量的定制产品,本身有自己的LAUNCHER 程序的,现在要用客户的HOME 程序来作为系统默认的HOEM 程序。

二、参考资料

MTK平台-内置应用作为系统Launcher 这是之前MTK为例,详细说明了第三方作为系统LAUNCHER 的一个案例。

可以参考:

  • 一些思想、方法,比如都需要将系统默认的Launcher3 去HOME属性
  • 既然是内置,那么如何内置,RK平台和MTK 两个完全不一样的,需要对比看看

以下提供其它部分参考资料,方便在不明白的时候可以查阅资料,在实现需求过程中,每一步要怎么实现。

三、内置应用作为系统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

java 复制代码
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后,需要自动给应用授权的 。比如如下,没有默认授权,应员工起来之后就是需要各种授权,影响体验了。

那么就默认授权一次吧:

java 复制代码
/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、 添加属性

java 复制代码
/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

这里直接给结论:/kernel-6.1/logo.bmp 和 /kernel-6.1/logo_kernel.bmp 如下所示:

总结

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