上传App Bundle至Google Play Console遇Content Provider权限冲突
问题:上传App Bundle至Google Play Console时遭遇Provider权限冲突
上传时收到错误提示:
上传前请移除清单中的冲突项。以下内容提供器权限已被其他开发者占用:com.####.firebaseinitprovider, com.####.reactnativefirebaseappinitprovider。
自身AndroidManifest.xml未显式声明这些Provider,尝试添加自定义Provider后应用无法启动,使用的是RN Firebase库。
解决方案
1. 确认合并后的Manifest内容
RN Firebase会通过Manifest合并机制自动添加这些Provider,先查看最终生成的Manifest:
- 执行命令:
# macOS/Linux ./gradlew app:processDebugManifest # Windows gradlew.bat app:processDebugManifest - 打开路径
app/build/intermediates/manifests/full/debug/AndroidManifest.xml,找到冲突的FirebaseInitProvider和ReactNativeFirebaseAppInitProvider,确认它们的默认android:authorities值。
2. 覆盖冲突的Provider Authorities
在自己的AndroidManifest.xml中添加配置,强制替换为以应用包名为前缀的唯一值:
首先,在<manifest>标签顶部引入tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
然后在<application>标签内添加:
<!-- 替换FirebaseInitProvider的权限标识 --> <provider android:name="com.google.firebase.provider.FirebaseInitProvider" android:authorities="${applicationId}.firebaseinitprovider" android:exported="false" tools:replace="android:authorities" /> <!-- 替换ReactNativeFirebaseAppInitProvider的权限标识 --> <provider android:name="io.invertase.firebase.app.ReactNativeFirebaseAppInitProvider" android:authorities="${applicationId}.reactnativefirebaseappinitprovider" android:exported="false" tools:replace="android:authorities" />
${applicationId}会自动替换为你在build.gradle中设置的包名,确保权限标识唯一,避免和其他应用冲突。
3. 清理并重新构建
执行命令清理缓存并生成新的App Bundle:
# macOS/Linux ./gradlew clean ./gradlew bundleRelease # Windows gradlew.bat clean gradlew.bat bundleRelease
错误原因说明
之前添加自定义Provider时使用了不存在的类名com.example.firebaseinitprovider,导致应用启动时找不到该类引发崩溃。正确的做法是直接覆盖RN Firebase自动添加的Provider的权限标识,而非自定义新的Provider。
内容的提问来源于stack exchange,提问作者Vito Marseglia
相关产品推荐
相关产品推荐

