如何解决移除play-services-safetynet警告并完成应用发布?
解决Play SafetyNet警告及应用审核停滞问题
一、定位隐藏的SafetyNet依赖来源
你已经排除了firebase-auth的SafetyNet,但仍有第三方依赖可能偷偷引入play-services-safetynet:18.0.0。先在Android项目目录下执行命令排查完整依赖树:
./gradlew app:dependencies
搜索safetynet关键词,找到具体引入该依赖的包。从你的Flutter依赖清单看,firebase_app_check: ^0.0.6+18是高风险来源——旧版本Firebase App Check默认依赖SafetyNet Attestation,而非Play Integrity。
二、彻底移除SafetyNet并完成Play Integrity迁移
升级Firebase核心依赖
把firebase_app_check及其他Firebase依赖升级到最新稳定版,新版App Check默认适配Play Integrity,同时同步升级Firebase BOM版本避免冲突:# pubspec.yaml 更新部分依赖 firebase_core: ^2.15.0 firebase_auth: ^4.10.0 cloud_firestore: ^4.8.3 firebase_messaging: ^14.6.5 firebase_app_check: ^0.2.1+10全局排除SafetyNet依赖
在android/app/build.gradle中添加全局排除规则,确保没有任何依赖能引入SafetyNet:dependencies { // 全局排除play-services-safetynet configurations.all { exclude group: 'com.google.android.gms', module: 'play-services-safetynet' } implementation 'androidx.appcompat:appcompat:1.0.2' testImplementation 'junit:junit:4.12' implementation platform('com.google.firebase:firebase-bom:32.3.1') // 升级至最新BOM implementation 'com.google.firebase:firebase-core' implementation 'com.google.firebase:firebase-auth' implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.android.play:integrity:1.1.0' // 升级Play Integrity版本 // 其他原有依赖... }替换代码中的SafetyNet调用逻辑
检查Flutter代码中Firebase App Check的初始化代码,将旧的SafetyNet提供者替换为Play Integrity:// 正确的Firebase App Check初始化代码 await FirebaseAppCheck.instance.activate( webRecaptchaSiteKey: '你的Web端reCAPTCHA密钥', androidProvider: AndroidProvider.playIntegrity, // 此处指定为Play Integrity );
三、清理缓存并重新构建
执行以下命令彻底清理旧依赖缓存,确保新配置生效:
flutter clean cd android && ./gradlew clean cd .. && flutter pub get flutter build appbundle --release
四、推进审核进度
完成上述操作后若仍卡在审核,直接在Play Console的帮助与支持提交工单:
- 明确说明已完全迁移至Play Integrity API,移除所有SafetyNet相关依赖
- 附上
./gradlew app:dependencies的输出截图(证明无play-services-safetynet依赖) - 声明应用未调用任何SafetyNet相关API
内容的提问来源于stack exchange,提问作者Doing Things Occasionally
相关产品推荐
相关产品推荐

