应用预装¶
本章节介绍如何将应用预装为系统应用,设备启动后即可使用,无需手动安装。
Warning
T113 系列主板不支持安卓系统。 H618 系列主板安卓系统为 armeabi-v7a 架构,其他系列均为 arm64 架构。 armeabi-v7a 系统不能安装 arm64 的应用 ! arm64 系统向下兼容 armeabi-v7a 应用。
预装路径¶
根据对应的 SDK 源码,查看对应编译配置 .mk 文件以及应用预装路径。
// rk-android13.0
device/rockchip/common/device.mk
vendor/rockchip/common/apps/
// rk-android14.0
device/rockchip/common/device.mk
vendor/rockchip/common/apps/
// h618-android12.0
vendor/aw/homlet/homlet.mk
vendor/aw/public/prebuild/
// t527-android13.0
device/softwinner/saturn/t527-demo/device-common.mk
vendor/aw/public/prebuild/apk/
// a133-android10.0-v2.0
android/device/softwinner/ceres-c3/ceres_c3.mk
android/vendor/aw/homlet/prebuild/
// a733-android13.0
device/softwinner/jupiter/a733-demo-aiot/device-common.mk
vendor/aw/public/prebuild/apk/
预装示例¶
以 RK3568 K1 为例,预装 TestLauncher.apk 应用。
1. 在应用预装路径下创建 TestLauncher 自定义目录,存放应用。
2. 编写 Android.mk 或 Android.bp 编译构建脚本。
3. 在编译配置 .mk 文件对应的文件末尾添加模块 PRODUCT_PACKAGES 声明。
Note
模块名称对应 Android.mk 中的 LOCAL_MODULE := 或对应 Android.bp 中的 name:。
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -65,6 +65,9 @@ PRODUCT_PACKAGES += \
fsck.f2fs \
mkfs.f2fs \
fsck_f2fs
PRODUCT_PACKAGES += \
vndservicemanager
+PRODUCT_PACKAGES += \
+ TestLauncher
+
Android.mk 示例¶
以 TestLauncher.apk 应用为例,编写的 Android.mk 构建脚本如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_MODULE := TestLauncher
LOCAL_SRC_FILES := TestLauncher.apk
include $(BUILD_PREBUILT)
Note
参数解析:
LOCAL_PATH := $(call my-dir):设置当前模块的路径。
include $(CLEAR_VARS):清除之前定义的变量,避免干扰当前模块。
LOCAL_MODULE_TAGS := optional:标记为可选模块。
LOCAL_MODULE_CLASS := APPS:指定模块类别为应用。
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX):使用标准 APK 后缀。
LOCAL_CERTIFICATE := platform:使用平台签名。
LOCAL_MODULE := TestLauncher:模块名称。
LOCAL_SRC_FILES := TestLauncher.apk:指定 APK 文件路径。
include $(BUILD_PREBUILT):使用预编译构建方式。
LOCAL_PRIVILEGED_MODULE := true:将应用安装到 /system/priv-app 目录,获得更多系统权限。
Android.bp 示例¶
以 TestLauncher.apk 应用为例,编写的 Android.bp 构建脚本如下
android_app_import {
name: "TestLauncher",
apk: "TestLauncher.apk",
certificate: "platform",
dex_preopt: {
enabled: true,
},
privileged: true,
enforce_uses_libs: false,
}
Note
命令解析:
name:模块名称,与 Android.mk 的 LOCAL_MODULE 对应。
apk:APK 文件路径,相对于 Android.bp 所在目录。
certificate:签名方式。作为桌面应用必须使用 "platform" 平台签名,"presigned" 保留原签名仅适用于普通应用。
dex_preopt:是否对 APK 进行 dex 预优化,enabled: true 可加快首次启动速度。
privileged:是否安装到 /system/priv-app,对应 LOCAL_PRIVILEGED_MODULE。桌面应用必须设为 true。
enforce_uses_libs:是否强制检查 APK 声明的 shared library。