解決“此App的開發(fā)者需要更新App以在此iOS版本上正常工作”問題的方案

在iOS15.0及以上設(shè)備上,如出現(xiàn)超級簽、企業(yè)簽及內(nèi)測包出現(xiàn)“此App的開發(fā)者需要更新App以在此iOS版本上正常工作”或無法安裝問題,系蘋果簽名方式更新造成,可根據(jù)實際情況解決。

方案一

將對應(yīng)Xcode工程轉(zhuǎn)移到MacOS11及以上版本的機器進行重新構(gòu)建出包。

方案二

在MacOS10.14及以上版本的機器上進行如下操作:

  1. 將原ipa文件后綴改為zip,解壓。
  2. 執(zhí)行codesign進行重簽
codesign -s "iPhone Developer: XXX" -f --preserve-metadata --generate-entitlement-der */Payload/xxx.app
codesign -dvvvvv */Payload/xxx.app

其中"iPhone Developer: XXX"為對應(yīng)的證書名稱,*/Payload/xxx.app為解壓后.app文件路徑。

  1. 將Payload壓縮,改后綴為.ipa,重新分發(fā)即可。

Shell腳本實現(xiàn)

#!/bin/bash
#Re-sign for iOS 15.0+
#$1: origin ipa file folder
#$2: Certification name


ipa_name=''
app_name=''
suffix_ipa='.ipa'
suffix_zip='.zip'

cd $1
dir=$(eval pwd)

rename(){
    for file in $(ls $dir | grep .$1)
        do
        ipa_name=$(ls $file | cut -d. -f1)
        mv $file ${ipa_name}$2
        done
    echo "??Rename ${ipa_name}$1 to ${ipa_name}$2 done..."
}

#Rename .ipa to .zip
rename $suffix_ipa $suffix_zip

#Unzip file
unzip -q $ipa_name.zip
rm $ipa_name.zip
echo "??Unzip ${ipa_name}$suffix_zip done..."

#Get app name
for file in $(ls $dir/Payload/)
do
    if [ "${file##*.}" = "app" ]; then
        app_name=${file%.*}
        echo "??Get app name:$app_name"
    fi
done

#Code sign
der_name=$2
codesign -s "$der_name" -f --preserve-metadata --generate-entitlement-der Payload/$app_name.app
codesign -dvvvvv Payload/$app_name.app
echo "??Re-sign done..."

#Zip
zip -q -r $ipa_name.zip Payload
rm -rf Payload
echo "??Zip done..."

#Rename .zip to .ipa
rename $suffix_zip $suffix_ipa
echo "??The ipa file supporting iOS 15.0+ have been generated"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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