升级React Native到0.70构建报错:Cannot get property 'android' on null object
问题概述
升级React Native到0.70版本后,构建时触发以下错误:
评估项目':@react-native-firebase_app'时出现问题
Cannot get property 'android' on null object
错误出自firebase_analytics/android/build.gradle的这段代码:
def packageJson = PackageJson.getForProject(project)
def appPackageJson = PackageJson.getForProject(appProject)
def firebaseBomVersion = appPackageJson['sdkVersions']['android']['firebase']
核心原因是appPackage['sdkVersions']为null,同时settings.gradle存在配置错误。
解决步骤
1. 修复settings.gradle配置错误
你的配置中,@react-native-firebase_analytics的项目路径错误指向了@react-native-firebase_app的目录,修正后代码如下:
include ':@react-native-firebase_app' project(':@react-native-firebase_app').projectDir = new File(rootProject.projectDir, './../node_modules/@react-native-firebase/app/android') include ':@react-native-firebase_analytics' project(':@react-native-firebase_analytics').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/analytics/android')
2. 处理sdkVersions为null的问题
方案一:在根package.json中补充sdkVersions配置
在项目根目录的package.json里添加Firebase SDK版本配置:
{ "sdkVersions": { "android": { "firebase": "29.0.0" // 16.4.6版本的firebase建议搭配29.x系列BOM版本 } } }
方案二:升级@react-native-firebase到兼容RN 0.70的版本
16.4.6版本的@react-native-firebase对RN 0.70兼容性不足,建议升级到17.x及以上版本:
npm install @react-native-firebase/app@17.5.0 @react-native-firebase/analytics@17.5.0
方案三:修改gradle代码添加空值安全判断
直接修改firebase_analytics/android/build.gradle中的代码,增加空值安全访问和默认值:
def packageJson = PackageJson.getForProject(project) def appPackageJson = PackageJson.getForProject(appProject) def firebaseBomVersion = appPackageJson['sdkVersions']?.['android']?.['firebase'] ?: '29.0.0'
环境验证
当前使用的Node v18、Java 11均符合RN 0.70的官方要求,无需调整。
内容的提问来源于stack exchange,提问作者Steve

