Xcode 3.2在Build菜单下提供了一个很棒的新功能,“Build and Archive”,它可以生成一个适合Ad Hoc分发的。ipa文件。你也可以打开管理器,选择“存档应用程序”和“向iTunesConnect提交应用程序”。
有没有办法从命令行(作为构建脚本的一部分)使用“构建和存档”?我假设xcodebuild会以某种方式涉及到,但手册页似乎没有说任何关于这方面的内容。
Michael Grinich要求澄清;以下是你不能用命令行构建的功能,这些功能你只能在“构建和存档”之后用Xcode的管理器实现。
You can click "Share Application..." to share your IPA with beta testers. As Guillaume points out below, due to some Xcode magic, this IPA file does not require a separately distributed .mobileprovision file that beta testers need to install; that's magical. No command-line script can do it. For example, Arrix's script (submitted May 1) does not meet that requirement.
More importantly, after you've beta tested a build, you can click "Submit Application to iTunes Connect" to submit that EXACT same build to Apple, the very binary you tested, without rebuilding it. That's impossible from the command line, because signing the app is part of the build process; you can sign bits for Ad Hoc beta testing OR you can sign them for submission to the App Store, but not both. No IPA built on the command-line can be beta tested on phones and then submitted directly to Apple.
我希望有人能来证明我是错的:这两个功能在Xcode GUI中都很好用,不能从命令行复制。
如何用命令构建iOS项目?
Clean : xcodebuild clean -workspace work-space-name.xcworkspace -scheme scheme-name
&&
Archive : xcodebuild archive -workspace work-space-name.xcworkspace -scheme "scheme-name" -configuration Release -archivePath IPA-name.xcarchive
&&
Export : xcodebuild -exportArchive -archivePath IPA-name.xcarchive -exportPath IPA-name.ipa -exportOptionsPlist exportOptions.plist
**What is ExportOptions.plist?**
ExportOptions。plist在Xcode中是必需的。它允许您在创建ipa文件时指定一些选项。当你使用Xcode存档应用程序时,你可以在友好的UI中选择这些选项。
重要:ExportOptions.plist中的发布和开发方法是不同的
应用商店:
exportOptions_release ~ method = app-store
发展
exportOptions_dev ~ method = development
对于Xcode 7,你有一个更简单的解决方案。唯一的额外工作是您必须创建一个用于导出存档的配置plist文件。
(与Xcode 6相比,在xrun的结果中xcodebuild -help, -exportFormat和-exportProvisioningProfile选项不再被提及;前者被删除,后者被-exportOptionsPlist取代。)
步骤1,将目录更改为包含.xcodeproject或.xcworkspace文件的文件夹。
cd MyProjectFolder
第二步,使用Xcode或/usr/libexec/PlistBuddy exportOptions。创建导出选项的Plist文件。顺便说一下,xcrun xcodebuild -help会告诉你必须向plist文件插入哪些键。
第三步,创建。xcarchive文件(实际上是文件夹),如下所示(build/ directory将由Xcode立即自动创建),
xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive
第四步,像这样导出。ipa文件,这与Xcode6不同
xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/ -exportOptionsPlist exportOptions.plist
现在,您将在build/ directory中获得一个ipa文件。只要把它发送到苹果应用商店。
顺便说一下,Xcode 7创建的ipa文件比Xcode 6大得多。
更进一步,用Xcode 7通过命令行上传到iTunesConnect !
(假设您从一个.ipa开始,该ipa已经使用正确的发布概要文件和签名标识进行了签名。)
输入altool,应用程序加载器的CLI界面(文档,第38页)。
隐藏在Xcode的深处。应用程序的结构,是一个方便的功能,让我们直接上传到ItunesConnect。
/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool
只需运行$ altool——upload-app -f file -u username [-p password]即可将你新创建的。ipa文件直接上传到苹果。
密码是可选的,如果您不使用该命令,将提示您输入密码。
如果在验证步骤中应用程序有任何问题,控制台将把它们打印出来。
如果您不想保存路径的位置,则可能必须将路径导出到altool。
export PATH=$PATH:/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
这就是它!只需登录iTunesConnect.com,选择你的新版本测试testflight。
最后注意:如果你在启动iTunesTransporter时出现异常:Transporter not found at path: /usr/local/itms/bin/iTMSTransporter。你应该重新安装应用程序,你可以按照这个SO答案上的建议,运行一个符号链接到正确的位置:
ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms