ios重签名脚本

tech2026-02-16  1

#!Get the root path rootPath=$(cd "$(dirname "$0")"; pwd) #可变参数区域 mobileprovision=${rootPath}/cert.mobileprovision ipaPath=${rootPath}/1.ipa #固定参数区域 outputDir=${rootPath}/output #解析描述文件 certTeamName=`/usr/libexec/PlistBuddy -c "Print TeamName" /dev/stdin <<< $(security cms -D -i $mobileprovision)` CODE_SIGN_IDENTITY="iPhone Distribution: $certTeamName" PROVISIONING_PROFILE_SPECIFIER=`/usr/libexec/PlistBuddy -c "Print AppIDName" /dev/stdin <<< $(security cms -D -i $mobileprovision)` UUID=`/usr/libexec/PlistBuddy -c "Print UUID" /dev/stdin <<< $(security cms -D -i $mobileprovision)` mobileprovisionName=`/usr/libexec/PlistBuddy -c "Print Name" /dev/stdin <<< $(security cms -D -i $mobileprovision)` BUNDLEID_ENTIFIER=`/usr/libexec/PlistBuddy -c "Print Entitlements:application-identifier:" /dev/stdin <<< $(security cms -D -i $mobileprovision)` BUNDLEID_ENTIFIER=${BUNDLEID_ENTIFIER#*.} DESTENT=${rootPath}/entitlements.plist PROFILE="${rootPath}/profile.plist" rm -drf ${DESTENT} rm -drf ${PROFILE} /usr/bin/security cms -D -i ${mobileprovision} > "${PROFILE}" /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' "${PROFILE}" > "${DESTENT}" /bin/rm "${PROFILE}" echo "CODE_SIGN_IDENTITY:$CODE_SIGN_IDENTITY \n描述文件名字:$mobileprovisionName \nBUNDLEID_ENTIFIER:$BUNDLEID_ENTIFIER" #开始处理IPA,解压ipa包 rm -drf $outputDir mkdir $outputDir unzip $ipaPath -d $outputDir APPNAME=`ls ${outputDir}/Payload | grep app` APPNAME=${APPNAME%%\.app} echo "APPNAME $APPNAME" #修改bundleID /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${BUNDLEID_ENTIFIER}" ${outputDir}/Payload/${APPNAME}.app/Info.plist #替换描述文件 rm -drf ${outputDir}/Payload/${APPNAME}.app/embedded.mobileprovision cp -r -f ${mobileprovision} ${outputDir}/Payload/${APPNAME}.app/embedded.mobileprovision #处理插件的重签名 #签名ipa包 dylib貌似不需要重签名 resignFramework() { frameworkDir=$1 #删除所有log for i in `ls $frameworkDir` do ext=${i##*.} if [ "$ext" == "framework" ]; then echo "重签名FrameWork $i" codesign -f -s "$CODE_SIGN_IDENTITY" --entitlements "$DESTENT" ${frameworkDir}/$i fi done } resignFramework ${outputDir}/Payload/${APPNAME}.app resignFramework ${outputDir}/Payload/${APPNAME}.app/Frameworks #重签名App" codesign -f -s "$CODE_SIGN_IDENTITY" --entitlements "$DESTENT" ${outputDir}/Payload/${APPNAME}.app #重签名结束,压缩Ipa包" cd ${outputDir} zip -r resign.ipa Payload
最新回复(0)