问题场景
外包公司开发并提供了ipa文件,证书签名用的是他们公司自己的(证书和描述文件都是,bundle id用的是我们指定的id),然后我们公司用自己的发布证书重新签名并提交appstore
步骤和遇到的问题
1、在自己的电脑上安装发布证书(这里不介绍,需要的请自行百度),安装后在钥匙串访问-登录-我的证书下面会看到这个证书,类似 iPhone Distribution:xxxxxxx(xxxxxx) ,选中后查看简介,设置信任为使用系统默认,注意不要设置为始终信任,若设置为始终信任,在使用重签名命令时会提示错误(后面会介绍这个错误)
2、安装homebrew(已经安装的请略过这步),命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3、安装sigh,命令:
sudo gem install sigh
4、准备好需要重新签名的ipa(外包公司提供的那个ipa包)
5、准备好描述文件embedd.mobileprovision,问题来了,去哪里弄到这embedd.mobileprovision文件呢?不能用外包公司提供的ipa里面的那个embedded.mobileprovison,而要用自己生成的。自己用Xcode新建一个工程,指定bundle id、发布证书,描述文件等信息,然后archive,查看生成的ipa包里面的那个embedd.mobileprovision,就是我们要的描述文件
6、把需要重签名的ipa包和embbedd.mobileprovison放在同一个目录下面,然后cd这个目录,执行sigh resign,它会先显示Available identities:(你电脑上当前安装的开发证书、发布证书等证书信息,若为空,可能是你的证书安装有问题),然后要求你输入Signing Identity:你输入发布证书对应的那个16进制字符串,回车即可。当出现Successfully signed 路径/xxx.ipa!时,原来文件夹中的.ipa已经被重签名了。
7、第6步可能会出现的问题,
(1)Warning: unable to build chain to self-signed root for signer
解决办法:将钥匙串访问-登录-我的证书下面的发布证书,从始终信任改为使用系统默认(若发现修改成使用系统默认后显示红色,请更新苹果根证书);也有一种说法,要将钥匙串访问-系统-证书下面的Apple Worldwide Developer Relations Certification Authority删除后重新安装新版本的(https://www.apple.com/certificateauthority/)
参考文章:
ipa重签名最直接的教程