AOSP集成应用:无需平台签名默认授予REQUEST_INSTALL_PACKAGES权限咨询
解决AOSP集成应用默认授予REQUEST_INSTALL_PACKAGES权限的方法
不用重新用平台签名构建APK的话,有这几种可行方案:
1. 使用Priv-App权限配置文件(适用于预装在system/priv-app的应用)
如果你的应用是放在AOSP的system/priv-app目录下的预装应用,可以通过添加专属权限配置文件实现默认授权:
- 在AOSP源码的
frameworks/base/etc/permissions/目录下,创建名为privapp-permissions-<你的应用包名>.xml的文件 - 文件内容示例:
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.your.app.package"> <permission name="android.permission.REQUEST_INSTALL_PACKAGES" /> </privapp-permissions> </permissions>
- 编译AOSP时,这个配置会被系统识别,默认给对应包名的应用授予该权限。
2. 修改系统默认权限配置文件
如果应用是预装在system/app目录下,可通过修改default-permissions.xml来配置:
- 找到AOSP源码中的
frameworks/base/etc/default-permissions.xml - 在文件中添加针对你应用包名的权限声明:
<default-permission package="com.your.app.package"> <permission name="android.permission.REQUEST_INSTALL_PACKAGES" granted="true" /> </default-permission>
- 注意:这个文件是全局默认权限配置,修改后编译系统镜像即可生效。
3. 利用AOSP的产品定制层添加配置
如果是在产品定制层(比如device/<厂商>/<机型>或product/<产品>目录),可以在对应路径下的etc/permissions/目录添加权限配置文件:
- 创建
privapp-permissions-<你的应用包名>.xml(如果是priv-app)或直接在现有配置文件中添加权限声明,内容和第一种方法一致。 - 这种方式更适合产品定制场景,不会改动framework层源码。
注意事项
- 以上方法都不需要重新构建APK,只需修改AOSP系统层配置后重新编译系统镜像即可。
- 确保你的应用确实是预装在AOSP的系统分区(system/priv-app或system/app),否则这些配置不会生效。
- REQUEST_INSTALL_PACKAGES属于危险权限,系统默认授予后,应用无需再向用户请求该权限。
内容的提问来源于stack exchange,提问作者Stuart
相关产品推荐
相关产品推荐

