#!/bin/sh
if ! ([ -f "$1" ]); then
echo \"${1}\"文件不存在
exit
fi
ipaName=${1%.ipa}
if [ "$ipaName" = "$1" ]; then
echo \"${1}\"不是ipa文件
exit
fi
## step 1, unzip ipa file
unzip ${ipaName}.ipa
## step 2, remove old codesign
rm -rf Payload/*.app/_CodeSignature/
## step 3, copy new provision profile
cp 123.mobileprovision Payload/*.app/embedded.mobileprovision
## step 4, codesign with new certificate and provision
(/usr/bin/codesign -f -s "iPhone Developer: XXXXX (XXX)" --resource-rules SDKPATH/ResourceRules.plist Payload/*.app/) || {
## if code sign error, will to here
echo failed
rm -rf Payload/
exit
}
## step 5, zip it
zip -r ${ipaName}New.ipa Payload/
rm -rf Payload/
需要注意脚本中有几处需要你们手动修改。
第一处是123.mobileprovision改成你自己的,这个文件需要与脚本放同一目录。比如我的是iOSTeam_Provisioning_Profile_.mobileprovision
第二处是XXXXX (XXX), 这儿XXX改为你keychian里有的证书。比如我的是iPhone Developer: Yang Luo (KY4C7TK8DX)
第三处是SDKPATH,这是你的sdk路径,可使用如下命令获取
xcodebuild -version -sdk macosx10.10
10.10改成你自己MacOS的版本。比如我的路径是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform
用法
保存并修改上面的脚本为ipaResign.sh,再将需要重签名的xxx.ipa与xxx.mobileprovision文件置于同一目录。然后运行命令:
chmod 777 ipaResign.sh
./ipaResign.sh xxx.ipa
最后将生成的xxxNew.ipa直接用同步助手,itools,ifunbox或者pp助手之类的软件安装到手机即可。当然你的手机也必须用此开发证书签名过。
我测试的例子是三国群英传这个经典游戏,开发者未在App store 发布过,所以只能越狱或者通过此文的方法安装(*^__^*)
ipa文件下载地址:
http://app.tongbu.com/10006301_sanguoqunyingchuan2(yizhiban).html