StellarProvider 与权限声明:AndroidManifest 的四行关键配置
Provider 是应用与服务的握手点:服务启动时通过它找到应用、确认 UID。配置必须逐字对齐,否则初始化阶段就会失败。
完整配置
<application>
<!-- 其他组件 -->
<provider
android:name="roro.stellar.StellarProvider"
android:authorities="${applicationId}.stellar"
android:exported="true"
android:multiprocess="false"
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
<meta-data
android:name="roro.stellar.permissions"
android:value="stellar" />
</application>
四个属性为什么是这样
| 属性 | 要求 | 原因 |
|---|---|---|
authorities | 必须是 ${applicationId}.stellar 格式 | 服务按这个约定查找应用的 Provider |
exported | 必须为 true | 服务进程要访问该 Provider |
multiprocess | 必须为 false | 服务只在应用启动时获取 UID |
permission | INTERACT_ACROSS_USERS_FULL | 限制只有 Shell 和应用本身可访问 |
权限 meta-data:基础与跟随启动
基础声明只带 stellar(核心 API 访问权限)。如果希望应用在服务启动时自动被唤醒,把值改为逗号分隔的列表:
<meta-data
android:name="roro.stellar.permissions"
android:value="stellar,follow_stellar_startup" />
声明了 follow_stellar_startup 之后,还需要在用户侧放行伴随启动权限、并让应用正确响应服务启动通知,完整链路见服务伴随启动。
对照:Shizuku 应用的差异
存量 Shizuku 应用清单里配的是 ShizukuProvider——那正是兼容层识别应用的标记,两边不要混配。新应用按本页写法来,权限体系见细分权限。
注意:规范限制,本页代码中的
<版本号>等占位符替换后使用;属性名以仓库内最新接入指南为准。