今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

嵌入的二進位檔未使用與父應用程式相同的憑證簽署

嵌入的二進位檔未使用與父應用程式相同的證書簽名#

背景#

Xcode 10 之後 New Build System 變為默認,編譯之後一直報錯,
報錯信息:嵌入的二進位檔未使用與父應用程式相同的證書簽名。請驗證嵌入的二進位檔目標的代碼簽名設置是否與父應用程式一致。

eg:

bcHlsryZAwaPSN3.png

但是在 Legacy Build System 下就沒有問題。剛開始直接粗暴的改回 Legacy Build System,一直沒來得及查具體原因,最近得空了,仔細查了一下。

过程#

搜到的好多人說,是因為 keyChain 裡證書的信任狀態不對,要用系統默認,不能強制始終信任。but,我檢查了之後,我的證書確實是系統默認的狀態。

在 stackoverflow 上iOS error “嵌入的二進位檔未使用與父應用程式相同的證書簽名”

這裡面:

  1. 被採納的是:widget target 下的 Code Sign Identity,沒有設置或者設置的和 main app target 下的不一致。但是,對於我來說,我檢查了之後發現也與我狀況不同。報錯信息裡就有不同,在嵌入的二進位檔簽名證書:裡,一個是未簽名,一個是軟體簽名,所以,這個解對我也不對
  2. 第二個被贊成多的答案是:keyChain 裡證書的信任狀態不對,要用系統默認,不能強制始終信任。這個也已經驗證過了,不是我的正解
  3. 第三個被贊最多的給出解決方法是:改回 Legacy Build System。。。。這個我之前一直是這樣,但是我需要解決這個問題,而不是逃避,而且我還想看一下用 New Build System 能加快多少編譯時間
  4. 其次一個,說 widget 的 depolyment target,比 main app 的高,也被我 pass 了
  5. 再一個,說把 Watch target 的”Build Settings”> “Valid Architectures” 改為

    $(ARCHS_STANDARD),這個我還真沒驗證,因為我直接用樓下的一個編譯好了,但是這樓的答案被我用於消除一些個編譯警告了。。。。在另一篇博客裡說

  6. 終於,這一樓說在 main app target 裡 Build Phases 中,Embed App Extensions 裡,勾選 Copy only when installing. 最終,解決了,這一樓是對我的正解。

YgqMdLSO7JsiFuP.png

结果#

遇到了報錯,不要慌,先看報錯信息,理解報錯信息的意思,搜索別人解決方法時,仔細觀察報錯信息是否一樣,嘗試,如果結果不合適,不要氣餒,往樓下看,一一仔細看,總有一樓合適。。。。。哈哈哈

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。