注意:
1、此重簽名腳本針對(duì) 沒(méi)有加殼的 ipa 文件
2插掂、此腳本可做修改灰瞻,實(shí)現(xiàn)簽名一個(gè) 擴(kuò)展文件 appex,和多個(gè) 第三方 .framework庫(kù)
shell腳本
#!/bin/bash
# 輸入?yún)?shù)
cert_name="Apple Distribution: san zhang (xxxxxxxx)" # 開(kāi)發(fā)者證書(shū)名稱(chēng)
provisioning_profile="App_dis.mobileprovision" # app用于重簽名的配置文件路徑
ex_provisioning_profile="Tun_dis.mobileprovision" # 擴(kuò)展用于重簽名的配置文件路徑
app_name="appName" # appName.app
ipa_path="$app_name.ipa" # 原始的IPA文件路徑 appName.ipa
# 清理臨時(shí)目錄
TempPath="temp"
rm -rf "$TempPath"
mkdir -p "$TempPath"
# 解壓原始的 ipa 文件
/usr/bin/unzip -q "$ipa_path" -d "$TempPath"
# 擴(kuò)展路徑
appex_path="$TempPath/Payload/$app_name.app/PlugIns/Tun.appex"
/bin/cp "$ex_provisioning_profile" "$appex_path/embedded.mobileprovision"
security cms -D -i "$ex_provisioning_profile" > "$TempPath/profile.plist"
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' "$TempPath/profile.plist" > "$TempPath/entitlements.plist"
/usr/bin/codesign -f -s "$cert_name" --no-strict --entitlements="$TempPath/entitlements.plist" "$appex_path"
rm -rf "$TempPath/profile.plist"
rm -rf "$TempPath/entitlements.plist"
app_path="$TempPath/Payload/$app_name.app"
rm -rf "$app_path/embedded.mobileprovision"
touch "$app_path/embedded.mobileprovision"
/bin/cp "$provisioning_profile" "$app_path/embedded.mobileprovision"
security cms -D -i "$provisioning_profile" > "$TempPath/profile.plist"
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' "$TempPath/profile.plist" > "$TempPath/entitlements.plist"
# 重簽名應(yīng)用程序中的Frameworks文件夾
lib_path="$app_path/Frameworks"
find "$lib_path" -name "*.dylib" -o -name "*.framework" | while read framework; do
rm -rf "$framework/_CodeSignature"
/usr/bin/codesign -f -s "$cert_name" --no-strict --entitlements="$TempPath/entitlements.plist" "$framework"
done
rm -rf "$app_path/_CodeSignature"
/usr/bin/codesign -f -s "$cert_name" --no-strict --entitlements="$TempPath/entitlements.plist" "$app_path"
sign_ipa_path="'$app_name'_sign.ipa"
cd "$TempPath"
/usr/bin/zip -qry "$sign_ipa_path" "Payload"
rm -rf "Payload"
rm -rf "entitlements.plist"
rm -rf "profile.plist"
echo "重簽名完成辅甥,新的IPA文件路徑:$TempPath/$sign_ipa_path"
操作:
1酝润、把所有文件 App_dis.mobileprovision,Tun_dis.mobileprovision肆氓,appName.ipa袍祖,sign.sh 放入一個(gè)文件夾中
2底瓣、修改 證書(shū)名為自己有效的證書(shū)名谢揪,已安裝到mac 鑰匙串
3、打開(kāi)終端工具捐凭,cd 到當(dāng)前文件夾拨扶,執(zhí)行 ./sign.sh