如何为React Native构建.IPA?

sod*_*dik 54 ios react-native

我没有iOS开发经验就来React Native开发.我想构建发行版.IPA文件 - 理想情况下是从命令行,但官方文档Running On Device非常简短.

我能够通过XCode手动在我的iPhone上部署应用程序,但我仍然找不到任何"发布IPA"文件.我已经使用#ifdef DEBUG指令更新了我的代码,使其更通用.

有没有办法只通过命令行在发布模式下构建应用程序?如果不是,生成RN应用程序的"官方"方式是什么?

我目前正在使用RN 0.20.

G. *_*ide 49

首先,您需要以这种方式创建一个包:

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios
Run Code Online (Sandbox Code Playgroud)

然后,你必须在AppDelegate.m中评论这一行:

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
Run Code Online (Sandbox Code Playgroud)

并取消注释这个:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
Run Code Online (Sandbox Code Playgroud)

然后你必须去Xcode中的产品 - >存档,并根据你想要的版本按照步骤进行操作

  • 要注意,如果"产品">"存档"不可用,请确保选择"通用iOS设备"作为目标,而不是其中一个模拟器. (16认同)
  • 您需要注册为Apple开发人员才能创建`.ipa`,然后转到产品>存档>导出...但是,这回答了我关于如何实际创建生产版本的问题,非常感谢G哈马德 (3认同)
  • 我在AppDelegate.m中只有这个字符串:jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios"fallbackResource:nil]; 我应该评论/取消注释什么? (3认同)
  • 你知道我可以在存档中的哪个位置找到 .ipa 文件吗? (2认同)
  • 这个答案已经过时了 - 当前版本的 RN 在 xcode 构建过程中有一个自定义 shell 脚本,可以自动为您运行捆绑,因此不再需要。 (2认同)

Die*_*llo 19

您必须将Scheme设置为Release.

从文档中你有两种方法.

要执行此操作,请转到产品→方案→编辑方案(cmd + <),确保您在侧面的"运行"选项卡中,并将"构建配置"下拉列表设置为"发布".

要么

您还可以使用React Native CLI使用带有值Release的选项--configuration(例如react-native run-ios --conflease Release)来执行此操作.

然后您可以照常生成存档.

https://facebook.github.io/react-native/docs/running-on-device.html#building-your-app-for-production

  • 这是正确的更新答案,其他人都是旧的 (4认同)
  • 这是如何运行的答案,而不是如何构建。React 社区中的每个人似乎都误解了这两件事 (2认同)

Han*_*ane 13

我不能评论上面的答案,这是正确的,但你需要从以下命令开始,以使其工作:

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios
Run Code Online (Sandbox Code Playgroud)

差异是'ios'而不是'iOS'

如果不是,它将给出以下错误:

ProjectPath/node_modules/promise/lib/done.js:10
  throw err;
  ^
Run Code Online (Sandbox Code Playgroud)

  • 你在回应哪个答案?“以上”是相对的 (4认同)