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

IOS打包脚本思路

2015-04-30 14:13 225 查看
ios 打包脚本。目的直接生成可用于上传APP STORE的ipa文件,提供测试直接测试。

前提是已经有一个可以编译的工程,并且有苹果的开发账号并生成了各种证书

主要三个步骤:

一、准备证书文件(都是distribution的),并导入;

这里用到3个相关文件,一个.p12、一个.cer,还有一个.mobileprovision(暂且用 distribution.p12、distribution.cer、distributionProfile.mobileprovision 命名)

双击可以将上述文件导入到系统当中,我们这里介绍用命令行导入的方法,以便用机器来帮助我们完成这些工作。

首先是需要导入证书:这步骤前请确认这3个文件保存的目录,用终端进入这个目录。

#解锁钥匙串,证书是需要导入到钥匙串中的,如果钥匙串处于锁定状态,可以用这个命令解锁,USERNAME是用户名

[run in terminal] security unlock-keychain /Users/USERNAME/Library/Keychains/login.keychain

#导入distribudion证书私钥,PASSWORD是证书的密码

[run in terminal] security import ./distribution.p12 -k ~/Library/Keychains/login.keychain -P PASSWORD -T /usr/bin/codesign

#导入distribudion证书公钥,可以下载得到

[run in terminal] security import ./distribution.cer -k ~/Library/Keychains/login.keychain

#导入产品provision,USERNAME是用户名

cp ./distributionProfile.mobileprovision "/Users/USERNAME/Library/MobileDevice/Provisioning Profiles/distributionProfile.mobileprovision"

执行完上述的命令后可以,分别在钥匙串中看到公钥和私钥的证书,在iPhone实用工具(或xcode4+ /Organizer/Devices/Provision Profiles)找到provision记录。

注意:如果要用ssh命令远程启动执行步骤2中的脚本,需要用到钥匙串的解锁。

 

二、 编译脚本的编写,与执行

用脚本生成ipa文件主要用到两个命令,一个是 xcodebuild、一个是 cxrun,细节可以问google,文档很多。可以直接将下面的两个/*——————*/之间的内容拷贝生成一个 build.sh文件。

将这个build.sh连同上面的distributionProfile.mobileprovision文件一同拷贝到你的工程目录下(与.xcodeproj同一个目录)。终端中cd到这个目录下,运行下面的命令

[run in terminal]sh build.sh

注意脚本中需要修改两处,证书名称"iPhone Distribution: XXXXX"替换成你自己证书的名称,这个名称可以通过下面的命令得到。

[run in terminal]certtool d ./distribution.cer |grep iPhone

这个命令的输出:   Common Name     : iPhone Distribution: XXXXXXX

只要拷贝其中的"iPhone Distribution: XXXXXXX"覆盖即可。

还需要将TARGET_LIST缓存你自己project中的工程名字

/*————————————————————————————————————————————————*/

#!/bin/sh

TARGET_LIST="wirelessframe"

CON
4000
FIGURATION="Release"

DISTRIBUTION_CERTIFICATE="iPhone Distribution: XXXXX"

PROVISIONING_PROFILE_PATH="distributionProfile.mobileprovision"

# BUILD_DATE_TAG=$(date "+%Y%m%d")

# LOG_FILE="$(pwd)/${BUILD_DATE_TAG}.log"

  

BUILD_DIRECTORY="$(pwd)/build/${CONFIGURATION}-iphoneos"

rm -f ${BUILD_DIRECTORY}/*.ipa

  

  

/usr/bin/xcodebuild -sdk iphoneos $TARGET_LIST -configuration "${CONFIGURATION}" clean build

  

if [ ! -d "$(pwd)/build/${CONFIGURATION}-iphoneos/${TARGET_LIST}.app" ]; then

echo "ERR::Building APP file fail."

exit

else

echo "--BUILD APP OK"

fi

 

APP_FILENAME="${TARGET_LIST}.app"

    IPA_FILENAME="${TARGET_LIST}_${BUILD_DATE_TAG}.ipa"

  

  

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${BUILD_DIRECTORY}/${APP_FILENAME}" -o "${BUILD_DIRECTORY}/${IPA_FILENAME}" --sign "${DISTRIBUTION_CERTIFICATE}" --embed "${PROVISIONING_PROFILE_PATH}"

 

if [ $? != 0 ]; then

echo "ERR::Building IPA fail."

exit

else

echo "--${IPA_FILENAME} OK"

fi

  

# cp ${BUILD_DIRECTORY}/*.ipa ${PACKAGE_DIR}

/*————————————————————————————————————————————————*/

 

如果以前正常会生成一个ipa文件包,这个包就是我们用来测试和上传的ipa文件了。这里如果遇到codesion的错误,表示证书可能有问题,你可以检查证书,并确保证书正常导入。

 

三、 上传工具介绍

xcode自带了上传工具,以xcode4.5为例 在Finder中找到xcode->鼠标右击选择显示包内容->Contents->Applications->Application Loader

用法可以见 【 http://open.zhui.cn/index.php?title=AppStore新应用上传指南】
 

另外:扩展方面,在此脚本的基础上做一些变动可以支持打越狱的渠道包。也可以做OTA下载等等。如果将上面的3个证书缓存开发证书,还可以配合hudson完成自动化的提交验证和定时打包等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios脚本打包