iOS利用(Shell脚本)自动打包项目工程生成ipa

来源:转载

刚刚进入一家游戏公司,今天在研究iOS利用脚本打包项目工程。用xcode打包速度慢而且繁琐,所以选择脚本来做,在这里分享一下。


打包方法
一.通过Xcode

其实当我们Xcode点击了build或者运行comand+R之后,Xcode自己执行的命令是xcodebuild这条命令.
然后,编译好之后,怎么生产ipa包?
用xcrun命令


二.通过脚本

话不多说,先上手:
打开终端,cd到你的工程位置,然后先试一下xcodebuild命令,


 //xcrun 
chengpoleness@polen xcodebuild_iPA $ xcrun --version
xcrun version 29.
//xcodebuildchengpoleness@polen ios (develop) $ xcodebuild -version
Xcode 7.1.1
Build version 7D175

执行xcodebuild需要指定你所需要对应的workspace和scheme
在执行$xcodebuild -workspace前,先查看下-list,这个可以知道xcodebuild命令下对应的参数需要填写的内容


 chengpoleness@polen ios (develop) $ xcodebuild -list 
2016-05-02 15:24:26.656 xcodebuild[16535:154176] [MT]PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeColors.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2016-05-02 15:24:26.661 xcodebuild[16535:154176] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/OMColorSense.xcplugin' not present in DVTPlugInCompatibilityUUIDs
Information about project "xxx":
Targets: xxx
xxxTests
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then
"Release" is used. Schemes: xxx

然后执行$xcodebuild -workspace


 xcodebuild-workspace/Users/chengpoleness/Documents/code/xxx/ios/xxx.xcworkspace -scheme xxx

再执行


$ xcodebuild

成功后安装


$sudo gem install gym

下面介绍一下脚本语言


#!/bin/bash
#计时SECONDS=0
#假设脚本放置在与项目相同的路径下
project_path=$(pwd)
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定项目的scheme名称
scheme="DemoScheme"
#指定要打包的配置名
configuration="Adhoc"
#指定打包所使用的provisioning profile名称
provisioning_profile='AdHoc Profile'
#指定项目地址
workspace_path="$project_path/Demo.xcworkspace"
#指定输出路径
output_path="/Users/your_username/Documents/"
#指定输出归档文件地址
archive_path="$output_path/Demo_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/Demo_${now}.ipa"
#获取执行命令时的
commit messagecommit_msg="$1"
#输出设定的变量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===profile: ${provisioning_profile}==="
echo "===commit msg: $1==="
#先清空前一次
buildxctool clean -workspace ${workspace_path} -scheme ${scheme} - configuration ${configuration}
#根据指定的项目、scheme、configuration与输出路径打包出archive文件
xctool build -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration} archive -archivePath ${archive_path}
#使用指定的provisioning profile导出ipa
#我暂时没找到xctool指定provisioning profile的方法,所以这里用了
xcodebuildxcodebuild -exportArchive -archivePath ${archive_path} -exportPath ${ipa_path} -exportFormat ipa -exportProvisioningProfile "${provisioning_profile}"
#上传到firfir
publish ${ipa_path} -T fir_token -c "${commit_msg}"
#输出总用时
echo "===Finished. Total time: ${SECONDS}s==="

在写好脚本的前提下执行终端命令

在终端执行完后会生成Xcarchive的一个文件 如下图



屏幕快照 2016-12-09 下午5.43.53.png

这种结果也是这套脚本的一个缺陷 需要在终端在执行一条语句将Xcarchive文件转成ipa的包


xcodebuild -exportArchive -exportFormat IPA -archivePath /Users/yyhApple/Desktop/LetMeSee.xcarchive -exportPath /Users/yyhApple/Desktop/LetMeSee.ipa

成功后如下图



屏幕快照 2016-12-09 下午5.48.40.png

这个方法虽然可以通过脚本打包,但是还是有缺陷
目前本人还在研究更方便快捷的方法
还会更新。。。。。。




分享给朋友:
您可能感兴趣的文章:
随机阅读: