2

我正在尝试创建一个基于反应的 SDK,(即)我将拥有一个 Android/iOS 包,它将成为应用程序的入口点,并将使用反应代码来使用现有的业务逻辑。我可以将 ReactAppRegistry.registerComponent视为 React 应用程序的入口点。但是对于我的用例,我没有任何视图依赖性。我只有业务逻辑。我应该如何创建捆绑包?

在 Android 和 iOS 中,我将编写一个脚本来将使用此 RN 包创建的包复制粘贴到资产文件夹,然后我将使用它index.bundle来创建 ReactInstanceManager

请帮助我理解这个练习(基于 React 的 SDK,没有视图组件)。制作这个 SDK 我需要做些什么。

注意:这个 SDK 可以集成到现有的 App 中,这些 App 已经具有 react-native 依赖来渲染一些屏幕。我的 SDK 也应该处理这个用例。

4

1 回答 1

0

你可能不喜欢我的回答,但请记住,过去几年我一直在从事一些复杂的 react-native 项目。所以我说的是经验。

1.- 这是一个糟糕的主意。2.- 也是可能的。

为什么是一个可怕的想法?A)因为您将在应用程序中捆绑完整大小的 react-native,无论使用情况如何。B)因为 react-native 是一个渲染引擎(而且成本很高)。不是为无头使用而设计的。它有一个重要的启动时间,因此您的 SDK 在启动应用程序后将不可用。默认情况下,一旦有东西覆盖了 UI(如权限对话框),ReactActivity 就会停止 JS 引擎,如果您的 SDK 打算同时被调用,则会导致有趣和有趣的问题。根据设计,桥接模型涉及大量延迟。react-native 依赖项可能与应用程序中的依赖项不匹配,从而导致另一个问题。攻击者更容易阅读,因为任何 IDE 都可以重新格式化一个大脚本。根据您的 SDK 需要做什么,您可能需要编写一堆更复杂的本机代码。如果您有 JS 依赖项,构建步骤将要求使用者使用 yarn/npm 来构建应用程序,并且将迫使使用者集成 react-native 的 hacky gradle 步骤(以及他们的 CI 工具)。如果 react-native 库给您带来问题,您将不得不对其进行修补。所以,麻烦的机会很多。

也就是说,您可以使用捆绑命令(react-native 捆绑包)从您想要的任何文件创建 JS 捆绑包。所以你可以打包一个非 UI 的 JS 函数并直接在 ReactActivity 中加载它们。如果消费者应用程序有意忽略该过程,您将必须创建一个基本活动和基本应用程序,加载 Catalyst,将您的包传递给 reactInstance,加载它,并创建一个 JVM (kotlin/java) API暴露一个单例或类似的东西,它使用发射器发送命令。而这只是安卓。iO 将有类似的路径,但通过 xCode 集成 SDK 会增加复杂性。

我会推荐你​​,经历过这个,来省去麻烦,然后尝试使用 kotlin 多平台。专为这种场景而设计,android 开箱即用,将对象 C 框架与 xCode 集成要容易得多,并且不会强迫消费者做任何奇怪的事情。并且会更好地工作,免费。

于 2020-12-27T09:03:01.637 回答