Expo React Native安卓应用因通讯录问题遭Google Play下架求助
Expo托管React Native应用Google Play下架排查与合规修复方案
一、排查哪个依赖请求了READ_CONTACTS权限
- 生成临时安卓工程文件排查:执行
expo prebuild --no-install,在生成的android/app/src/main/AndroidManifest.xml中搜索READ_CONTACTS,查看权限声明旁的注释(通常会标注引入该权限的依赖包)。 - 检查依赖树:
- 先核对
package.json里的直接依赖,排查是否有expo-contacts、react-native-contacts这类明确关联通讯录的包,若未使用直接卸载。 - 用
npm ls或yarn list命令遍历所有依赖,比如执行npm ls expo-contacts,确认是否有间接依赖偷偷引入了通讯录权限。
- 先核对
- 代码层面验证:在应用中临时添加以下代码,运行后查看控制台输出,确认是否存在通讯录权限请求:
import * as Permissions from 'expo-permissions'; useEffect(() => { const checkPerm = async () => { const status = await Permissions.getAsync(Permissions.CONTACTS); console.log('通讯录权限状态:', status); }; checkPerm(); }, []);
二、修改应用以合规并重新上架
- 移除冗余依赖:定位到请求权限的依赖后,若无需其功能,直接执行
npm uninstall <依赖包名>或yarn remove <依赖包名>,同步更新package.json。 - 强制屏蔽权限:在
app.json的安卓配置中添加blockedPermissions字段,阻止依赖自动注入READ_CONTACTS权限:"expo": { "android": { "blockedPermissions": ["android.permission.READ_CONTACTS"], // 其他安卓配置项 } } - 清理权限声明:确保
app.json的expo.android.permissions数组中没有READ_CONTACTS,若之前手动添加过需删除。 - 重新构建应用:执行
expo build:android生成合规安装包,查看构建日志确认READ_CONTACTS权限已被移除。 - 提交申诉与上架:
- 将新安装包提交至Google Play控制台。
- 在申诉说明中明确:应用未使用通讯录功能,已排查并移除所有涉及READ_CONTACTS权限的依赖,同时通过Expo配置强制屏蔽该权限,附上修改后的
app.json和package.json截图作为证据。
- 更新隐私政策:若之前隐私政策提及过通讯录相关内容,立即删除对应段落,确保声明与实际数据收集行为一致。
内容的提问来源于stack exchange,提问作者Habibur Rahman
相关产品推荐
相关产品推荐

