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"
CONFIGURATION="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完成自动化的提交验证和定时打包等。