iOS ipa 文件重簽名腳本,快速重簽名app

注意:
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)"  # 開發(fā)者證書名稱

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、修改 證書名為自己有效的證書名,已安裝到mac 鑰匙串
3、打開終端工具,cd 到當(dāng)前文件夾,執(zhí)行 ./sign.sh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于xocde自動(dòng)化打包,其實(shí)網(wǎng)上的內(nèi)容很多,自己在網(wǎng)上也找到了很多,大部分都是很正確的,這里我就只說(shuō)下works...
    風(fēng)依舊_c080閱讀 1,730評(píng)論 0 3
  • 為什么重簽名### 重簽名可以把越獄市場(chǎng)上的app重新用我們自己的開發(fā)者證書進(jìn)行簽名,然后我們就可以在我們不越獄的...
    齊滇大圣閱讀 17,649評(píng)論 9 23
  • 重簽名可以把越獄市場(chǎng)上的app重新用我們自己的開發(fā)者證書進(jìn)行簽名,然后我們就可以在我們不越獄的手機(jī)上安裝越獄應(yīng)用了...
    PengPengPro閱讀 6,079評(píng)論 0 1
  • 1、簡(jiǎn)介 利用Xcode的命令 security 和 codesign 重簽ipa文件。重簽名與Xcode里用bu...
    iHTCboy閱讀 2,276評(píng)論 0 3
  • 現(xiàn)在主流的重簽名有兩種: 完全重簽名 證書,mobileprovision、Bundle ID三者信息對(duì)應(yīng)一致,這...
    Matthew1991閱讀 746評(píng)論 0 1

友情鏈接更多精彩內(nèi)容