gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:10:32 59 4
gpt4 key购买 nike

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

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

最佳答案

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 相关问题。 native 开发人员更习惯于使用 gradle 和 cocoapods 来构建他们的应用程序,不幸的是,React Native 已停止支持它。作为 SDK 开发人员,我们不能强制我们的 SDK 用户开始使用 npm 并遵循 React Native 集成指南。这就是我们为我们的用例解决这个问题的方式,

安卓:

主机在私有(private) Maven 存储库上做出原生 react ,并要求 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.+'

}

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

有了这一变化,Android 开发者将可以很容易地在他们的应用中包含您的 SDK 和 React Native。这种方法的问题是您最终将在自己的私有(private) Maven 存储库中维护许多 React 版本(维护开销)。

iOS:

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

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

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

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

关于android - 将 react-native 项目 bundle 为 iOS 框架或 (.aar) Android 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283427/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com