Android13预置第三方应用

💡 原文中文,约5100字,阅读约需12分钟。
📝

内容提要

该文章介绍了在Android系统中预置第三方应用程序的方法,包括无源码和有源码的情况。无源码时,需将APK文件放置在特定目录并创建配置文件;有源码时,需将源代码拷贝到特定目录并增加配置文件。文章还介绍了不同预置目录的特点和权限,并提到了处理应用程序权限问题的方法。

🔎

延伸解读

预置目录选择:权限与可卸载性的权衡

文章指出,不同预置目录在权限和可卸载性上差异显著。system/app 和 system/priv-app 下的应用不可卸载,且 priv-app 权限更高,适合核心应用;system/preloadapp 和 data/app 下的应用可卸载,但 data/app 在恢复出厂设置后不会保留。此外,vendor、product 等分区预置的应用需通过 CTS 的 API 合规检查。开发者应根据应用重要性和权限需求选择目录。

签名配置:presigned 与 certificate 的配合

对于无源码 APK,Android.bp 中的 presigned 字段决定是否保留原签名。若设为 true,则 APK 签名不变;若需重新签名,可通过 certificate 指定签名方式,如 platform、testkey 等。文章示例中同时使用 presigned: true 和 certificate 字段,并提示可用 keytool 查看 APK 签名。正确配置签名是确保应用权限和系统集成的关键。

特权应用权限配置:避免开机失败

将应用预置到 /system/priv-app 时,必须在同分区的 privapp-permissions.xml 中声明其请求的特权权限,否则可能导致无法开机。文章示例中,若权限配置不全,log 会输出警告,提示权限未在 allowlist 中。开发者需根据日志提示,在 frameworks/base/data/etc/privapp-permissions-platform.xml 中补充完整权限,确保应用正常运行。

❓

Q&A

如何在Android中预置无源码的第三方应用?

需将APK文件放置在特定目录并创建配置文件,如在/vendor/qcom/目录下创立thirdapps目录并拷贝APK。

有源码的情况下,如何预置第三方应用?

将源代码拷贝到特定目录,并增加Android.bp文件和相应的编译模块配置。

不同预置目录的特点是什么?

system/app不可卸载,system/priv-app权限高,system/preloadapp可卸载,data/app可卸载且恢复出厂后消失。

如何处理应用程序的权限问题?

需在privapp-permissions.xml中配置权限,否则应用无法正常运行。

Android.bp文件的作用是什么?

Android.bp文件定义了应用程序的基本信息和权限设置,确保应用正确编译和运行。

system/priv-app目录下的应用有什么特点?

该目录下的应用权限高于system/app,不推荐一般应用预置在此。

🏷️

标签

➡️

继续阅读