React Native 0.59.8安卓编译报错:找不到ConnectivityManagerCompat
这个编译报错我之前帮好几个开发者解决过,核心原因很明确——你使用的@react-native-community/netinfo@3.1.1版本还依赖旧的Android Support库,但你的项目已经通过android.useAndroidX=true和android.enableJetifier=true开启了AndroidX,两者不兼容就会出现找不到android.support.v4.net.ConnectivityManagerCompat这类错误。
下面是一步步的解决方法:
1. 升级NetInfo到兼容AndroidX的版本
旧版3.x的NetInfo还在使用Android Support API,官方从4.6.0版本开始全面支持AndroidX。先更新你的package.json里的依赖:
"@react-native-community/netinfo": "^4.6.0",
然后执行安装命令更新依赖:
npm install # 如果你用Yarn的话就跑这个 yarn upgrade @react-native-community/netinfo
2. 清理安卓缓存并重新构建
更新依赖后,一定要清理安卓项目的build缓存,避免旧的编译残留影响:
# 进入安卓目录 cd android # 清理缓存 ./gradlew clean # 回到根目录重新运行项目 cd .. npx react-native run-android
3. 顺带升级其他旧依赖(可选但推荐)
你项目里的@react-native-community/async-storage@1.4.1版本也比较旧,同样建议升级到兼容AndroidX的版本(至少^1.12.0),避免后续再出现类似的兼容问题:
"@react-native-community/async-storage": "^1.12.0",
同样执行安装命令更新即可。
4. 优化Gradle配置(可选)
你的gradle.properties里的AndroidX配置是正确的,但根gradle里的supportLibVersion和对应的com.android.support:appcompat-v7依赖,长远来看建议替换成AndroidX官方依赖,毕竟Jetifier只是过渡方案:
把原来的:
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
替换成:
implementation "androidx.appcompat:appcompat:1.3.1"
同时可以移除根gradle里的supportLibVersion配置,让配置更简洁。
这样操作后,你的安卓编译错误应该就能彻底解决了。
内容的提问来源于stack exchange,提问作者Andrei

