如何为 React Native 构建 .ipa?
Posted
技术标签:
【中文标题】如何为 React Native 构建 .ipa?【英文标题】:How to build .ipa for React Native? 【发布时间】:2016-05-30 07:36:28 【问题描述】:我在没有 ios 开发经验的情况下来到 React Native 开发。我想构建发布。 .ipa 文件 - 理想情况下来自命令行,但官方文档 Running On Device 非常简短。
我能够通过 XCode 在我的 iPhone 上手动部署应用程序,但我仍然找不到任何“发布 IPA”文件。我用#ifdef DEBUG
指令更新了我的代码,使其更通用。
有没有办法仅通过命令行以发布模式构建应用程序?如果不是,生成 RN 申请的“官方”方式是什么?
我目前使用的是 RN 0.20。
【问题讨论】:
How to build and deploy a react-native app from command line?的可能重复 正如我已经提到的,我已经使用了#ifdef
技巧。不幸的是,另一个问题没有提到如何构建它(除了fastlane
是可能的)。
【参考方案1】:
iOS
在您的根文件夹中使用以下简单命令使用 Xcode 打开 iOS 项目。
xed ./ios
现在将以下命令粘贴到终端中
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
像这样从 Xcode 编辑方案:
产品 -> 方案 -> 编辑方案
编辑要发布的方案
现在您有了一个独立的 Xcode 项目,可以像原生 Xcode 项目一样构建/发布。
来自:https://medium.com/better-programming/create-ipa-and-apk-from-react-native-72fe53c6a8db
【讨论】:
【参考方案2】:您必须将 Scheme 设置为 Release。
从文档中你有两种方法。
为此,请转到产品 → 方案 → 编辑方案 (cmd +
或
您还可以使用 React Native CLI 执行此操作,使用选项 --configuration 和值 Release(例如 react-native run-ios --configuration Release)。
然后你可以像往常一样生成你的存档。
https://facebook.github.io/react-native/docs/running-on-device.html#building-your-app-for-production
【讨论】:
这是正确的更新答案,其他都是旧的 @jperelli 这个命令是在模拟器上运行的,它会启动一个模拟器,产品是'Release-iphonesimulator',而不是'Release-iphoneos'。 这是回答如何运行,而不是如何构建。 React 社区中的每个人似乎都误会了这两件事【参考方案3】:首先,您需要以这种方式创建一个包:
react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios
然后,您必须在 AppDelegate.m 中注释此行:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
并取消注释:
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
然后你必须去 Product -> 在 Xcode 中存档并根据你想要的版本按照步骤操作
【讨论】:
你知道我可以在存档的哪里找到 .ipa 文件吗? 请注意,如果产品 > 存档不可用,请确保您已选择“通用 iOS 设备”作为您的目的地,而不是模拟器之一。 您需要注册为苹果开发人员才能创建.ipa
,然后转到产品>存档>导出...但是,这回答了我关于如何实际创建生产版本的问题,非常感谢 G. Hamaide
我在 AppDelegate.m 中只有这个字符串: jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];我应该评论/取消评论什么?
此答案已过时 - 当前版本的 RN 在 xcode 构建过程中有一个自定义 shell 脚本,该脚本会自动为您运行捆绑,因此不再需要。【参考方案4】:
我无法评论上述答案, 这是正确的,但您需要从以下命令开始才能使其工作:
react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios
区别在于“ios”而不是“iOS”
否则会报如下错误:
ProjectPath/node_modules/promise/lib/done.js:10
throw err;
^
【讨论】:
您回复哪个答案? “上面”是相对的以上是关于如何为 React Native 构建 .ipa?的主要内容,如果未能解决你的问题,请参考以下文章
如何为模拟器构建 react-native 缩小的“产品”应用程序?
如何为 React Native Bare 工作流指定重定向 URI