简介:针对ios打包需要提供用于发布程序的p12证书,证书的password、以及对应的描述文件。
传统做法:
1.在要导入的OS X系统上双击该P12证书进行导入,如果有密码的话则在提示框中输入对应的密码即可。(另外针对后面自动化调用的话还需要挨个设置证书的属性为允许任何程序使用)
2.双击证书的描述文件mobileprovision(mobileprovision描述文件里面包含了 AppId,证书信息、设备信息等,要得到这些信息得费些功夫。mobileprovision文件直接用文本工具打开是无法看到里面的内容的,因为它是经过特殊编码的)
双击后实际上系统自动做的是将该描述文件改名为以uuid.mobileprovision命名的文件并放到 ~/Library/MobileDevice/Provisioning Profiles/ 目录下, 该目录下的描述文件将会被xcode读取到。所以双击只是将文件拷贝到这个目录并重命名该文件。
通过命令来实现:
1.利用security命令安装p12证书(检验证书的时候需要先将p12安装到Mac的Keychain里面)
securityimport`p12_filepath`-k /Users/jenkins/Library/Keychains/login.keychain-P"p12_password" -A -T /usr/bin/codesign
注意:如果Keychain是输入Lock状态的,证书是无法正常导入的,需要先解锁,手工解锁或者用下面的命令解锁
security unlock-keychain-p'mac_password'/Users/jenkins/Library/Keychains/login.keychain
通过脚本来实现
1.导入p12文件
security unlock-keychain-p'mac_password'/Users/jenkins/Library/Keychains/login.keychain
securityimport`p12_filepath`-k /Users/jenkins/Library/Keychains/login.keychain-P"p12_password" -A -T /usr/bin/codesign
先执行第一句的好处是使得后面导入命令中的-A选项生效(允许任何程序访问)-------直接执行后面导入命令是不会起到这个效果的。
2.执行证书的描述文件
provision_xcode_dir="/Users/jenkins/Library/MobileDevice/Provisioning Profiles/"
provision_bds_dir="/home/q/provision/"
uuid=$(grep UUID -A1 -a $provision_file | grep -io "[-A-Z0-9]\{36\}")
if [ $? -ne 0 ] ; then
echo "I can not find uuid in $provision_file"
exit 1
else
echo cp $provision_file ${uuid}.mobileprovision
cp $provision_file ${uuid}.mobileprovision
echo cp ${uuid}.mobileprovision "${provision_xcode_dir}/"
cp ${uuid}.mobileprovision "${provision_xcode_dir}/"
echo cp $provision_file "${provision_bds_dir}/"
cp $provision_file "${provision_bds_dir}/"
fi