問(wèn)題場(chǎng)景
外包公司開發(fā)并提供了ipa文件,證書簽名用的是他們公司自己的(證書和描述文件都是,bundle id用的是我們指定的id),然后我們公司用自己的發(fā)布證書重新簽名并提交appstore
步驟和遇到的問(wèn)題
1、在自己的電腦上安裝發(fā)布證書(這里不介紹,需要的請(qǐng)自行百度),安裝后在鑰匙串訪問(wèn)-登錄-我的證書下面會(huì)看到這個(gè)證書,類似 iPhone Distribution:xxxxxxx(xxxxxx) ,選中后查看簡(jiǎn)介,設(shè)置信任為使用系統(tǒng)默認(rèn),注意不要設(shè)置為始終信任,若設(shè)置為始終信任,在使用重簽名命令時(shí)會(huì)提示錯(cuò)誤(后面會(huì)介紹這個(gè)錯(cuò)誤)
2、安裝homebrew(已經(jīng)安裝的請(qǐng)略過(guò)這步),命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3、安裝sigh,命令:
sudo gem install sigh
4、準(zhǔn)備好需要重新簽名的ipa(外包公司提供的那個(gè)ipa包)
5、準(zhǔn)備好描述文件embedd.mobileprovision,問(wèn)題來(lái)了,去哪里弄到這embedd.mobileprovision文件呢?不能用外包公司提供的ipa里面的那個(gè)embedded.mobileprovison,而要用自己生成的。自己用Xcode新建一個(gè)工程,指定bundle id、發(fā)布證書,描述文件等信息,然后archive,查看生成的ipa包里面的那個(gè)embedd.mobileprovision,就是我們要的描述文件
6、把需要重簽名的ipa包和embbedd.mobileprovison放在同一個(gè)目錄下面,然后cd這個(gè)目錄,執(zhí)行sigh resign,它會(huì)先顯示Available identities:(你電腦上當(dāng)前安裝的開發(fā)證書、發(fā)布證書等證書信息,若為空,可能是你的證書安裝有問(wèn)題),然后要求你輸入Signing Identity:你輸入發(fā)布證書對(duì)應(yīng)的那個(gè)16進(jìn)制字符串,回車即可。當(dāng)出現(xiàn)Successfully signed 路徑/xxx.ipa!時(shí),原來(lái)文件夾中的.ipa已經(jīng)被重簽名了。
7、第6步可能會(huì)出現(xiàn)的問(wèn)題,
(1)Warning: unable to build chain to self-signed root for signer
解決辦法:將鑰匙串訪問(wèn)-登錄-我的證書下面的發(fā)布證書,從始終信任改為使用系統(tǒng)默認(rèn)(若發(fā)現(xiàn)修改成使用系統(tǒng)默認(rèn)后顯示紅色,請(qǐng)更新蘋果根證書);也有一種說(shuō)法,要將鑰匙串訪問(wèn)-系統(tǒng)-證書下面的Apple Worldwide Developer Relations Certification Authority刪除后重新安裝新版本的(https://www.apple.com/certificateauthority/)
參考文章:
ipa重簽名最直接的教程