古詩詞大全網 - 個性簽名 - ios 如何檢查ipa是被重簽名過的

ios 如何檢查ipa是被重簽名過的

方法壹、終端命令:sigh resign

1. 明白兩個東西:想要重簽名的證書和描述文件

開發證書或者企業證書,即妳想要重簽名的證書、provision描述文件。我是個人賬戶。沒交錢的那種。(Xcode中自動管理會生成證書和描述文件)。

註意?:每壹個重簽版本都需重新申請壹個 appid 和 provisoning profile,不然同appid的會覆蓋。

mac電腦的開發環境配置

安裝 homebrew,命令:

/usr/bin/ruby -e "$(curl -fsSL /Homebrew/install/master/install)"

安裝 ruby,命令:brew install ruby更新 ruby 版本

安裝 sigh,命令:sudo gem install sigh

如果出錯那就換成gem install sigh安裝過程是漫長的。(在安裝 sigh 之前,妳得檢查 gem的鏡像源,現在壹般為https://gems.ruby-china.org)

準備好需要重簽名的 ipa 包

自己的ipa 不用多說。編譯壹下在工程的Product 文件件下就有。也可以通過愛思助手下載具體教程:Mac 如何下載ipa

開始重簽名

第壹步,把我們要重簽名的 ipa 包和我們下載下來安裝的?embedded.mobileprovison放在同壹文件夾目錄下,同級

第二步,終端 cd 到這個 ipa 的文件夾目錄下,執行sigh resign或者?fastlane sigh resign命令

第三步:這時候,sigh 會直接彈出下面這個指令要妳輸入:Signing Identity這個就是妳的證書的十六進制串,輸入之後回車,然後等待見證奇跡的時刻吧。

請點擊輸入圖片描述

第四步:驗證我們重簽的 ipa 包的時刻到了

先安裝重簽名之前的 ipa 包,然後再安裝我們重簽名之後的 ipa 包,如果沒有覆蓋,出現了兩個壹模壹樣的 App,各自點開沒閃退沒打不開的情況下,說明我們簽名成功了。12

sigh resign關於重簽名有時候失敗或者無法安裝的情況說明。

如果ipa 裏面有除了系統之外的 framework或者dylib的話,也需要先簽名,不然也會導致簽名後安裝失敗!至於 sigh 裏面大致執行的腳本代碼如下:

for framework in "$FRAMEWORKS_DIR"/*

do

if [[ "$framework" == *.framework || "$framework" == *.dylib ]]

then

log "Resigning '$framework'"

# Must not qote KEYCHAIN_FLAG because it needs to be unwrapped and passed to codesign with spaces

#.shellcheck disable=SC2086

/usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"

checkStatus

else

log "Ignoring non-framework: $framework"

fi

done12345678910111213

看得懂或者熟悉腳本的同學可以直接看腳本文件:?resign.sh

位置:/Library/Ruby/Gems/2.3.0/gems/sigh-2.0.1/lib/assets/resign.sh

版本號是根據自己當前 sigh 插件的版本號決定的。

直接執行此腳本可以重簽多 target 的 ipa:

./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p "bundel id"=<path_to_provisioning_profile_for_app>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitextension>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitapp>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_todayextension>.mobileprovision resignedYourApp.ipa)1

蘋果的政策越來越收緊,這種方案的可行性的周期不確定。因為很多方案已經隨著版本的更新,變得不可行了。從 iTunes 關閉了 ipa應該管理功能就知道了,對於包的安全性蘋果越來越重視。另外,企業賬號申請的難度越來越高,也有這種趨勢。這種方法已經失敗。

方法二、iResign?重簽名方案

下載 iResign,下載完直接有個可執行的iResign.app,雙擊執行

請點擊輸入圖片描述

請點擊輸入圖片描述

參數路徑跟圖片上描述的很清楚,第壹項是妳要重簽名的 ipa 的路徑,第二項是我們重簽名的配置描述文件的路徑(不用改為 embedded 也可以),第四項,填寫我們生成重簽名用到的mobileprovison的?bundle identifier,勾選修改 ID,第五項是我們重簽名用到的mobileprovison的證書

第三項很多教程說不用填,但是不填是無法自動生成的,會壹直卡在entitlements generated這個步驟,無法生成。所以我們要自己生成entitlements.plist! 首先我們把要重簽的 XXXX.ipa 解壓後得到 Payload目錄,然後終端 cd 到Payload目錄下,執行以下命令:/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i XXXX.app/embedded.mobileprovision) > Entitlements.plist?其中 XXXX.app 是妳要重簽的 ipa的包名。生成的?entitlements.plist存放在Payload目錄下,然後我們用 文本編輯或者 Xcode打開 plist 文件,修改裏面的<key>application-identifier</key><string>PREFIX.yourappBundleID</string>為第四項填寫的?bundle id。到此,配置完成,點擊重新簽名!

噔噔噔!簽名成功請看下圖:

iResign 使用註意事項:第三個 plist 文件是必填的,修改ID 的 bunle id 要跟 plist 修改的對應。

請點擊輸入圖片描述

方法三、iOS ipa重簽名工具 -?iOS App Signer

下載 iOS App Signer 源碼,運行在 May Mac 上

請點擊輸入圖片描述

請點擊輸入圖片描述

第壹項,填寫我們需要重簽名的 ipa 路徑,第二項是我們要簽名的證書,第三項選擇我們配置的 provisoning profile(默認項Re-Sign Only 是無效的),然後,點擊star!

此方式會自動分析 provisoning profile描述文件中的東西,所以不用我們自己填寫變更的bundle id

請點擊輸入圖片描述

驗證得到ipa 直接在愛思助手中的:我的應用->中壹拖就可以了。

這個方式親自試了,比較簡單方便。

結論:

但是最後重簽名之前的能正常打開,重簽名之後的都是壹而退。暫時不知道什麽原因。