您的位置:首页 > 运维架构 > Shell

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

2016-12-15 00:34 671 查看
刚刚进入一家游戏公司,今天在研究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的一个文件 如下图



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

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


成功后如下图



这个方法虽然可以通过脚本打包,但是还是有缺陷

目前本人还在研究更方便快捷的方法

还会更新。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell ios xcode 脚本 ipa