React Native 0.73升级后Android版本代码逻辑失效如何修复?
React Native 0.73.X升级后恢复ABI版本代码逻辑的解决方法
问题背景
升级React Native到0.73.X版本后,移除了android/app/build.gradle中处理ABI版本代码的逻辑,导致生成的安装包版本代码未按原逻辑(默认版本代码×1000 + ABI对应编码)计算,版本号过低无法发布到Google Play。恢复原有代码时触发错误:
groovy.lang.MissingPropertyException: Could not get unknown property 'abi' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl
解决方法
React Native 0.73.X对应的Android Gradle Plugin(AGP)版本已升级,旧版API已不兼容,需调整代码适配新AGP规范:
确保开启ABI拆分配置(若未开启)
在android/app/build.gradle的android块中添加ABI拆分配置:splits { abi { enable true reset() include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" universalApk true } }替换为兼容AGP 8.X的版本代码逻辑
将原有的版本代码处理逻辑替换为以下代码,同样放在android块内:applicationVariants.all { variant -> variant.outputs.all { output -> def versionCodes = [ "armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4 ] def abi = output.getFilter(com.android.build.OutputFile.ABI) if (abi != null && versionCodes.containsKey(abi)) { output.versionCodeOverride = defaultConfig.versionCode * 1000 + versionCodes[abi] } } }
关键改动说明
- 用
variant.outputs.all替代旧版的variant.outputs.each,适配AGP 8.X的API规范 - 显式指定
com.android.build.OutputFile.ABI的完整路径,避免找不到类的问题 - 添加
versionCodes.containsKey(abi)判断,防止因ABI映射不存在导致的异常
内容的提问来源于stack exchange,提问作者Francesco Clementi
相关产品推荐
相关产品推荐

