美文网首页
“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