1.https://github.com/maciekish/iReSign 一开始找到了这个自动重签开源工具。可以实现半自动的重签功能。但是并不能满足需求。继续吧
2.找啊找啊,找。。发现所有的工具的源码都是归到了这几步命令。
Step1 :
unzip YourApp.ipa
Step2:
rm -rf Payload/YourApp.app/_CodeSignature
Step3:
cp InHouse.mobileprovision Payload/YourApp.app/embedded.mobileprovision
Step4:
/usr/bin/codesign -f -s "iPhone Distribution: YourCompanyName" --resource-rules Payload/YourApp.app/ResourceRules.plist Payload/YourApp.app
Step 5:
zip -r YourApp_inhouse.ipa Payload
* InHouse.mobileprovision 是你要用来签名的provision文件
* iPhone Distribution: YourCompanyName 是指该签名对应的证书的名字。这个可以在keychain中找到
但是会遇ResourceRules.plist找不到的问题,要设置
Click on your project > Targets > Select your target > Build Settings >
Code Signing Resource Rules Path
and add :
$(SDKROOT)/ResourceRules.plist
但是ipa中包含Framework and Plugins 也不能重签成功。
3.https://github.com/ikalnitsky/iresign 一个Python 重签脚本 一样的不能重签包含Framework and Plugins 的ipa
4.就在放弃要打算重新看回iReSign源码做外部调用iReSign程序来坐自动重签时,又Google到一个脚本
在signall.sh里边修改
signscript="/path/to/sign.sh" #signscript脚本路径
ipasourcefolder="path/to/ipas/source/folder" #ipa文件的路径
ipadestfolder="/path/to/ipas/destinations/folder/" #生成重签ipa路径
developer1="iPhone Developer: xxxxx (xxxxx)" #是指该签名对应的证书的名字。这个可以在keychain中找到
mobileprovision1="/path/to/mobile/provision" #要重签的xx.mobileprovision文件路径
cd $ipasourcefolder
find -d . -type f -name "*.ipa"> files.txt
while IFS='' read -r line || [[ -n "$line" ]]; do
filename=$(basename "$line" .ipa)
echo "Ipa: $filename"
#_dev1_______
output=$ipadestfolder$filename
output+="_signed_dev1.ipa" #生成重签ipa的后缀名称
"$signscript" "$line" "$developer1" "$mobileprovision1" "$output"
done < files.txt
rm files.txt
源码:https://bitbucket.org/xgiovio/ios-ipa-resign/src
终于是可以了。
相关链接:
https://github.com/maciekish/iReSign
http://www.lai18.com/content/755251.html
http://stackoverflow.com/questions/26497863/xcode-6-1-error-while-building-ipa
http://stackoverflow.com/questions/26497863/xcode-6-1-error-while-building-ipa