首页 > 解决方案 > 如何在 Android 中注册 C++ React Native 模块

问题描述

我有一个从facebook::xplat::module::CxxModule. 它适用于 iOS 项目,但现在我试图弄清楚如何从 Java 中使用它。我找到的唯一文档是 React Native 代码库中的注释,指出:

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

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

标签: javaandroidc++react-native

解决方案


详情请查看此博客: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();
  }
}

推荐阅读