如何在React Native中避免迁移至AndroidX并解决编译问题
嘿,我之前在维护老React Native项目的时候也碰到过一模一样的AndroidX相关编译问题,给你梳理两个问题的可行解决方案:
解决React Native Android编译因AndroidX变更导致的问题
一、避免迁移至AndroidX,保持原有编译方式
要继续沿用旧的Support Library而非切换到AndroidX,需要从配置和依赖两方面入手:
- 在项目根目录的
gradle.properties文件中添加以下配置,强制禁用AndroidX自动迁移和Jetifier工具:android.useAndroidX=false android.enableJetifier=false - 检查
package.json中的第三方Native模块,避免使用已经完全迁移到AndroidX的版本。如果某个模块强制依赖AndroidX,建议降级到仍基于Support Library开发的旧版本。 - 保持项目根目录
build.gradle中的compileSdkVersion和targetSdkVersion在你之前使用的版本(比如28及以下,对应旧Support Library的最高兼容版本)。
二、解决android.support.annotation.Keep缺失的编译错误
你添加com.android.support:support-annotations依赖后没生效,大概率是依赖配置方式不对或者存在依赖冲突,试试这些方法:
- 替换过时的依赖关键字:新版Gradle已弃用
compile,改用implementation或api,把依赖配置改成:dependencies { implementation 'com.android.support:support-annotations:27.1.1' } - 强制指定依赖版本:如果是
react-native-firebase模块的问题,你可以在项目的android/app/build.gradle中强制引入该依赖,避免版本冲突:dependencies { // 其他项目依赖... implementation ('com.android.support:support-annotations:27.1.1') { force = true } } - 适配依赖版本:确认
react-native-firebase的版本是否和你的React Native、Support Library兼容。如果不想迁移AndroidX,建议使用react-native-firebase的v5系列版本,这些版本仍基于旧Support Library开发。 - 清理缓存重新编译:修改依赖后,执行以下命令清除缓存,避免旧缓存干扰:
./gradlew clean cd .. && rm -rf node_modules && npm install
内容的提问来源于stack exchange,提问作者simo
相关产品推荐
相关产品推荐

