AOSP中添加应用遇报错:无法创建应用SecurityException求助
AOSP应用启动SecurityException崩溃排查方案
常见原因及修复步骤
签名权限配置问题
AOSP系统应用必须匹配对应签名级别,即使确认mk/bp文件配置,也需再核对:- 检查Android.mk中是否正确设置
LOCAL_CERTIFICATE := platform,或Android.bp中设置certificate: "platform",,注意拼写、大小写不能出错。 - 确认应用放置目录:priv级应用需放在
system/priv-app或vendor/<oem>/priv-app,普通应用放在system/app,目录错误会导致签名权限不生效。
- 检查Android.mk中是否正确设置
系统权限声明遗漏
- 若应用使用系统级特殊权限(如
WRITE_SECURE_SETTINGS),仅在AndroidManifest.xml声明不够,需在etc/permissions目录下创建privapp-permissions-<你的包名>.xml,示例内容:
同时在mk/bp中添加该文件的编译拷贝规则,比如mk文件:<privapp-permissions package="com.your.package"> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> <permission name="android.permission.MANAGE_USERS"/> </privapp-permissions>LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions LOCAL_SRC_FILES := privapp-permissions-com.your.package.xml LOCAL_MODULE := privapp-permissions-com.your.package.xml include $(BUILD_PREBUILT)
- 若应用使用系统级特殊权限(如
SELinux策略限制
若Logcat中伴随avc: denied日志,说明SELinux拦截了操作:- 提取完整avc报错信息,定位被阻止的操作、上下文标签。
- 在
device/<vendor>/<device>/sepolicy目录下添加对应策略文件,比如your_app.te:allow your_app system_settings_file:file write; - 将策略文件加入设备sepolicy的编译规则中,确保生效。
进程权限级别配置
若应用需以系统进程身份运行,需在Manifest的application标签添加android:sharedUserId="android.uid.system",该配置必须配合平台签名使用,且不可随意修改。
额外排查技巧
- 执行
adb shell dumpsys package com.your.package,查看应用的签名匹配状态、权限授予情况。 - 导出完整Logcat日志,定位
SecurityException的完整栈轨迹,明确是权限、系统服务调用还是文件访问触发的异常。
内容的提问来源于stack exchange,提问作者user14349738
相关产品推荐
相关产品推荐

