在全新React Native项目中引入@bam.tech/react-native-batch失败求助
解决React Native 0.69.1中@bam.tech/react-native-batch的Android编译错误
这个问题是由于@bam.tech/react-native-batch的Android代码与React Native 0.69.1的Android SDK版本存在兼容性不匹配导致的——代码里尝试将URI对象传递给仅接受String类型参数的方法,触发了编译错误。以下是几种可行的解决办法:
方法1:修复库代码并持久化修改
这是最直接的临时修复方案,适合不想更换库版本的场景:
- 打开
node_modules/@bam.tech/react-native-batch/android/src/main/java/tech/bam/RNBatchPush/RNUtils.java,找到第113行,将代码修改为:batchEventData.put(key, URI.create(valueMap.getString("value")).toString()); - 再打开
node_modules/@bam.tech/react-native-batch/android/src/main/java/tech/bam/RNBatchPush/RNBatchModule.java,找到第529行,修改为:editor.setAttribute(key, URI.create(url).toString()); - 为了避免每次执行
yarn install后修改被覆盖,用patch-package保存补丁:- 安装依赖:
yarn add patch-package postinstall-postinstall --dev - 生成补丁文件:
npx patch-package @bam.tech/react-native-batch - 在
package.json的scripts中添加:"postinstall": "patch-package"
- 安装依赖:
方法2:调整库版本匹配RN版本
检查@bam.tech/react-native-batch的官方文档,确认适配React Native 0.69.1的版本:
- 若当前用的是新版本,尝试降级到兼容的旧版本,比如:
yarn add @bam.tech/react-native-batch@x.x.x(替换x.x.x为实际兼容版本号) - 若当前版本过旧,尝试升级到最新稳定版,看是否已修复该兼容性问题
错误原因说明
React Native 0.69.1对应的Android Gradle插件和SDK版本,与@bam.tech/react-native-batch当前版本的代码预期不符:代码调用的put和setAttribute方法不接受URI类型参数,仅支持String。通过调用.toString()把URI对象转为字符串,就能满足方法的参数类型要求,解决编译错误。
内容的提问来源于stack exchange,提问作者lmasneri
相关产品推荐
相关产品推荐

