React Native项目需保留minSdkVersion19,如何解决版本冲突报错?
问题描述
我的React Native应用配置
android/app/build.gradle:
defaultConfig { minSdkVersion 19 targetSdkVersion 30 compileSdkVersion 30 buildToolsVersion '30.0.3' multiDexEnabled true missingDimensionStrategy 'react-native-camera', 'mlkit' missingDimensionStrategy 'react-native-camera', 'general' }
gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
报错信息
minSdkVersion 19 cannot be smaller than version 21 declared in library [com.facebook.react:react-native:0.71.0-rc.0]
由于大量用户仍在使用低版本Android系统,必须支持minSdkVersion 19,需在保留该版本的前提下解决报错。
解决方案
- 强制覆盖依赖库的minSdkVersion:在
android/build.gradle的allprojects块中添加resolutionStrategy,强制统一所有依赖库的minSdkVersion为19。修改后的代码如下:
allprojects { repositories { // 保留原有仓库配置 } configurations.all { resolutionStrategy { // 遍历所有模块,强制修改minSdk元数据 eachModule { module -> module.metaData { if (it.containsKey('minSdkVersion')) { it.put('minSdkVersion', 19) } } } // 锁定react-native版本,避免依赖冲突 force 'com.facebook.react:react-native:0.71.0-rc.0' } } }
完善MultiDex低版本适配:虽然已开启
multiDexEnabled true,需确保API 19设备上的MultiDex配置完整:- 在
android/app/src/main/java/[你的包名]/MainApplication.java中,将继承类改为MultiDexApplication:public class MainApplication extends MultiDexApplication implements ReactApplication { // 原有代码 } - 若使用自定义Application类,需在
attachBaseContext方法中添加初始化代码:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 在
降级React Native版本:React Native 0.71.x官方最低要求minSdk 21,若上述方法无效,可降级到0.69.x或更低版本——这些版本原生支持minSdk 19。降级后需同步调整其他依赖库版本,避免版本不兼容。
排查冲突依赖:执行
./gradlew app:dependencies命令查看完整依赖树,找出除react-native外其他限制minSdk的库,针对性处理(如降级对应库版本或同样强制覆盖其minSdk配置)。
内容的提问来源于stack exchange,提问作者ThinkAndCode
相关产品推荐
相关产品推荐

