React Native同时集成Reanimated与MMKV的getJSIModulePackage冲突问题
React Native 同时集成react-native-reanimated与MMKV冲突解决方案
问题本质是getJSIModulePackage方法仅支持返回单个JSIModulePackage实例,无法直接返回两个库的配置,可通过自定义合并类解决:
步骤1:添加自定义合并JSIModule类
在MainApplication.java文件内部新增如下静态类,同时注意顶部引入对应依赖包:
// 顶部需引入的依赖(请根据你的库实际版本调整包路径) import com.facebook.react.bridge.JSIModulePackage; import com.facebook.react.bridge.JSIModuleSpec; import com.facebook.react.bridge.JavaScriptContextHolder; import com.facebook.react.bridge.ReactApplicationContext; import com.swmansion.reanimated.ReanimatedJSIModulePackage; import com.reactnativemmkv.RNMMKVJSIModulePackage; import java.util.List; private static class CombinedJSIModulePackage implements JSIModulePackage { @Override public List<JSIModuleSpec> getJSIModules(ReactApplicationContext reactApplicationContext, JavaScriptContextHolder jsContext) { // 先加载Reanimated的JSIModule List<JSIModuleSpec> modules = new ReanimatedJSIModulePackage().getJSIModules(reactApplicationContext, jsContext); // 追加MMKV的JSIModule modules.addAll(new RNMMKVJSIModulePackage().getJSIModules(reactApplicationContext, jsContext)); return modules; } }
步骤2:替换原有getJSIModulePackage方法
将原有的两个冲突的getJSIModulePackage方法删除,替换为以下代码:
@Override protected JSIModulePackage getJSIModulePackage() { return new CombinedJSIModulePackage(); }
验证生效
修改完成后清理Android项目缓存重新编译即可:
cd android && ./gradlew clean cd .. && npx react-native run-android
注意:如果你使用的是Reanimated 3.x及以上版本,部分版本已默认自动集成JSIModule,无需手动添加该配置,可先对应版本官方安装说明确认是否需要保留该配置。
内容的提问来源于stack exchange,提问作者Mohib
相关产品推荐
相关产品推荐

