ios - 在 Travis CI 上,iOS 应用程序代码如何签名并上传到 Apple TestFlight?

标签 ios app-store-connect travis-ci testflight

我一直在尝试将 Travis CI 设置为构建服务器,但在对应用程序进行代码签名和将其上传到 TestFlight 时遇到了问题。

主要问题是上传到 Apple TestFlight。我可以在 testflightapp.com 上找到很多关于如何上传到旧版本 TestFlight 的在线指南,但我还不知道如何上传到 iTunes Connect。

我尝试使用 altool 命令:

altool --upload-app -f "$OUTPUTDIR/$APP_NAME.ipa" -u '$ITUNES_CONNECT_USERNAME' -p '$ITUNES_CONNECT_PASSWORD'

但在 Travis CI 上它不起作用: altool:找不到命令

-

到目前为止,我主要使用了以下教程:http://www.raywenderlich.com/109418/travis-ci-tutorialhttps://www.objc.io/issues/6-build-tools/travis-ci/#app-signing

这是一个有用的官方页面: http://docs.travis-ci.com/user/languages/objective-c/

-

这是我的项目设置:

.travis.yml 文件:

language: objective-c
osx_image: xcode7.1
xcode_workspace: XXXXXXX.xcworkspace
xcode_scheme: XXXXXXX
env:
  global:
  - APP_NAME="XXXXXX"
  - DEVELOPER_NAME="iPhone Distribution: XXXXXXX (XXXXXXX)"
  - PROFILE_NAME="XXXXXXXXXXXXX"
  - ITUNES_CONNECT_USERNAME="XXXXXX@XXXXXX.com"
  - secure: XXXXXXXXXXXXXXXXXXXXXX
before_script:
- ./scripts/add-key.sh
- ./scripts/update-bundle.sh
script:
- xctool -workspace XXXXXXX.xcworkspace -scheme XXXXXXX -sdk iphoneos -configuration
  Release OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY=""
  CODE_SIGNING_REQUIRED=NO
after_success:
- ./scripts/sign-and-upload.sh
after_script:
- ./scripts/remove-key.sh

请注意,构建命令末尾的 CODE_SIGN_IDENTITY=""CODE_SIGNING_REQUIRED=NO 存在,否则应用将无法构建(有关详细信息,请参阅 https://github.com/travis-ci/travis-ci/issues/3047,有关更多信息,请参阅 https://stackoverflow.com/a/11647504/404409关于它的信息)。这可能是下面描述的代码签名问题的原因。

add-key.shsign-and-upload.shremove-key.sh 脚本基本上只是直接复制来自 https://www.objc.io/issues/6-build-tools/travis-ci/#add-scripts

除了将此行添加到 sign-and-upload.sh 的末尾之外:

altool --upload-app -f "$OUTPUTDIR/$APP_NAME.ipa" -u '$ITUNES_CONNECT_USERNAME' -p '$ITUNES_CONNECT_PASSWORD'

-

应用程序构建,但这是末尾 sign-and-upload.sh 脚本的输出:

env SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication /Users/travis/build/XXXXXX/ios/build/Release-iphoneos/XXXXXXX.app -o /Users/travis/build/XXXXXX/ios/build/Release-iphoneos/XXXXXXX.ipa -sign iPhone\ Distribution\=XXXXXXXXXXXX -embed /Users/travis/Library/MobileDevice/Provisioning\ Profiles/XXXXXXXXXXX.mobileprovision
error: Failed to read entitlements from '/var/folders/my/XXXXXXXXXXXXXXXXXXX/X/XXXXXXXXX/Payload/Kimono.app'
./scripts/sign-and-upload.sh: line 20: altool: command not found

-

如果您对 iOS 应用程序应该如何在 Travis CI 上完成,或者如何通过命令行将构建提交到 TestFlight 有任何线索,我将永远感激不已!

谢谢。

最佳答案

在我的机器上,我的 PATH 中没有 altool,但 xcrun altool 有效。也许试试看?

关于ios - 在 Travis CI 上,iOS 应用程序代码如何签名并上传到 Apple TestFlight?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612042/

相关文章:

ios - 重写一些基本的 swift 代码,使用大的 if 语句

iphone - iOS:如何跟踪用户创建的书签?

ios - CFBundleVersion 必须是句号分隔的列表

xcode - iTunes 连接错误 "To use this application, you must first sign in to iTunes Connect and sign the relevant contracts."

c++ - 如何在 Travis CI 中使用最新的 boost 版本?

ios - 后台根据时间激活本地通知

ios8 - 在 iTune 上上传并启用内部测试的应用程序的新版本未出现在 Testflight 应用程序上

c# - Travis CI 上使用 Mono 的 NuGet 包恢复失败

android - Xamarin 和 Travis-ci

android - Cordova 的地理定位插件如何工作?