【问题标题】:Create a offline build for Testing: React Native为测试创建离线构建:React Native
【发布时间】:2017-09-18 17:07:39
【问题描述】:

我使用 React Native 开发了一个应用程序。但我想给最终用户进行测试。那么我们如何创建一个在没有 localhost 的情况下加载所有资产和 JS 文件的构建呢?

我在 Google 上搜索以找到解决方案。我得到了一个答案,下面的命令会对我有所帮助。

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

但它不再帮助我了。任何人都可以帮助在 iOS 中创建本地构建吗?

【问题讨论】:

  • 没有本地主机是什么意思?
  • 我想将我的构建提供给最终用户以测试设计和导航。那么我该如何构建以便他们可以在没有 npm start 的情况下安装应用程序。
  • 你的意思是像beta测试还是本地连接设备?
  • 这是 beta 测试。
  • 您是使用 expo 还是使用 react-native-cli 开始您的项目?

标签: ios react-native


【解决方案1】:

经过 2-3 天的研究,我找到了答案。希望对所有 React-Native 开发者有所帮助。

答案如下:

--> 使用以下命令将 npm 服务器启动到本地系统:

sudo npm run start

--> 上面的命令将启动你的开发服务器。现在我们必须使用以下命令创建 js bundle 以将我们的应用程序直接连接到 js build:

对于 iOS:

$curl http://localhost:8081/index.ios.bundle -o main.jsbundle

对于 Android:

$curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

以上两个步骤将在主文件夹中创建适用于 iOS 和 Android 的 js 包。现在按照以下步骤生成 IPA 和 APK 文件。

对于 iOS:

--> 从你的 ios 文件夹中打开你的 xcodeproj。将拖拽 main.jsbundle 添加到您的 xcode 项目中。

--> 打开 AppDelegate.m 文件,您可以使用以下代码行加载捆绑包。

jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];

只需在代码中的行上方注释并放在代码行下方:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

现在,你可以使用 iOS 了……

对于 Android:

打开终端并转到您的项目 repo 路径。使用以下命令编译您的项目:

./gradlew assembleRelease

要将 APK 安装到您的设备中:

adb install {PATH_TO_APK}

现在你也准备好使用 Android 了..

希望这是我所有这类人的意愿……。

【讨论】:

  • 你能解释一下手动创建和添加 jsbundle 的必要性吗?据我所知,iOS 的 Release 配置会为您解决这个问题。
  • 我们需要为我们的应用程序加载 js 包。代码第一次拥有本地主机,所以它从我们的本地服务器加载,它在我们运行 app.js 时立即启动。 iOS 的发布配置有助于我们在特定设备上安装应用程序。但是对于本机反应,我们需要启动服务器。您可以查看此链接了解更多信息:facebook.github.io/react-native/releases/0.19/docs/…
  • 您创建的 react-native 项目的发布配置负责捆绑 js 代码并消除对本地开发服务器的需求。所以你不必启动开发服务器。它只是在构建过程中运行,构建完成后您不再需要服务器。您提供链接的文档是一个非常旧的版本。我只是想了解你为什么这样做是为了教育目的。
  • 对我来说这个链接有效:http://localhost:8081/index.bundle?platform=ios
  • 打包直播应用时不应使用Curl。 react-native bundle 将产生更好的优化 JS 用于分发。
【解决方案2】:

当您通过 react-native-cli 创建 react-native 应用程序时,您的项目文件夹中有两个文件夹,分别称为 iosandrooid。这些文件夹包含您应用的平台特定项目。

对于 iOS,您可以使用 XCode 打开您的项目,然后将您的构建更改为 Release 版本并构建它。在这一步之后,测试版发布过程与任何其他原生编写的应用程序几乎相同。

【讨论】:

  • 感谢您的支持。我得到了我的答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多