美文网首页
“App开发者需要更新此App以在此iOS版本上正常工作 ” 的

“App开发者需要更新此App以在此iOS版本上正常工作 ” 的

作者: 多喝热开水 | 来源:发表于2021-11-08 16:08 被阅读0次
image.png

1.问题的原因

从iOS 14.2 beta 2开始,iOS系统将检查新的、更安全的签名格式。启动使用旧格式签名的APP用户会收到警告,即所有之前 macOS11 以下系统打包的App 在iOS14.6 或者 iOS15 以上的设备都会提示需要更新才能正常工作。

因此我们需要使用新格式给APP重新签名。

2.如何解决

解决办法:

1.首先打包环境 mac升级到macOS11以上,此时打包会采用新的签名机制;
2.在升级到最新系统之后,重新通过Xcode打包生成新的安装包即可;
3.对于企业签的App,则需要企业签名提供商签名mac环境同样升级到macOS11系统之上重新签名方可解决。

打包好的xxxx.ipa文件,备份ipa文件,然后重命名为xxxx.zip,解压后会得到Payload文件夹

//xxxxx为解压后APP的名称

codesign -s "证书名称" -f --preserve-metadata --generate-entitlement-der ./Payload/xxxxx.app

3.简化过程,使用shell脚本完成该操作

想法很简单就是找到在同一目录下的.ipa,并给他重新改签之后,然后输出ipa。
以下是shell 脚本代码:


#!/bin/bash
echo "start to resign file"

read -p "Enter your certificate name:" certificate_name

new_file_name="sign_new.zip"
zip_file="sign_new"
pay_load="Payload"
app_path=`pwd`
app_name=''
ori_ipa_name = ''
echo $app_path
# 查找ipa文件
for file in `ls `
do
   if [[ $file =~ \.ipa$ ]];then                                           
        echo "have find file "
        ori_ipa_name=$file
        # 拷贝文件并修改文件名
        cp -rvf $file $new_file_name
        mkdir $zip_file
        unzip  $new_file_name -d $zip_file
        for appName in `ls $zip_file/$pay_load`
            do
                echo "find .app file"
                app_name="$appName"
        done

   fi
done

echo "start to resign"

#demo为解压后APP的名称 重签名 XXXXXXXXX 为证书名
codesign -s $certificate_name -f --preserve-metadata --generate-entitlement-der $zip_file/$pay_load/$app_name

echo "start to zip file"
# 开始重新打包
zip -ru resign$ori_ipa_name $zip_file/$pay_load
echo "start to delete file"

# 删除之前生成的文件
rm  -r $zip_file
rm  $new_file_name

echo "resign File has finished"
image.png

将该ipa放入与 .sh文件 同目录下,使用:

./signModify.sh 

执行该shell文件,会让你输入证书名,直接在钥匙串中复制证书的名字即可


image.png

执行完指令后会在同目录下生成已经签名过的ipa文件


image.png

展示 resign File has finished 表示改签完毕


image.png

改签完成后输出的.ipa文件


image.png

相关文章

网友评论

      本文标题:“App开发者需要更新此App以在此iOS版本上正常工作 ” 的

      本文链接:https://www.haomeiwen.com/subject/ltnuzltx.html