React Native Android合并Manifest报错求助:Fastlane打包遇组件工厂冲突
解决React Native Android Manifest合并冲突问题
这个问题本质是你的项目里同时混入了Android Support库和AndroidX库,导致两者的appComponentFactory属性冲突。咱们一步步来解决:
第一步:修改AndroidManifest.xml,添加冲突覆盖规则
首先要确保你的Manifest文件引入了tools命名空间,然后在<application>标签里添加覆盖规则:
- 打开
android/app/src/main/AndroidManifest.xml,在根<manifest>标签里添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.yourapp.package"> <!-- 替换成你的实际包名 -->
- 在
<application>标签里添加tools:replace属性,并指定AndroidX的ComponentFactory:
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme" tools:replace="android:appComponentFactory" android:appComponentFactory="androidx.core.app.CoreComponentFactory">
第二步:统一依赖库版本(二选一)
接下来需要解决依赖冲突的根源,有两种方案可选:
方案A:强制所有依赖使用Android Support库
如果暂时不想迁移到AndroidX,可以在app/build.gradle的android块下添加依赖强制规则,确保所有第三方依赖都使用Support库版本:
android { // 其他配置... configurations.all { resolutionStrategy { // 强制替换AndroidX的core库为Support库版本 force 'com.android.support:support-compat:28.0.0' force 'com.android.support:support-core-utils:28.0.0' } } }
方案B:迁移到AndroidX(推荐长期方案)
因为React Native后续版本全面转向AndroidX,迁移是更稳妥的选择:
- 在项目根目录的
gradle.properties文件中添加以下配置:
android.useAndroidX=true android.enableJetifier=true
- 修改
app/build.gradle中的Support依赖为AndroidX对应版本:
把原有的
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
替换成
implementation "androidx.appcompat:appcompat:1.0.0"
- 安装并运行Jetifier转换第三方依赖:
npm install --save-dev jetifier npx jetifier
第三步:清理缓存并重新构建
完成上述修改后,先清理构建缓存,避免旧缓存影响:
cd android ./gradlew clean cd ..
之后再重新运行你的Fastlane命令:
bundle exec fastlane dev
这样应该就能解决Manifest合并失败的问题了~
内容的提问来源于stack exchange,提问作者Skodsgn
相关产品推荐
相关产品推荐

