准备工作
- 安装sigh:sudo gem install sigh
- 确保本机已安装重签名证书
不改变bundleId
1.将脚本、重签名ipa、重签名mobileprovision放到同一目录
signName="embedded"
app_provision_name="${signName}.mobileprovision"
ipaName="ipa文件名"
projectName="项目名称"
signFoldName="_CodeSignature"
reSignCERName="证书名称"
rm -rf ./*.plist
rm -rf ./Payload
echo "0.删除当前目录下.plist文件"
mv ./*.mobileprovision "${app_provision_name}";
echo "1.修改mobibleprovision文件名"
sign_plist_name="${signName}.plist"
security cms -D -i ./"${app_provision_name}" > ./"${sign_plist_name}"
echo "2.生成${sign_plist_name}"
sign_plist_name2="entitlements.plist"
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' ./"${sign_plist_name}" > ./"${sign_plist_name2}"
echo "3.生成${sign_plist_name2}"
unzip ./${ipaName}.ipa
echo "4.解压缩ipa包"
rm -rf ./Payload/"${projectName}.app"/"${signFoldName}"/
echo "5.删除项目签名文件夹"
for i in ./Payload/"${projectName}.app"/Frameworks/*.framework/;do
rm -rf "${i}${signFoldName}"/
done
echo "6.删除Frameworks签名文件夹"
for i in ./Payload/"${projectName}.app"/Frameworks/*.framework/;**do**
codesign -f -s "${reSignCERName}" "${i}"
done
echo "7.重新签名Frameworks"
rm -rf ./Payload/"${projectName}.app"/"${app_provision_name}"
echo "8.删除项目中原mobileprovision"
cp -f ./"${app_provision_name}" ./Payload/"${projectName}.app"/
echo "9.复制新mobileprovisin到项目中"
codesign -f -s "${reSignCERName}" --no-strict --entitlements="${sign_plist_name2}" Payload/"${projectName}.app"
echo "10.重新签名项目"
rm -rf ./"${ipaName}.ipa"
echo "11.删除原ipa"
zip -r "${ipaName}.ipa" Payload
echo "12.生成新ipa"
2.执行脚本即可
改变bundleId
1.cd 到 ipa 文件所在目录,执行 sigh resign 命令
2.从列出的电脑上可用的证书,选择你要用的证书Signing Identity
3.显示 Successfully signed ,当前目录的 ipa 重签名完成