如何为原生 android 和 iOS SDK 创建 react native wrappers

How to create react native wrappers for native android and iOS SDKs

提问人:Wei Wen 提问时间:7/19/2022 更新时间:7/26/2022 访问量:1756

问:

我正在创建一个 React Native 模块作为现有 Android 和 iOS 库的包装器。Android 库是一个 jar 文件,iOS 库是 xcframework 文件。我将 xcframework 文件放在 ios 文件夹中,将 jar 文件放在 android/libs 文件夹中(我创建了 libs 文件夹)。我首先通过在项目级别的 podspec 文件中添加 s.preserve_path、s.xcconfig 和 s.vendored_framework 来尝试 iOS 库。我不确定我是否需要对 pod spec 文件做任何事情,例如运行它。因此,我只是通过尝试将库的 .h 导入 .m 文件中来执行下一步。我尝试使用尖括号<>和引号“”。但是没有一个奏效,因为触发“react-native run-is”给了我这个错误:致命错误:找不到文件。非常感谢有关如何在 react native 中包含库的任何帮助。

react-native android-library ios库 react-native-modules

评论


答:

0赞 user9106403 7/20/2022 #1

要创建 react native 包装器或节点模块,您需要使用以下库。

https://www.npmjs.com/package/react-native-create-library

https://github.com/brodybits/create-react-native-module

使用此库,您可以创建空的 react native module 项目,然后您可以将本机代码 ARR 或框架文件绑定到该项目中。

评论

0赞 Wei Wen 7/20/2022
谢谢你的链接。但是当我发布问题时,我已经使用 create-react-native-mudule 创建了我的空 react native 模块。我遇到的问题是,在我放置我的 .xcframework 和 .jar 库之后,特别是对于 iOS,像我在问题中所做的那样修改了项目 podspec 文件并尝试将我的库导入 .m 文件中,当我 cd 到示例并输入“react-native run-ios”时,项目无法运行。对于 Android,即使在我创建空项目后,它也没有运行。我认为在 Android 上需要进行一些设置。
0赞 Wei Wen 7/26/2022 #2

我能够通过执行以下两个步骤来修复错误:

  1. 在项目级别 .podspec 文件中将“s.vendored_framework”更改为“s.vendored_frameworks”。我原来的是单数(框架),而不是复数(框架)。

  2. cd iOS & & pod 安装 && cd ..

第 2 步可以在 create-react-native-module 的 GitHub 链接中找到: https://github.com/brodybits/create-react-native-module

在发布问题时,我错过了第二步。我当时想,如果我运行“react-native run-ios”,它将运行“pod install”。

评论

0赞 Wei Wen 7/26/2022
但是,Android 版本仍然无法构建。问题是android/build.gradle仍然使用maven插件,而对于Gradle 7,maven被maven-publish取代。但是,仅仅通过更改此内容和其他一些内容仍然无法解决构建问题。它归结为以下行:classpath += files(project.getConfigurations().getByName('compile').asList()。找不到“编译”。将其更改为“implementation”会给出错误:不允许配置“implementation”,因为它被定义为“canBeResolved=false”。有人在 GitHub 页面中报告了该问题,但该问题仍处于打开状态。