【发布时间】:2017-02-08 10:24:34
【问题描述】:
我会尝试“https://stackoverflow.com/questions/41970435”但我无法获取 .ipa 文件。
谁能解释一下如何获取 .ipa 文件?
【问题讨论】:
-
这不是上述问题的重复,因为该问题的答案已过时;自提出问题以来,详细信息发生了变化。
标签: react-native react-native-android react-native-ios
我会尝试“https://stackoverflow.com/questions/41970435”但我无法获取 .ipa 文件。
谁能解释一下如何获取 .ipa 文件?
【问题讨论】:
标签: react-native react-native-android react-native-ios
获取.app 文件:
react-native run-ios --configuration=release
.app文件路径Build/Products/Release/"<Your_Filename>.app"。
将.app 转换为.ipa:
Payload。.app 文件粘贴到Payload 文件夹中。Payload文件夹。.ipa。【讨论】:
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 压缩还是另一种特定的压缩?
从 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
【讨论】:
您可以在 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
【讨论】:
.app,正如其他答案所指出的那样