将react-native项目捆绑为iOS框架或(.aar)Android库

vag*_*dwd 15 android ios android-library ios-frameworks react-native

我正在探索使用react-native创建一个iOS框架(android库)的可能性,该框架可以分发,并且可以通过包含构建应用程序时与应用程序集成.

例如,维护单个代码库为ios创建一个".framework",或者为android(基本上编译代码而不是反应组件代码)创建.jar作为开发人员社区的分发.

ggs*_*vas 7

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.>"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  在应用程序的 build.gradle 文件中添加以下行,  

dependencies {

    compile 'com.facebook.react:react-native:0.53.+'

}
Run Code Online (Sandbox Code Playgroud)

您还可以使用此私有 Maven 存储库来托管您的 SDK 的 aar 文件。

通过此更改,Android 开发人员将很容易在他们的应用程序中包含您的 SDK 并做出本机响应。这种方法的问题在于,您最终将在自己的私有 Maven 存储库上维护许多 React 版本(维护开销)。

IOS:

我们的第一个解决方案是在.framework文件中包含 react 库并创建一个胖二进制文件。这需要您.a files在框架文件中包含 libReact.a 和其他相关的 react并链接它们。

使用此解决方案,您的.framework包含所有依赖项。与 SDK 的集成将非常容易(只需拖放到 Frameworks 文件夹中即可)。这种方法的问题在于 React 原生库的规模越来越大。最新的 libReact.a 文件大小为 105 Mb。这意味着框架文件会很大,SDK 用户将难以将其推送到 github。

我们最近转向了一个解决方案,我们在私有 pod 中托管 React 本机依赖项,​​SDK 用户可以通过在他们的 Podfile 中添加几行来下载 React 依赖项。这个解决方案就像 react native 推荐的方式,我们唯一避免的是npm install. 我们希望为我们的 SDK 用户提供两种选择(一个带有 npm install,另一个没有它)。根据 SDK 用户的反馈,我们将在未来决定我们的构建过程。 

请注意,此解决方案存在多种限制和维护开销,但它正在解决我们的用例。它可能并不适合所有人。