【问题标题】:Expo + React Native: What is the "right way" to wrap a 3rd party native library?Expo + React Native:包装第 3 方原生库的“正确方法”是什么?
【发布时间】:2023-02-17 21:49:29
【问题描述】:

包装第 3 方本机库(android 和 ios)并将其暴露给 Expo + React Native 项目中的 Javascript 的“正确方法”是什么?追求的最佳途径是什么?有没有我应该研究的综合例子?

以下是我在不涉及任何第 3 方依赖项的情况下尝试执行简单本机代码的一些操作:

  • Vanilla React Native 应用程序(npx react-native init AwesomeProject)+ Turbo 模块 =成功
  • Vanilla Expo 应用程序 (npx create-expo-app AwesomeProject) + Turbo 模块 =失败
  • Vanilla Expo 应用程序 (npx create-expo-app AwesomeProject) + Vanilla Expo 模块 (npx create-expo-module AwesomeModule) =成功

因为我想使用 Expo,所以第三个选项对我来说似乎是一个很好的选择。但现在我对如何真正引入我想使用的第三方库感到困惑。比如awesome-module/ios里面有AwesomeModule.podspec文件,但是没有Podfile添加依赖。我应该添加Podfile吗?我应该添加对 AwesomeApp 的 Podfile 的依赖吗?我采取了错误的方法吗?我应该重新关注 React Native 模块吗?

到目前为止我使用的资源:

【问题讨论】:

    标签: react-native expo


    【解决方案1】:

    使用 Expo,您有两个主要工作流程 - managed work-flowbare work-flow。有关这些工作流程的文档,请参阅here

    在过去,包含第 3 方库的唯一选择是弹出您的 Expo 项目(这是一种单向操作 - 没有回头路),以便它成为标准的 React Native 应用程序,然后包含第 3 方库你需要在你的React Native 项目中。原因是 managed work-flow 在设备上使用了 Expo Go 来提供所需的本机功能,并且无法将第三方库添加到 Expo Go。所以 Expo 提供的就是你可以使用的。

    这随后发生了变化,现在有一种方法可以包含第 3 方库。为此,您可以使用 EAS build 构建您自己的自定义开发客户端(然后在您的 Android 或 iOS 设备上替换 Expo Go)。我花了一段时间才弄清楚所有这些是如何工作的,但简而言之,步骤如下:

    1. 执行 expo prebuild 以预构建 iOSAndroid 文件夹。在 iOS 文件夹中,您将找到您要查找的 Podfile。您可以在 AndroidiOS 文件夹中进行所需的更改,运行 EAS 构建不会覆盖您在此处所做的更改。

    2. 如果你为iOSPodfile做了任何更改,你需要在iOS文件夹中执行npx pod-install

    3. 创建一个 EAS 帐户,然后使用以下命令之一构建您的项目:

      eas build --profile development --platform android

      eas build --profile development --platform ios

      上述命令将在 EAS 服务器上开始构建,在等待一段时间后(队列的长度取决于一天中的时间和服务器的繁忙程度)。

      iOS build 命令将提示您输入Apple 帐户,并指导您为测试设备创建和配置配置文件。

      如果在构建期间发生错误,您将必须登录到您的 EAS 帐户并查看日志以查看报告的错误消息。

      EAS 构建完成后,您将获得一个QR code,然后您可以在您的AndroidiOS 设备上扫描它以安装您的自定义开发客户端。

      安装自定义开发客户端后,您可以通过从项目文件夹运行以下命令来启动您的应用程序,该应用程序现在包含您的第 3 方库:

      npx expo start --dev-client
      

      然后您将获得一个QR code,然后您可以在您的移动设备上扫描它,然后您的应用程序将在您的自定义开发客户端中启动。

      如果您不想使用EAS服务器,也可以设置您自己的Windows机器来为Android构建EAS。如果您有 Macbook,您可以将其设置为为 AndroidiOS 执行 EAS 构建。不过,需要安装很多依赖项才能将您的机器设置为执行 EAS 构建。 Here 是设置您Windows PCMacbook 以执行EAS 构建的文档。 (请注意,Windows PC 无法为 iOS 构建,因为 Xcode 是必需的)。

      如果您想在本地执行 EAS 构建,请将 --local 添加到上面给出的 EAS 构建命令中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2014-09-25
      • 2020-06-16
      • 2020-04-26
      • 2018-04-24
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多