iOS 重签名

218 阅读1分钟

准备工作

  • 安装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 重签名完成