iOS自动打包并发布测试版本

本文主要涉及一下几个方面的内容:

1、xcodebuild的介绍

2、使用xcodebuild打包生成Ad-hoc的ipa文件

3、将打包好的文件上传到测试平台

3、将过程脚本化

xcodebuild简介

xcodebuild 是苹果自己发布的自动构建的工具,Xcode的Command Line Tools自带该工具,一般不需要我们手动安装。在Xcode8以前还可以使用xctool来实现,但是xctool在Xcode8以后不再支持build功能,Facebook团队推荐转回官方的xcodebuild,坑爹的我还花了一段时间研究。

我们需要在目标工程目录下执行 xcodebuild 命令,xcodebuild -help可查看相关的说明,里面的说明十分详细。

xcodebuild打包生成

打包ipa我们主要用到以下几条命令:

  1. xcodebuild clean -project $projectname -scheme $schemeName
    清理工程,避免出现一些奇怪的错误
  2. xcodebuild archive -project $projectname -scheme $schemeName -configuration $configuration -archivePath
    生成Archive文件
  3. xcodebuild -exportArchive -archivePath $archivePath -exportPath $exportPath -exportOptionsPlist $exportOptionsPlist
    从Archive文件导出ipa

-project:项目名称,如果工程目录里面里面有多个工程,必须指定,如果项目使用了cocoapods,此处应该使用-workspace,即

xcodebuild archive -workspace $projectname -scheme $schemeName -configuration $configuration -archivePath

-archivePath:Archive文件导出目的路径

-exportPath:ipa文件导出路径’

-scheme:指定scheme

-configuration:指定版本release或者debug

以上两个可以通过-xcodebuild -list查看可用值

-exportOptionsPlist:打包的相关配置参数,该参数是一个.plist文件路径,里面包含一些我们打包需要用到的配置,例如:


;


        method
        enterprise 
        compileBitcode 
        


对于大部分情况我们只需要指定这两个参数,更多详细的可参照xcodebuild -help里面的说明。
此外,-list, -showBuildSettings, -showsdks 的参数可以查看项目或者工程的信息。

上传到测试平台

本人使用的是fir,下载安装命令行客户端

fir publish filePath(ipa文件路劲)

如果使用的是其他的发布平台,将上传脚本替换成对应平台的即可

过程脚本化

#!/bin/sh
#项目路径
projectfile=/Users/my/Desktop/PackDemo

#工程文件路径
project=PackDemo.xcworkspace

#scheme名称
scheme=PackDemo

#target名称
target=PackDemo

#编译版本
configuration=Release

#archive文件路径
archivePath=~/desktop/打包/$target/$target.xcarchive

#ipa包导出路径
exportPath=~/desktop/打包/$target

#打包配置文件路径
exportOptionsPlist=$projectfile/exportOptionsPlist.plist

#上传时,ipa包路劲
publishPath=$exportPath/$target.ipa

#进入项目所在文件
cd $projectfile

# 清理工程
xcodebuild clean -workspace $project -scheme $scheme -configuration $configuration

#上传fir
function upload
{
    fir publish $publishPath
    rm -r $archivePath
}

#导出ipa文件,会在$exportPath路径生成ipa文件
function export
{
xcodebuild -exportArchive -archivePath $archivePath -exportPath $exportPath -exportOptionsPlist $exportOptionsPlist
if [ $? -eq 1 ]
then
echo "ipa导出失败"
read
else
clear
echo "ipa导出成功"
# upload
fi
}

#archive项目,会在$archivePath路径生成PackDemo.xcarchive文件
function archive
{
xcodebuild archive -workspace $project -scheme $scheme -configuration $configuration -archivePath $archivePath
if [ $? -eq 1 ]
then
echo "编译失败"
read
else
clear
echo "编译成功"
export
fi
}

#开始执行
archive

到此完成了自动化打包脚本,本人习惯为每个项目都生成一个对应的脚本,里面写好打包的工程配置,内容都基本相同,只需要修改对应的路径参数即可,每次需要打新的测试包,只需打开对应的脚本文件即可。
另外,Application Loader命令行可以让我们通过脚本上传App Store,详细的教程请参考苹果文档https://itunesconnect.apple.com/docs/UsingApplicationLoader.pdf

你可能感兴趣的:(iOS自动打包并发布测试版本)