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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

C# 6.0本质论

C# 6.0本质论

[美] Mark Michaelis(马克·米凯利斯)、[美] Eric Lippert(埃里克·利珀特) / 周靖、庞燕 / 人民邮电出版社 / 2017-2-1 / 108

这是C#领域中一部广受好评的名作,作者用一种易于理解的方式详细介绍了C#语言的各个方面。全书共有21章和4个附录(其中哟2个附录从网上下载),介绍了C#语言的数据类型、操作符、方法、类、接口、异常处理等基本概念,深入讨论了泛型、迭代器、反射、线程和互操作性等高级主题,还介绍了LINQ技术,以及与其相关的扩展方法、分部方法、Lambda表达式、标准查询操作符和查询表达式等内容。每章开头的“思维导图”......一起来看看 《C# 6.0本质论》 这本书的介绍吧!

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

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码