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

时间:2016-02-09 03:32:39

标签: android ios react-native android-library ios-frameworks

我正在探索使用react-native创建iOS框架(android库)的可能性,该框架可以通过在构建应用程序时进行分发而与应用程序集成。

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

1 个答案:

答案 0 :(得分:4)

通过npm install反映本机推荐的安装反应依赖项的方法。一个非常基本的解决方案可以是在没有本机反应的情况下发送您的库,然后让SDK用户通过建议的方式安装反应本机。

https://facebook.github.io/react-native/docs/integration-with-existing-apps.html

这种方法的问题在于,原生开发人员不熟悉npm install,他们在修复npm install相关问题时不太舒服。本地开发人员更习惯于使用gradle和cocoapods来构建他们的应用程序,不幸的是,本机已经停止支持它。作为SDK开发人员,我们无法强制我们的SDK用户开始使用npm并遵循反应原生集成指南。 这就是我们为用例解决这个问题的方法,

<强>机器人:

主机在私有maven repo上做出本机反应,并要求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.>"
        }
    }
}

在app的build.gradle文件中添加以下行,

dependencies {

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

}

您也可以使用此私有maven repo来托管SDK的aar文件。

通过此更改,Android开发人员可以轻松地包含您的SDK并在其应用中做出本机反应。 这种方法的问题在于,您最终会在自己的私有maven仓库中维护许多反应版本(维护费用)。

<强>的iOS:

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

使用此解决方案,您的.framework包含所有依赖项。与SDK集成将非常简单(只需拖放到Frameworks文件夹)。这种方法的问题在于React本机库的大小正在增长。最新的libReact.a文件大小为105 Mb。这意味着框架文件大小将是巨大的,SDK用户将难以将其推送到github。

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

请注意,此解决方案存在多种限制和维护开销,但它正在解决我们的用例。它可能对每个人都不起作用。