AOSP 13自定义设置向导配置问题:重复ID与权限缺失求助
修复AOSP 13中GrapheneOS-SetupWizard的配置问题
针对你遇到的日志错误,分三个核心问题逐一给出修复方案:
1. 解决共享UID重复问题
日志里的Adding duplicate shared id: 1000 name=org.lineageos.setupwizard,是因为SetupWizard的AndroidManifest.xml使用了系统默认UID(1000),和其他系统应用冲突。
修复步骤:
- 打开GrapheneOS-SetupWizard的
AndroidManifest.xml,找到根节点manifest的sharedUserId属性,替换为专属系统级UID,比如android.uid.setupwizard(确保系统未占用该UID):<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.lineageos.setupwizard" android:sharedUserId="android.uid.setupwizard"> - 检查设备配置文件
device/{vendor}/{device}/manifest.xml或system_ext/etc/permissions下的文件,确认没有其他应用声明相同的sharedUserId和包名。
2. 让PackageManager识别为设置向导
日志里的There should probably be exactly one setup wizard; found 0: matches=[],说明系统未将该应用识别为默认设置向导,需补充配置标记。
修复步骤:
- 在SetupWizard主Activity的
intent-filter中添加设置向导专属分类和标记:<activity android:name=".SetupWizardActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> <!-- 添加设置向导专属分类 --> <category android:name="android.intent.category.SETUP_WIZARD" /> </intent-filter> <!-- 标记为完整设置向导模式 --> <meta-data android:name="android.setupwizard.mode" android:value="FULL_SETUP" /> </activity> - 确保应用被标记为privapp:检查
system_ext/etc/permissions/privapp_whitelist_org.lineageos.setupwizard.xml,包名需和SetupWizard一致:<privapp-permissions package="org.lineageos.setupwizard"> <!-- 按需添加SetupWizard需要的系统权限 --> </privapp-permissions> - 在设备的
device.mk或product.mk中添加编译配置,确保应用被编译为系统特权应用:PRODUCT_PACKAGES += GrapheneOS-SetupWizard PRODUCT_PRIVILEGED_APP_PACKAGES += GrapheneOS-SetupWizard
3. 解决权限缺失问题
日志里的Permission not found: com.google.android.setupwizard.SETUP_COMPAT_SERVICE,是因为GrapheneOS的SetupWizard引用了谷歌专属权限,而AOSP原生无该权限定义。
修复步骤:
- 打开SetupWizard的
AndroidManifest.xml,搜索并移除所有com.google.android.setupwizard.SETUP_COMPAT_SERVICE相关的权限声明:<!-- 删除或注释掉这类无效权限 --> <!-- <uses-permission android:name="com.google.android.setupwizard.SETUP_COMPAT_SERVICE" /> --> - 检查代码中是否有依赖该权限的服务调用,替换为AOSP原生服务或直接移除相关逻辑,确保只使用AOSP原生存在的系统权限(如
android.permission.MANAGE_USERS、android.permission.SET_TIME_ZONE等)。
验证步骤
- 重新编译AOSP并刷入设备,执行
adb shell pm list packages -s | grep setup确认应用已作为系统应用安装。 - 执行
adb shell dumpsys package org.lineageos.setupwizard,检查输出中的UID、权限、intent filter配置是否正确。 - 重启设备,观察设置向导是否正常启动。
内容的提问来源于stack exchange,提问作者frostSi
相关产品推荐
相关产品推荐

