如何为 react-native-ios 构建 .ipa 应用程序?

How to build .ipa application for react-native-ios?

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

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

您可以在 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 <AppName>.xcworkspace.

为目标

您也可以查看 fastlane。 https://fastlane.tools/

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

  1. 获取.app文件:

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

  3. .app转换为.ipa

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

    中删除本地主机项目

    应用程序传输安全设置 -> 异常域

  • 捆绑包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 -> Change build configuration to 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