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

来源:互联网 发布:淘宝脱毛仪器有效果吗 编辑:程序博客网 时间:2024/06/05 02:15

刚刚进入一家游戏公司,今天在研究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

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

0 0
原创粉丝点击