You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:13:13