【问题标题】:How to build .ipa application for react-native-ios? [closed]如何为 react-native-ios 构建 .ipa 应用程序? [关闭]
【发布时间】:2017-02-08 10:24:34
【问题描述】:

我会尝试“https://stackoverflow.com/questions/41970435”但我无法获取 .ipa 文件。

谁能解释一下如何获取 .ipa 文件?

【问题讨论】:

标签: react-native react-native-android react-native-ios


【解决方案1】:
  1. 获取.app 文件:

     react-native run-ios --configuration=release
    
  2. .app文件路径Build/Products/Release/"<Your_Filename>.app"

  3. .app 转换为.ipa

    • 创建文件夹Payload
    • .app 文件粘贴到Payload 文件夹中。
    • 压缩Payload文件夹。
    • 更改您想要的名称并将扩展名设置为.ipa

【讨论】:

  • 收到有关配置文件和构建大小的错误是 Xcode 构建的 5 倍。
  • 这是什么巫术?
  • 此 Build/Products/Release/".app" 路径不存在。 Payload 文件夹是什么意思?
  • @preston 在运行 react-native run-ios --configuration=release 后查看 CLI,如果一切正常,您将看到以下行 info Installing "/Users/"<Your_Username>"/Library/Developer/Xcode/DerivedData/"<Your_Filename>"-gpyqutyfhaccnvgoneubfmtbglgw/Build/Products/Release-iphonesimulator/"<Your_Filename>".app",这就是发布。但我的问题是如何压缩 Payload ?是简单的 zip 压缩还是另一种特定的压缩?
  • 在我的系统上,此命令不会生成 .app 文件,它只会在 iOS 模拟器中启动应用程序(react-native 0.63.2)
【解决方案2】:
  • 从 info.plist 中删除 localhost 项

    应用传输安全设置 -> 例外域

  • 捆绑ios

    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
    
  • 在 Xcode 中

    Products->Scheme->Edit scheme -> 将构建配置更改为RELEASE

  • AppDelegate.m 

    替换

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

    #ifdef DEBUG
      jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
    #else
      jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
    #endif
    
  • 更换设备 -> 通用 iOS 设备

  • 产品 -> 清洁

  • 产品 -> 构建

  • .app 文件位于

    ~/Library/Developer/Xcode/DerivedData/<app name>/Build/Products/Release-iphoneos/<appname>
    
  • 创建文件夹 Payload。

  • .app 文件粘贴到 Payload 文件夹中。

  • 压缩 Payload 文件夹。

  • 更改您想要的名称并将扩展名设置为.ipa

【讨论】:

  • 按照这些步骤并成功创建 ipa 后,我无法再通过 iOS 模拟器在调试中运行该应用程序,任何建议@aleena1995
  • 您是否将 Scheme 更改为 DEBUG 并将 jsCodeLocation 更改回旧的?@Arthur
  • 是的,我最终恢复了我所做的所有更改,有没有一种简单的方法可以同时拥有这两个选项并能够从调试和发布版本中反弹?我目前的解决方案是继续调试,为发布、构建、然后还原做所有更改
  • 您可以使用以下代码,以便根据构建配置选择 jsCodeLocation。请检查更新的解决方案@Arthur
  • @aleena1995 以这种方式生成 IPA 是否有任何限制?应用会在固定时间后过期吗?
【解决方案3】:

您可以在 ios 目录中运行这些命令。

xcodebuild clean archive -scheme <Scheme> -configuration Release -archivePath ../builds/<App>.xcarchive DEVELOPMENT_TEAM=<DevTeam> PROVISIONING_PROFILE=<PROVISIONING_PROFILE> CODE_SIGN_IDENTITY=<CODE_SIGN_IDENTITY>
xcodebuild -exportArchive -archivePath ../builds/<App>.xcarchive -exportPath ../builds/ -exportOptionsPlist ./iosExportOptions.plist 

并且 iosExportOptions.plist 可以类似于

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>method</key>
  <string>app-store</string>
  <key>teamID</key>
  <string>{TEAM_ID}</string>
</dict>
</plist>

重要的是要注意,如果您使用的是 cocoapods,那么您需要使用工作区而不是项目来构建。将此标志添加到第一个命令将确保您的目标是工作区 -workspace &lt;AppName&gt;.xcworkspace

您还可以结帐 fastlane。 https://fastlane.tools/

您可以在 Xcode 和 Product -> Archive 中填写所有详细信息,例如 DEVELOPMENT_TEAM 等 https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html

【讨论】:

  • 这是我们可以通过命令行导出 IPA 的唯一方法吗?或者我们是否可以通过 react-native 获得任何集成的命令行选项?
  • 到目前为止,带有 react-native 的选项仅构建 .app,正如其他答案所指出的那样
猜你喜欢
  • 2016-06-17
  • 2016-05-30
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 2021-09-16
  • 2020-04-03
相关资源
最近更新 更多