如何在React Native Android项目中添加多个JSIModule?
你的现有实现存在错误,核心问题是类型不匹配:getJSIModulePackage 要求返回 List<JSIModulePackage> 类型,但你代码中初始化的是存储普通原生模块的 List<ReactPackage>,二者属于完全不同的接口,会直接触发编译报错。
正确实现方式如下:
- 保持你现有相关导入语句不变,调整方法逻辑即可:
import com.facebook.react.bridge.JSIModulePackage; import com.ammarahmed.mmkv.RNMMKVJSIModulePackage; import com.swmansion.reanimated.ReanimatedJSIModulePackage; import java.util.ArrayList; import java.util.List; ... @Override protected List<JSIModulePackage> getJSIModulePackages() { // 注意:RN 0.65及以上版本方法名为复数 getJSIModulePackages // 0.64及更低版本为单数 getJSIModulePackage,返回单个JSIModulePackage时可自行适配组合逻辑 List<JSIModulePackage> jsiModulePackages = new ArrayList<>(); jsiModulePackages.add(new RNMMKVJSIModulePackage()); jsiModulePackages.add(new ReanimatedJSIModulePackage()); return jsiModulePackages; }
- 额外注意事项:
- 普通原生模块依然在原来的
getPackages方法中添加即可,不要混入JSI模块包列表,二者加载逻辑完全独立 - 修改完成后清理Android项目build缓存,再重新编译运行,避免缓存导致模块加载失效
内容的提问来源于stack exchange,提问作者Dániel Boros
相关产品推荐
相关产品推荐

