预置系统应用

仓库 cockpit/core/platform/prebuilts/packages

vendor/micar/prebuilts/packages/manifest.xml 配置Maven版本, 版本号revision,命名建议: 1.x.x ,例如:1.0.1

Xiaomi Maven https://pkgs.d.xiaomi.net/

<manifest>
<project type="apk" group="com.mi.car" name="ScreenRecorder" revision="1.0.1"/>
</manifest>

vendor/micar/prebuilts/packages/Android.mk 配置编译脚本

include $(CLEAR_VARS)
LOCAL_MODULE := CarScreenRecorder
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true
LOCAL_SYSTEM_EXT_MODULE := true
LOCAL_SRC_FILES := apps/ScreenRecorder.apk
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.mi.car.screenrecorder
LOCAL_MODULE_TARGET_ARCH := $(my_src_arch)
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)

Android 版本>13,签名使用应该自己签名需要加上下面的代码:

LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/$(LOCAL_MODULE).apk

预置要求

  1. 应用的targetSdkVersion>= 34
  2. Native So库,只需要保留arm64-v8a一份
  3. 禁止使用android:persistent=“true” 、coreApp=“true”、android:sharedUserId=“android.uid.system”
  4. 安全要求,对外暴露的组件需要加权限限制,避免三方应用调用
  5. 非必要,不要加开启自启广播,影响开机速度,如有需求可申请
  6. 非必要不常驻,如有需求特殊申请审核,需要对内存、CPU做严格限制
  7. 日志,禁止高频日志,日志缓冲区大小有限

预置应用权限

PrivApp特许权限配置

预装验收

系统测验收清单:应用预装验收自测

包体积优化最佳实践:

APK包大小优化实践

配置安装用户

Android 车载系统默认是多用户,前台用户不是user 0 ,可以通过cmd activity get-current-user 命令查询当前用户。

如果我们想把应用只安装在user 0或其他用户,可以修改系统的配置,默认不需要配置。

device/micar/common/preinstalled-packages-product-micar-common.xml

<config>
    <install-in-user-type package="com.android.systemui">
        <!-- user 0 -->
        <install-in user-type="SYSTEM" />
        <!-- others user -->
        <install-in user-type="FULL" />
    </install-in-user-type>
</config>