You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14 AOSP集成预编译APK:设为设备管理员及预授权权限

针对Android 14预编译APK集成、设备管理员配置及权限预授予的解决方案

1. 预编译APK集成最优方案

针对特权应用(需要设备管理员权限),正确的集成步骤如下,解决你设置LOCAL_PRIVILEGED_MODULE=true后应用不显示的问题:

步骤1:放置APK与编写构建脚本

将预编译APK放入packages/apps/YourApp目录,在该目录下创建Android.mk,内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := YourAppName  # 与APK文件名(不含.apk)一致
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true  # 标记为特权应用
LOCAL_CERTIFICATE := platform  # 核心:特权应用必须使用平台签名,若APK已用平台密钥签名则直接用,否则构建时会自动重新签名
LOCAL_DEX_PREOPT := false  # 预编译APK无需DEX优化,避免与原有优化冲突

include $(BUILD_PREBUILT)

步骤2:添加到构建产物

在build/target/product/handheld_system.mk或你的设备专属device.mk中,将应用名称加入PRODUCT_PACKAGES:

PRODUCT_PACKAGES += YourAppName

问题排查(之前应用不显示的原因)

  • 签名不匹配:特权应用必须用平台签名,未设置LOCAL_CERTIFICATE := platform会导致安装失败;
  • DEX优化冲突:预编译APK自带优化后的DEX,开启LOCAL_DEX_PREOPT会引发构建错误;
  • 模块名称不一致:LOCAL_MODULE必须与APK文件名、PRODUCT_PACKAGES中的名称完全一致。

2. 设备管理员与所有者配置

需分两步完成,且仅能在首次开机前通过构建配置设置,无法在开机后修改(除非恢复出厂):

步骤1:配置设备管理员

  1. 确认应用的设备管理员接收器完整类名(如com.your.app.DeviceAdminReceiver);
  2. 在device/<oem>/<device>/etc目录下创建device_admin_policy.xml,定义管理员权限:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <limit-password />
        <force-lock />
        <wipe-data />
        <!-- 添加应用需要的其他设备管理员权限 -->
    </uses-policies>
</device-admin>
  1. 在设备device.mk中添加配置:
# 拷贝管理员策略文件
PRODUCT_COPY_FILES += \
    device/<oem>/<device>/etc/device_admin_policy.xml:system/etc/device_policies/com.your.app.xml

# 设置默认设备管理员
PRODUCT_PRODUCT_PROPERTIES += \
    ro.device_admin.component=com.your.app/com.your.app.DeviceAdminReceiver

步骤2:设置设备所有者

在设备device.mk中添加属性配置,设备所有者必须是已配置的设备管理员:

PRODUCT_PRODUCT_PROPERTIES += \
    ro.device_owner.component=com.your.app/com.your.app.DeviceAdminReceiver

3. Android 14权限预授予步骤

Android 14对权限预授予的限制更严格,需按权限类型分别配置:

普通危险权限(如CAMERA、ACCESS_FINE_LOCATION)

  1. 在device/<oem>/<device>/etc/permissions目录下创建privapp-permissions-your_app.xml:
<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.your.app">
        <!-- Android 14新增的媒体权限 -->
        <permission name="android.permission.READ_MEDIA_IMAGES" />
        <permission name="android.permission.READ_MEDIA_VIDEO" />
        <!-- 传统危险权限 -->
        <permission name="android.permission.CAMERA" />
        <permission name="android.permission.ACCESS_FINE_LOCATION" />
        <!-- 系统特权权限 -->
        <permission name="android.permission.MANAGE_DEVICE_ADMINS" />
    </privapp-permissions>
</permissions>
  1. 在设备device.mk中拷贝该文件:
PRODUCT_COPY_FILES += \
    device/<oem>/<device>/etc/permissions/privapp-permissions-your_app.xml:system/etc/permissions/privapp-permissions-your_app.xml

特殊权限(如SYSTEM_ALERT_WINDOW、WRITE_SETTINGS)

需通过系统属性预授予,在device.mk中添加:

PRODUCT_PRODUCT_PROPERTIES += \
    persist.sys.appops.com.your.app.SYSTEM_ALERT_WINDOW=allow \
    persist.sys.appops.com.your.app.WRITE_SETTINGS=allow

4. Android 14专属注意事项

  • 签名验证强化:特权应用必须使用平台签名或系统签名组签名,普通签名的APK会被拒绝安装;
  • 权限名称变更:存储权限拆分为READ_MEDIA_IMAGES、READ_MEDIA_VIDEO等,预授予时必须使用新权限名,旧的READ_EXTERNAL_STORAGE已废弃;
  • 设备所有者限制:Android 14禁止通过ADB设置设备所有者(调试版本除外),必须通过构建时的属性配置完成;
  • 隐私沙箱影响:若应用涉及广告ID等隐私权限,需额外配置豁免规则,但特权应用通常不受限制;
  • 预编译APK兼容性:Android 14默认开启严格的DEX验证,预编译APK需确保目标SDK版本适配Android 14,否则可能触发安装失败。

内容的提问来源于stack exchange,提问作者Hemanth Chowdary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:16:04