如何从命令行执行iOS应用程序validation

是否可以通过命令行执行iOS应用程序的本地validation(可以在pipe理器的“存档”下查看)?

更新:只是为了澄清 – 这里的目标是最终使这个validation成为我的iOS应用程序的持续集成过程的一部分。

以前我用过这个命令:

 xcrun -sdk iphoneos Validation /path/to/MyApp.app or /path/to/MyApp.ipa 

这将检查codesigning,图标尺寸等。我不知道如果Xcode组织者或应用程序加载程序的应用程序除了这个工具之外做任何其他validation,并且该工具本身没有帮助或命令行标志,我可以find。

更新

这个问题促使我深入一点。 运行strings工具会显示以下开关:

 -verbose -upload -warnings -errors -online 

-online选项显然会validationiTunes连接中第一个可用的应用程序的二进制文件,但我还没有想出如何传递用户名/密码到命令。 不过,我猜测持续集成,你可能只想要本地validation。

您可以使用以下命令从命令行进行validation:

 xcrun -sdk iphoneos Validation /path/to/App.{app or ipa} 

它有什么检查它执行有点不清楚,但它可能至less代码签名和图标尺寸。

除了本地validation外,还可以执行在线validation(但仅限于IPA包):

 xcrun -sdk iphoneos Validation -verbose -online /path/to/App.ipa 

为此,您需要将iTunes Connect凭据存储在钥匙串上的特殊条目中。 要创build这个条目:

  1. 打开钥匙串访问应用程序;
  2. 创build一个新的密码项目( 文件 > 新密码项目…
  3. 钥匙串项目名称: Xcode:itunesconnect.apple.com
  4. 帐户名称/密码:iTunes Connect的凭证

在线validation看起来相当粗糙,但是所有的检查都是通过Xcode中的Organizer窗口进行validation。 可悲的是,它似乎没有设置一个非零退出代码失败,这意味着输出刮检测错误。 我目前的检测失败的启发式是Performing online validation...行后的任何输出的存在。

鉴于缺乏文件,它几乎肯定不被支持。

如果你只想validation签署的ipa文件,有工具来做altool

 $ /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -h Copyright (c) 2009-2015, Apple Inc. Version 1.1 Usage: altool --validate-app -f file -t platform -u username [-p password] altool --upload-app -f file -t platform -u username -p password -f, --file Filename. -t, --type Type/Platform: osx, ios. -u, --username Username. Required to connect for validation and upload. -p, --password Password. Required if username specified. Password is read from stdin if one is not supplied. May use @keychain: or @env: prefixes followed by the keychain or environment variable lookup name. eg -p @env:SECRET which would use the value in the SECRET environment variable. -v, --validate-app Validate an app archive. The username, password, and file path to app archive are required. --upload-app Uploads the given app archive. The username, password, and file path to app archive are required. --output-format [xml | normal] 'xml' displays error output in a structured format; 'normal' outputs in an unstructured format (default) -h, --help Display this output. 

例如。

  /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -v -f APP.ipa -u itunesconnect@user.com -p password 

您可以在altool命令的帮助下validation应用程序,如下所示:

./altool –validate-app -f <'ipaFile'>