我试图将 xcarchive 转换为IPA(XCode 7.1.1)。以下命令
xcodebuild
-exportArchive -archivePath foo.xcarchive -exportPath . -exportFormat IPA
失败并显示错误
路径' foo.xcarchive'不是单捆存档
由于上述命令在技术上已弃用,我还尝试了新表单:
xcodebuild
-exportArchive -archivePath foo.xcarchive -exportPath .
-exportOptionsPlist ipa.plist
ipa.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>
</dict>
</plist>
然后导致错误:
错误:exportArchive:关键&#39;方法的exportOptionsPlist错误&#39;: 期待{}之一,但找到了app-store
现在,尝试调试这个我打开了xcarchive文件夹并检查了它的结构。我注意到我有一个与Products\Applications\foo.app
处于同一级别的文件夹,因此我将其删除并再次尝试无效(相同的结果)。然后我继续从foo.app中删除文件,直到我只剩下DWARF二进制文件 - 仍然没有雪茄(相同的结果),尽管这可能是因为我通过手动删除文件搞砸了应用程序签名。
答案 0 :(得分:2)
.ipa
文件。
xcodebuild有一个新的-exportArchive
选项来创建一个更像Xcode Organizer的.ipa
。
所以我们现在应该:
使用xcodebuild存档构建存档
使用xcodebuild创建.ipa
-exportArchive
我们现在建立这样的档案:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/myApp.xcarchive
我们现在像这样导出.ipa:
xcodebuild -exportArchive -archivePath $PWD/build/myApp.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
这两个命令创建文件build / myApp.xcarchive和build / myApp.ipa
请注意,xcodebuild -exportArchive
需要一个-exportOptionsPlist
参数,该参数指向带有导出选项的.plist文件。有关可以放入该plist的完整列表,请运行xcodebuild -help。该文件的最小内容如下所示:
<?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>YOUR_TEN_CHARACTER_TEAM_ID</string>
</dict>
</plist>
答案 1 :(得分:1)
由于您不建议使用创建IPA的方式,因此您应该执行以下操作:
xcodebuild -scheme "Foo" -configuration Release clean build CODE_SIGN_IDENTITY="iPhone Distribution: Foo Corporation" -derivedDataPath "/path/to/some/folder/"
xcrun -sdk iphoneos PackageApplication "/path/to/some/folder/Build/Products/Release-iphoneos/foo.app" -o "/path/to/some/folder/foo.ipa"
确保替换&#34; Foo&#34;使用您的架构名称和&#34; iPhone发行版:Foo Corporation&#34;与您的签名身份。和&#34; / path / to / some / folder /&#34;应该是一些构建文件夹。
答案 2 :(得分:0)
尝试使用绝对路径作为xcodebuild
选项的参数,而不是相对路径。
这样的事情:
xcodebuild -exportArchive -archivePath "$PWD/foo.xcarchive" \
-exportPath "$PWD" -exportOptionsPlist "$PWD/ipa.plist"
只要您的.xcarchive
完好无损且签名正确,即可。这就是我在构建系统中使用的内容。
答案 3 :(得分:0)
在命令行上为模拟器构建时,我从XCode 7.2得到了一些类似的奇怪错误。您可以尝试将-sdk iphoneos
添加到xcodebuild
命令(以跳过模拟器构建),或者如果您正在为模拟器构建,则添加-destination 'platform=iOS Simulator,name=iPhone 6,OS=latest'
之类的内容。
答案 4 :(得分:0)
我最近切换到使用fastlane gym
工具来构建和创建ipa文件...我遇到了一个问题,其中一个命令行用于制作ad-hoc构建,我需要一个不同的配置来制作应用商店建立并无法解决它。快速通道的东西几乎开箱即用。
答案 5 :(得分:0)
问题是我们的一个构建后步骤在TARGET_BUILD_DIR
中留下了一个迷路文件夹。这导致生成的xcarchive
被格式化为可怕的通用存档。我在xcarchive
本身之后删除文件夹的尝试注定要失败,因为xcarchive
在创建时被标记为 generic (如某些人所证明的那样)缺少Info.plist
个字段)。在完成所有构建阶段后,我确保TARGET_BUILD_DIR
仅包含.app
,生成的xcarchive
已正确格式化为 iOS应用归档。反过来,xcarchive
可以通过xcodebuild -exportArchive -exportPlistOptions
轻松导出到正确的IPA,这是官方支持的Apple建议,负责处理所有有问题的SWIFT支持文件夹等。
答案 6 :(得分:0)
路径foo.xcarchive
中的存档不是单包存档。
关于此错误:
xcodebuild
存档