React Native 推荐的安装 React 依赖项的方式是通过npm install。一个非常基本的解决方案可以是在没有 React Native 的情况下发布你的库,然后让 SDK 用户通过 React 推荐的方式安装 React Native。
https://facebook.github.io/react-native/docs/integration-with-existing-apps.html
这种方法的问题是原生开发者不熟悉npm install,并且他们在修复npm install 相关问题时不是很舒服。原生开发者更习惯于使用 gradle 和 cocoapods 来构建他们的应用程序,不幸的是,react native 已经停止支持它。作为 SDK 开发人员,我们不能强迫我们的 SDK 用户开始使用 npm 并遵循 React Native 集成指南。
这就是我们为我们的用例解决这个问题的方法,
安卓:
在私有 maven 存储库上托管本机反应,并要求 SDK 用户在他们的项目级 build.gradle 文件中添加以下行,
allprojects {
repositories {
jcenter()
maven {
// All of React Native (JS, Android binaries) is installed from private maven repo
url "<Your private maven repo url.>"
}
}
}
在应用程序的 build.gradle 文件中添加以下行,
dependencies {
compile 'com.facebook.react:react-native:0.53.+'
}
您还可以使用此私有 maven 存储库来托管您的 SDK 的 aar 文件。
通过这一更改,Android 开发人员可以非常轻松地在他们的应用中包含您的 SDK 和原生响应。
这种方法的问题在于,您最终将在自己的私有 maven 存储库中维护许多 React 版本(维护开销)。
iOS:
我们的第一个解决方案是在 .framework 文件中包含反应库并创建一个胖二进制文件。这需要您在框架文件中包含 libReact.a 和其他与反应相关的 .a files 并链接它们。
使用此解决方案,您的.framework 包含所有依赖项。与 SDK 集成将非常容易(只需拖放到 Frameworks 文件夹)。这种方法的问题是 React 原生库的规模越来越大。最新的 libReact.a 文件大小为 105 Mb。这意味着框架文件会很大,SDK 用户很难将其推送到 github。
我们最近转移到了一个解决方案,我们在私有 pod 中托管 React 本机依赖项,SDK 用户可以通过在他们的 Podfile 中添加几行来下载 React 依赖项。这个解决方案就像 react native 推荐的方式,我们唯一要避免的是npm install。我们希望为我们的 SDK 用户提供两种选择(一种带有 npm install ,另一种没有)。根据 SDK 用户的反馈,我们将决定未来的构建过程。
请注意,此解决方案存在多种限制和维护开销,但它解决了我们的用例。它可能并不适合所有人。