嵌入的二進位檔未使用與父應用程式相同的證書簽名#
背景#
Xcode 10 之後 New Build System 變為默認,編譯之後一直報錯,
報錯信息:嵌入的二進位檔未使用與父應用程式相同的證書簽名。請驗證嵌入的二進位檔目標的代碼簽名設置是否與父應用程式一致。
eg:
但是在 Legacy Build System 下就沒有問題。剛開始直接粗暴的改回 Legacy Build System,一直沒來得及查具體原因,最近得空了,仔細查了一下。
过程#
搜到的好多人說,是因為 keyChain 裡證書的信任狀態不對,要用系統默認,不能強制始終信任。but,我檢查了之後,我的證書確實是系統默認的狀態。
在 stackoverflow 上iOS error “嵌入的二進位檔未使用與父應用程式相同的證書簽名”
這裡面:
- 被採納的是:widget target 下的 Code Sign Identity,沒有設置或者設置的和 main app target 下的不一致。但是,對於我來說,我檢查了之後發現也與我狀況不同。報錯信息裡就有不同,在嵌入的二進位檔簽名證書:裡,一個是未簽名,一個是軟體簽名,所以,這個解對我也不對
- 第二個被贊成多的答案是:keyChain 裡證書的信任狀態不對,要用系統默認,不能強制始終信任。這個也已經驗證過了,不是我的正解
- 第三個被贊最多的給出解決方法是:改回 Legacy Build System。。。。這個我之前一直是這樣,但是我需要解決這個問題,而不是逃避,而且我還想看一下用 New Build System 能加快多少編譯時間
- 其次一個,說 widget 的 depolyment target,比 main app 的高,也被我 pass 了
- 再一個,說把 Watch target 的”Build Settings”> “Valid Architectures” 改為
$(ARCHS_STANDARD),這個我還真沒驗證,因為我直接用樓下的一個編譯好了,但是這樓的答案被我用於消除一些個編譯警告了。。。。在另一篇博客裡說
- 終於,這一樓說在 main app target 裡 Build Phases 中,Embed App Extensions 裡,勾選 Copy only when installing. 最終,解決了,這一樓是對我的正解。
结果#
遇到了報錯,不要慌,先看報錯信息,理解報錯信息的意思,搜索別人解決方法時,仔細觀察報錯信息是否一樣,嘗試,如果結果不合適,不要氣餒,往樓下看,一一仔細看,總有一樓合適。。。。。哈哈哈