前言:
剛剛把mini換成了,之前一直在mini上進行開發,到換air之前,第一個項目剛剛上線,第一次申請測試,發布證書等等都是在mini上完成的,由于粗心未能料到,換成air后,就把mini的全部清空,然后二手賣了,之前的開發證書也被我刪除了,其實應該備份和導出的。。。。
導致現在在新air上,登陸網站:
想直接下載之前建立好的證書,可是下載雙擊后,在鑰匙串里發現:
總是感覺少點東西,終于發現,我們的這個證書沒有之前開發電腦上的小鑰匙了,就是所謂的私人秘鑰。
然后在網站的標簽里下載項目的文件,看看效果如何:
下載后雙擊,打開Xcode----,看一看 files里的status開發者證書 換電腦,壞了:
系統識別不了了,也就是說,我們缺少那個之前開發電腦的個人秘鑰開發者證書 換電腦,就是按照當時首次真機調試網上流程,生成quest.上傳,下載的那個私人證書秘鑰!!
你是不是也遇到了我這種情況,而現如今,之前開發時的電腦還找不到了,也就是說,無法導出來了。
1,Valid signing not found解決辦法
解決辦法:
一:沿用原來的證書
找到之前開發電腦的證書,導出-導入,這是最簡單簡便省事的方法!
1,在原來電腦上點開鑰匙串訪問 工具,找到我們iphone 開發證書,然后右鍵導出
注意那條小鑰匙,必須帶這個才能導出p12。
右擊證書,導出,(p12方式),輸入密碼,這個密碼任意,記住就好。
然后將這個文件拷到新電腦,雙擊導入,輸入剛剛的密碼即可。
如果里面沒有顯示,則再次雙擊證書,就可以看到綠色的“Valid profile”。大功告成!
通過P12和證書文件,使用另一Account真機調試
如果你想使用別人的account來真機調試,確保他會發給你以下文件:證書文件、授權文件和p12文件
雙擊和的cer以及他們的p12文件(有秘鑰的話需要輸入秘鑰),自己的鑰匙串會有如下:
再雙擊dev和文件()然后在自己項目的TARGETS和PROJECT中更改 Profile和Code Signing,更改profile為對方account的和,如下:
最后,運行如果失敗,如下提示:
查看工程的PROJECT下的Code Signing是否更換成了目標account證書,如果沒問題,確保目標account添加了你真機測試的Devices!
二、revoke掉,重新生成(建議只有在原來的找不到的情況下)
刪掉鑰匙串里所有的相關證書,主要是下面這個:
然后到 Portal,
刪掉以前的東西,重新來一次,revoke。
revoke后,發現又回到了最初時的狀態,如下圖:
很熟悉的樣子,又回到了我們第一次上傳私鑰的步驟,我們在重新制作證書前,先看一下此時標簽下的發布證書還有沒有,如下圖所示,發布證書么有收到牽連,還存在,表明還可以使用:
繼續看一下devices欄下的設備是否存在:
繼續看一下 files 是否還存在,貌似status變成了invalid的,不過后面有modify選項,貌似可以激活,回頭等更新版本時,再來嘗試:
繼續切換標簽的 files,status還是活躍的,到目前為止,仿佛明白,真機調試,需要具備私鑰+(公鑰);而發布時,擁有符合的公鑰就可以了?
繼續下一步,我們看看APP ID 還是否存在,如下圖所示:跟之前的一樣
綜上所述,revoke后,只有對調試的 files有些影響,其余的都可以照常使用,哪么,我們就可以放心的重新制作證書啦。
我們用鑰匙串工具,生成本地的私人秘鑰(quest.),通過點擊網頁上的request 上傳后,apple驗證我們的開發者身份,并簽名生成(私有+公有)開發證書,按照當時創建的教程再重復一遍。
雙擊新制作的.cer之后再打開xocde-,就會發現, files可以使用了(記得在網站上modify后再下載下來)
2,在MAC下建立多用戶進行ios開發時證書和的問題
情景:在一臺MAC機上,創建了一個新的用戶,然后切換到新用戶下,進行ios開發,此時發現真機連接后,在提示Valid signing not found~~~我嘗試把主用戶下的私鑰和證書都拷貝到新用戶下,還是不行。可是我在切換回主用戶下,一切又沒問題了,由此推斷:【同一臺電腦,建立不同的用戶,鑰匙串不能共享?】
所以我們目前只有公鑰,缺少一個私鑰,mac os 下,不同的用戶,相當于不同的mac了,我們只能各自生成一個私鑰。接下來的步驟,你應該都是熟悉的,打開網站
1,添加Add iOS
(如果IOS APP 不能選擇,那么說明你需要revoke掉一個證書了)
2,在當前用戶下生成私鑰
鑰匙串訪問-證書助理-從證書頒發機構請求證書-郵件-名稱-存儲到磁盤=生成-quest.,然后網站提交,生成一個新的證書。
3,新的證書,雙擊添加到鑰匙串里,此時你的新用戶下已經有了新的公鑰和私鑰,那么我們還缺一個,打開要使用的 file-edit,
把我們新創建的證書添加進來,保存,接下來,就可以再次進行真機調試了,注意先要把手機上原有的刪除掉,重新添加。至此,打開,會發現status = Valid profile了。
3,.cer、 、App ID、Devices和 之間的區別和聯系
.cer先來看官方的解釋:
在網站的項中選擇-,底部會有這樣的描述:
E文不好的可以google翻譯一下,大體的意思是如果我們想創建自己的證書(),必須首先要有Apple的中間簽名證書(.cer),也就是說首先要下載Apple的中間簽名證書,下載后雙擊就可以添加到鑰匙串里了(或許還會自動添加到Xcode),如下圖所示:
有了它,我們就可以創建自己的開發者證書,進而進行真機調試或程序發布了,這個東西只需要下載一次就可以了,即便我們有多個IDP,有不同的開發者賬號,只需要一個足矣,如果不小心刪掉了或是換了電腦,再點擊下面的連接下載便可以了。
quest.官方的解釋:
With the of your CSR, Access a public and private key pair. Your private key is stored on your Mac in the login by default and can be viewed in the Access under the "Keys" . Your will be the public half of your key pair.
your to your Mac, then double click the .cer file to install in Access. Make sure to save a backup copy of your private and public keys secure.
分為 和()前者是開發證書,關系到真機調試,后者是發布證書,關系到發布到。
創建證書時,需要在電腦通過鑰匙串生成一個私人秘鑰,這就是:quest.簡稱CSR,相當于跟Apple說:"我這里有臺MAC mMac"!也就是說pending好的證書相當于某臺MAC機上某一個開發者的標識,所以說,團隊開發時,不同的開發者應該都要有獨自的證書。
App ID相當于你創建的某一個工程(項目)的唯一標識,體現在項目中就是創建時填寫的Bundle ,在網站添加app id的作用相當于跟Apple說:“我這里有個APP mApp”!
Devices相當于你的真實測試設備:iphone、iPad、mini等,每一臺設備都有(UDID),只有添加到網站上,才會是被apple承認的合法的測試設備,所有的測試設備都要添加進來,相當于跟Apple說:“我這里有臺Device mDevice”!
分為和 前者是開發,關系到聯機測試,后者是發布,關系到上傳APP到Store。創建時首先要選擇類別、其次 App ID(程序的 bundle ,我們創建的App ID )、再次選擇,也就是說允許哪些個開發者(可多選),最后選擇devices,也就是說允許安裝在哪些設備(可多選)。所以,無論是和, file只跟app id綁定,也就是每個App都應該有獨自的pro profile。但是一個APP可以允許不同的開發者,在不同的多個設備上調試!所以, Profile相當于跟Apple說:"我想 在我的mMac上面,連接到 mDevice ,跑myApp這個app"!
所以綜述, profile是把 、App id、device連接起來的橋梁,表面上來看,它跟Appid 和device有關聯,你edit某一個profile時,可以隨意設置AppID(配置到哪一個APP)、(允許哪些開發者)、device(允許哪些設備)。
profile是否跟mac( )有關?
也就是說如果我把mMac吊銷了,自己又在新的電腦上提交CSR創建了一個新的 mMac2( ),此時之前的 profile還可以繼續用嗎?
答案是肯定的!不然在創建 profile時,不會讓你選擇多個MAC(),之所以允許選擇多個,本意就是允許團隊中不同的開發者,在不同的電腦上使用同一個 profile!
你只需要編輯這個 profile把自己新創建的mMac2()添加進來就可以了,然后在真機里刪除原有的profile、新的profile添加到真機,就沒問題了。
附下傳送門,我曾經無知時的提問,現在恍然大悟: