您的位置:首页 > 移动开发 > IOS开发

用命令行自动打包成.ipa文件-完全攻略

2014-07-29 19:01 211 查看


场景

在我们将工程开发完成后,需要给客户看测试版本时,就需要给你客户ipa文件,用91助手安装。如果,是直接使用xcode来做的效率是非常低下的。当有一点小改动需要重新出包时,就需要人工再次重复打包过程,这样的工作,对于我们写程序的人来说,完成可以用程序搞定。所以,我们就应该结合我们的实际工作情况,做我们自己的自动打包工具。下面,我们就来对于核心的一些步骤,出来走几步。


准备

我们需要用到xcode的一些命令,所以,我们必须先安装Command Line Tools。

安装步骤如下:


1、xcode->preferences




2、选择Downloads



这里是已经安装的状态,如果你的是没有安装的,点击直接安装。


3、设置路径

安装好了之后,可能会出现如下的问题:

xcrun: Error: could not stat active Xcode path '/Volumes/Xcode/Xcode44-DP7.app/Contents/Developer'. (No such file or directory)

这个问题的出现,是因为命令行没有找到xcode的路径,需要在终端运行如下语句:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer 

ok,准备工作已经完成。


用命令行完成打包

1、用命令行找到工程文件。

我这里的工程文件是paytest。

下面我们clean一下工程。

输入命令行:xcodebuild clean,结果如下。



clean succeeded,clean成功。

xcodebuild build  同上。


下面是如何打包成ipa文件。这里需要介绍下xcrun。

此工具主要用于将app文件打包成ipa格式的程序包。(主要用于已越狱手机)。 具体用法如下:  1/usr/bin/xcrun -sdk iphoneos PackageApplication –v [{TARGET}.app] -o [{TARGET}.ipa] --sign [{Iphone Distribution:xxx}] –embed [{xxx.mobileprovision}] 其中:-v 对应的是app文件的绝对相对路径 –o 对应ipa文件的路径跟文件名 –sign 对应的是 发布证书中对应的公司名或是个人名
–embed 对应的是发布证书文件 注意如果对应的Distribution 配置中已经配置好了相关证书信息的话 –sign 和 –embed可以忽略 

打包命令:xcrun -sdk iphoneos packageapplication -v /Users/zcl/desktop/222/paytest/build/release-iphoneos -o /Users/zcl/desktop/testpay.ipa

获得的ipa文件。

入门
自动化编译脚本在网上已经有很多了,当然好处也是显而易见,可以让我们脱离xcode ide的编译,当然对于需要编译打包多个应用优势就很明显,避免了我们人为操作可能的出错,和机械重复的枯燥。

自动化编译所需要的命令

xcodebuild

xcrun

编译app文件sample

xcodebuild  -target yourapptarget -sdk iphoneos -configuration release 

编译带有签名的ipa文件sample

/usr/bin/xcrun -sdk iphoneos PackageApplication yourapp.app -o youripa.ipa --sign iPhone Distribution: your info --embed your mobileprovision 

合并i386 arm静态库

lipo -create yoursimlib yourarmlib -output ret.a

通过这样几条命令再加上简单的shell脚本 我们就很容易的可以定义我们自己定义脚本 用来编译静太库,bundle文件和我们的project。

小技巧

1.可能我们要取到xcodebuild编译完之后的状态来 决定我们下一步要做什么 或是做回显,我们可以有 #? 来取到上一条shell命令的执行结果 ,0 代表执行成功 非0代表执行失败 (这个非0值是不是对应着每个特定错误状态,具体还没有研究哈)

if [ $? != 0 ]

then

  sp_msg "FAILED"

  exit 1

fi

2.-sdk 命令对于iOS 为iphoneos ,iphonesimulator 或是 macosx 可以写成iphoneos6.0等来指定sdk版本,默认不写的话 就会匹配当前sdk的版本

当然对于现在的图书类等模板程序越来越多,简单的这几个-target参数已经无法满足我们的需要,因为我们可能需要更改程序的名称 版本 或者其他的标识符,所以我们需要用到-xcconfig这个参数来定制我们的buildsetting,在接下来的高阶讨论中我们就会对定制配置来做讨论。

 



最后,用手机助手安装,测试。


后记

这里只是对命令行打包做了一个简单的介绍,如果要做自动打包工具的话,那么这里已经完成了工作的核心部分了。其他的只需要配合自己的工程完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IOS