vag*_*dwd 15 android ios android-library ios-frameworks react-native
我正在探索使用react-native创建一个iOS框架(android库)的可能性,该框架可以分发,并且可以通过包含构建应用程序时与应用程序集成.
例如,维护单个代码库为ios创建一个".framework",或者为android(基本上编译代码而不是反应组件代码)创建.jar作为开发人员社区的分发.
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 用户的反馈,我们将在未来决定我们的构建过程。
请注意,此解决方案存在多种限制和维护开销,但它正在解决我们的用例。它可能并不适合所有人。
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |