iOS 自动打包 IPA 相关

Posted lesten

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 自动打包 IPA 相关相关的知识,希望对你有一定的参考价值。

自动安装证书和描述文件

#解锁 钥匙串

security unlock-keychain -p 电脑密码 $HOME/Library/Keychains/login.keychain

# 导入 证书
security import $run_path/$accountDir/$bundleid.p12 -k $HOME/Library/Keychains/login.keychain -P $p12Pwd -T /usr/bin/codesign

 #拷贝 描述文件   $HOME/Library/MobileDevice/"Provisioning Profiles"/  电脑都所有描述文件都放在这个路径下

cp $run_path/$accountDir/$bundleid.mobileprovision $HOME/Library/MobileDevice/"Provisioning Profiles"/$bundleid.mobileprovision

 

#自动出包 或者App 破解 重新打包 都需要用到重签名。

#重签名  根据描述文件 导出证书相关信息

security cms -D -i "$upload_path/upload/embedded.mobileprovision" > t_entitlements_full.plist

#通过PlistBuddy  从中拿出重签名需要的部分 

/usr/libexec/PlistBuddy -x -c ‘Print:Entitlements‘ t_entitlements_full.plist > t_entitlements.plist

#同样的解锁钥匙串

 security unlock-keychain -p lesten123 $HOME/Library/Keychains/login.keychain

#然后进行签名   ipacert="iPhone Distribution: XXXXXXXX. (*****)"
# codesign -fs "$ipacert"  embedded.mobileprovision --entitlements t_entitlements.plist game.ipa

 

签名成功后,可以用codesign校验 签名是否有效, 需要 将game.ipa 解压出app 然后用以下命令

codesign --verify game.app

如果什么都没输出 说明校验通过

这样就不用等上传苹果后台才知道签名是否成功了

 

同时你还可以通过以下命令查看 app都签名信息

# xxx 待会儿补

 

我 遇到一个困扰我 几天的问题    

a sealed resource is missing or invalid

一直没找到问题在哪里 

我试了脚本打包出ipa 然后手动xcode签名 没有问题

也试了xcode打包ipa 然后xcode签名 都没有问题

然而 我通过脚本打包ipa  同时脚本签名的时候 就出现这个错误 无法上传 后台

找了种种方式 最后才找到问题

思路是这样的 我们需要了解苹果包的内容 

一个app包 里面包括 一个_CodeResource 文件夹 里面的文件记录了整个App包的内容和签名

我通过 对比我脚本打包出来的App包 和 xcode 打包同一个工程的App包 的 _CodeResource 文件 发现一个隐藏文件的签名不一致

最终找到 并解决了这个问题 脚本签名的时候会 无法读取到它 但是xcode 会把它干掉   是__MacOS 文件夹里的隐藏文件

 

以上是关于iOS 自动打包 IPA 相关的主要内容,如果未能解决你的问题,请参考以下文章

iOS自动打包并发布到Fir.im

【iOS开发】打包成ipa的方法

【iOS开发】打包成ipa的方法

jenkins 自动化打包 ipa 的 一些坑

iOS-打包上架构建版本一直不出现/正在处理/自动消失

Jenkins+私有git+Xcode打包ipa总结