转载

iOS自动化打包上传的踩坑记

很久以前就看了很多关于 iOS 自动打包 ipa 的文章, 看着感觉很简单, 但是因为一直没有 AppleDeveloper 账号可以给我用, 到了真的要搞自动打包的时候, 才发现到处都是坑。

基本命令

  1. xcedebuild: 生成 Archive 、导出 ipa , 还有其它功能…

  2. xcrun: 把 *.app 打包成 ipa , 还有其它功能…

基本使用

一. xcedebuild 打包 Archive 文件

xcedebuild -workspace ${path to *.xcworkspace} -scheme ${scheme} -destination generic/platform=iOS archive -configuration Release ONLY_ACTIVE_ARCH=NO -archivePath ${export path *.arichive}
  • -workspace 你的 *.xcworkspace 文件

  • -scheme 项目文件里面的 scheme

  • -archivePath 生成的 *.arichive 文件路径

二. xcedebuild*.archive 导出 ipa

xcedebuild -exportArchive -exportFormat IPA -archivePath ${path to *.archive} -exportPath ${export path *.ipa} -exportProvisioningProfile ${ProvisioningProfileName}
  • -archivePath 你的 *.archive 文件, 可以使用上一个命令导出

  • -exportPath 导出的 ipa 路径

  • exportProvisioningProfile 你的Distribution发布证书的名称(只需要名称)

三. xcrun 打包 ipa

"xcrun -sdk iphoneos PackageApplication -v ${path to *.app} -o ${package path *.ipa}"
  • -v 你的 *.app 文件, 生成的 *.archive 里面有

  • -o 打包生成的 *.ipa 文件路径, 注意!!!这里是不能填相对路径, 因为这里的路径环境变量不是当前执行命令的路径了

踩坑

坑一

使用第一个命令前, 需要确保你的项目的签名配置好, 证书下好最新的

坑二

第二个命令的 -exportProvisioningProfile 填的只是你的发布证书的名称, 不是那一串 id

坑三

第二个命令打包出来的 *.ipa 不能用来上传到 AppStore , 一直报CocoaPods里面的第三方库签名错误

坑四

打包出来的 *.ipa 需要上传到 AppSotre 的话, 可以使用第三个命令,  xcrun 那一个

坑五

使用第三个命令打包出来的 *.ipa , 上传到 AppStore 之后, 登录到 iTunes Connect-APP-所有构建版本 查看到上传的 *.ipa 正在构建。但是过了一会儿,  AppleDeveloper 账号的邮箱就会收到一封报错的邮件, 大概是说你的 *.ipa 包里面, 缺少了一个 SwiftSupport 文件夹

经过各种搜索之后, 原来需要把 xcrun 打包出来的 *.ipa 解压, 然后新建一个文件夹,  *.archive 里面的 SwiftSupport 文件夹 copy 进去, 还有把 ipa 解压出来的 move 进入, 最后打个zip包, 再改成 ipa 后缀就可以上传到 AppStore 了(应该吧, 还没测试????)

番外篇

在踩到了第五个坑之后, 在 github 发现了一个 iOS 的打包、发布库…

上地址:  https://github.com/nomad/shenzhen

懒得自己搞的可以使用这个库, 感觉还是挺不错的

原文地址: iOS自动化打包上传的踩坑记

原文  http://www.cocoachina.com/ios/20160624/16811.html
正文到此结束
Loading...