iOS 命令行打包并上传 TestFlight

栏目: IOS · 发布时间: 5年前

内容简介:网络上教大家如何用命令行的方式构建 iOS ipa 包并上传 TestFlight 的文章非常多了,最近也正好用到这些来结合 Jenkins 做持续集成。亲手实践了一把也找了很多相关的资料,发现大多成文较早,都或多或少的有些问题,所以这里也把自己最近一次实践做个总结。需要注意的点都标注上了。我用的基本上都是最新的 iOS 开发环境,简单罗列先给出具体的命令

网络上教大家如何用命令行的方式构建 iOS ipa 包并上传 TestFlight 的文章非常多了,最近也正好用到这些来结合 Jenkins 做持续集成。亲手实践了一把也找了很多相关的资料,发现大多成文较早,都或多或少的有些问题,所以这里也把自己最近一次实践做个总结。需要注意的点都标注上了。

环境

我用的基本上都是最新的 iOS 开发环境,简单罗列

  • Mac OS X 10.14.1 Mojave

  • Xcode 10.1(10B61)

  • CocoaPods 1.6.0.beta.2

这里 CocoaPods 之所以用了 Beta 版本是因为目前为止稳定版和最新的 Xcode 10 兼容性上有些问题。当然了,在更新 CocoaPods Beta 版本的时候发现 gem 命令更新针对 Mac OS X 10.14 也有了改变,具体更新 CocoaPods 的命令是:

sudo gem install -n /usr/local/bin cocoapods --pre

构建 Archive

先给出具体的命令

/usr/bin/xcodebuild -scheme  -configuration Release -derivedDataPath derivedData -archivePath  -destination generic/platform=iOS clean archive

如果你使用了 CocoaPods 做你的 iOS 工程依赖管理,那么你的 iOS 工程中会存在一个 xcworkspace 因此构建的命令也会稍显不一样,要增加一个参数项指定你的 xcworkspace 位置

/usr/bin/xcodebuild -workspace  -scheme  -configuration Release -derivedDataPath derivedData -archivePath  -destination generic/platform=iOS clean archive

导出 IPA

上一步构建 Archive 并不难,我自己卡在导出 IPA 包这步卡的比较久,主要是一直没有搞正确 exportOptionsPlist 这个 plist 文件的写法。

还是先给出具体的命令

/usr/bin/xcodebuild -exportArchive -exportOptionsPlist  -archivePath  -exportPath 

导出 ipa 包最关键的是要把 exportOptionsPlist 参数指定的 plist 文件写正确。这里有个敲门,那就是你可以先使用 Xcode 做一次 Archive 然后将构建成功的工程通过 Xcode 的 Organizer 做一次发布。当然,不要选择直接发布到 TestFlight 而是在选择 Distribute App 后要选择 iOS App Store 然后选择 Export 而不是 upload

iOS 命令行打包并上传 TestFlight

iOS 命令行打包并上传 TestFlight

iOS 命令行打包并上传 TestFlight

iOS 命令行打包并上传 TestFlight

iOS 命令行打包并上传 TestFlight

在你用 Xcode 导出的可以上传到 TestFlight 的包中你可以找到一个名为 ExportOptions.plist 的文件。使用这个文件作为命令行导出 ipa 是 exportOptionsPlist 参数的文件输入就一定不会错了。

顺便给出我导出的这个 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>destination</key>
  <string>export</string>
  <key>method</key>
  <string>app-store</string>
  <key>signingStyle</key>
  <string>automatic</string>
  <key>stripSwiftSymbols</key>
  <true/>
  <key>teamID</key>
  <string></string>
  <key>uploadBitcode</key>
  <true/>
  <key>uploadSymbols</key>
  <true/>
</dict>
</plist>

“ 就是开发者账号里那个 10 位的 team id

关于证书

构建、导出、上传 TestFlight 都需要证书这个是基本概念。这里要顺带提上一句的是证书放置的位置。在 钥匙串访问 程序里证书可以放置的位置有三个:

  • 登陆

  • 本地项目

  • 系统

请将出包上传 TestFlight 用的证书放置在【登陆】这个位置,千万不要放置在【系统】中,否则每次出包系统会弹出对话框让你输入用户登录认证的用户名和密码,这样是无法做到自动化出包的。

上传 TestFlight

最后一步上传 TestFlight 就没什么难点了,直接给出命令

/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool --upload-app -t ios -f  -u  -p 

以上所述就是小编给大家介绍的《iOS 命令行打包并上传 TestFlight》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编译器设计

编译器设计

Keith Cooper、Linda Torczon / 郭旭 / 人民邮电出版社 / 2012-12 / 99.00元

深入剖析现代编译器运用的算法和技术 强调代码优化和代码生成 体现编译原理教学的最新理念 本书旨在介绍编译器构造法中的艺术和科学。书中深入分析现代编译器后端所用的算法和技术,重点讨论代码优化和代码生成,详细介绍了用几个编程语言编写的示例等。 Keith D. Cooper 莱斯大学计算机科学系计算工程专业Doerr特聘教授,曾任该系系主任。Cooper博士的研究课题涵盖过程间......一起来看看 《编译器设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具