集成React Native时compileSdkVersion格式错误问题求助
解决React Native集成Android项目时react-native-restart的compileSdkVersion错误
问题原因
报错中出现的28是react-native-restart库内部safeExtGet方法的默认值,当项目根目录build.gradle的ext块未显式定义compileSdkVersion时,库会自动使用这个默认值,和你项目配置的31冲突,导致同步失败。
解决方法
方法1:在项目根build.gradle中显式配置ext参数
在项目根目录的build.gradle文件里,找到或新增ext代码块,添加对应版本参数,让依赖库能正确读取项目配置:
buildscript { ext { compileSdkVersion = 31 minSdkVersion = 26 targetSdkVersion = 31 } // 其他原有配置... }
这样react-native-restart里的safeExtGet('compileSdkVersion')就能正确获取到31,而非默认的28。
方法2:修改react-native-restart的build.gradle(需持久化补丁)
直接修改node_modules/react-native-restart/android/build.gradle中的编译版本配置,替换动态读取为固定值:
// 替换原代码 compileSdkVersion safeExtGet('compileSdkVersion') compileSdkVersion 31
为避免每次npm install后配置被覆盖,可使用patch-package生成持久化补丁:
- 安装依赖:
npm install patch-package --save-dev - 修改完文件后执行:
npx patch-package react-native-restart - 后续安装依赖时,补丁会自动应用。
方法3:升级react-native-restart到最新版本
旧版本的react-native-restart可能存在参数读取逻辑问题,升级到最新版大概率已修复该兼容问题:
npm update react-native-restart # 或使用yarn:yarn upgrade react-native-restart
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

