IOS打包脚本思路

简介:
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完成自动化的提交验证和定时打包等。
目录
相关文章
|
1月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
25 0
|
3月前
|
图形学 数据安全/隐私保护 iOS开发
Unity与IOS⭐Xcode打包,上架TestFlight的完整教程
Unity与IOS⭐Xcode打包,上架TestFlight的完整教程
|
4月前
|
Android开发 iOS开发 开发者
ios应用打包、安装和上架攻略
假如是普通的证书或普通company证书只能上架才能安装(测试的话有其他安装方法,那是另外的话题),假如是企业类型的in house证书,则可以通过在线安装的方式,比如通过上传到一些分发平台,比如香蕉云编或蒲公英生成安装码扫码安装。
73 2
|
3月前
|
开发框架 监控 iOS开发
Flutter IOS 打包上架踩坑
Flutter IOS 打包上架踩坑
111 0
|
6月前
|
前端开发 JavaScript 程序员
HBuilderX使用mac打包ios应用提示苹果根证书没有安装
HBuilderX使用mac打包ios应用提示苹果根证书没有安装
137 0
|
6月前
|
数据安全/隐私保护 iOS开发 开发者
uniapp IOS从打包到上架流程(详细简单) 原创
uniapp IOS从打包到上架流程(详细简单) 原创
244 1
|
6月前
|
iOS开发 开发者
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
|
6月前
|
数据安全/隐私保护 开发者 iOS开发
iOS-打包上架构建版本一直不出现/正在处理/自动消失
iOS-打包上架构建版本一直不出现/正在处理/自动消失
138 0
|
6月前
|
移动开发 监控 小程序
mPaaS常见问题之uniapp ios端云打包的配置config文件如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
188 0
|
6月前
|
安全 网络安全 数据安全/隐私保护
iOS App的打包和上架流程
iOS App的打包和上架流程