如何在 Android 中注册C++ React Native 模块

2022-09-01 12:18:41

我有一个C++ React Native 模块,派生自 .它与iOS项目一起工作正常,但现在我试图弄清楚如何从Java使用它。我找到的唯一文档是 React Native 代码库中的注释,其中指出:facebook::xplat::module::CxxModule

实现是用C++编写的 NativeModule 不得提供任何 Java 代码(因此它们可以在其他平台上重用),而应使用 CxxModuleWrapper 注册自己

我的问题是如何使用CxxModuleWrapper在Java中注册C++模块


答案 1

有关详细信息,请查看此博客:https://medium.com/@kudochien/how-to-write-a-react-native-cxxmodule-59073259f15d。来自博客的片段:

从本机导出

extern "C" HelloCxxModule* createHelloCxxModule() {
  return new HelloCxxModule();
}

在java中注册它

public final class HelloCxxPackage implements ReactPackage {
  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    return Arrays.<NativeModule>asList(
        // I have librnpackage-hellocxx.so the exported createHelloCxxModule() above.
        CxxModuleWrapper.makeDso("rnpackage-hellocxx", "createHelloCxxModule")
    );
  }
  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
    return Collections.emptyList();
  }
}

答案 2

推荐