今是昨非

今是昨非

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

埋め込まれたバイナリは、親アプリと同じ証明書で署名されていません

埋め込まれたバイナリは親アプリと同じ証明書で署名されていません#

背景#

Xcode 10 以降、New Build System がデフォルトになり、コンパイル後にエラーが発生し続けます。
エラーメッセージ:Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target’s code sign settings match the parent app’s.

eg:

bcHlsryZAwaPSN3.png

しかし、Legacy Build System では問題ありませんでした。最初は強引に Legacy Build System に戻しましたが、具体的な原因を調べる時間がありませんでした。最近、時間ができたので、詳しく調べてみました。

过程#

多くの人が言っているのは、keyChain 内の証明書の信頼状態が正しくないため、システムのデフォルトを使用し、常に信頼することはできないということです。しかし、私が確認したところ、私の証明書は確かにシステムのデフォルトの状態でした。

stackoverflow でiOS error “Embedded binary is not signed with the same certificate as the parent app”

ここで:

  1. 採用されたのは:widget target 下の Code Sign Identity が設定されていないか、main app target 下のものと一致していないということです。しかし、私の場合、確認したところ、状況が異なりました。エラーメッセージには違いがあり、Embedded Binary Signing Certificate: のところで、一つは Not Code Signed、もう一つは Software Signing なので、この解決策は私には合いませんでした。
  2. 二番目に支持された答えは:keyChain 内の証明書の信頼状態が正しくないため、システムのデフォルトを使用し、常に信頼することはできないということです。これも確認済みで、私の正解ではありません。
  3. 三番目に最も支持された解決策は:Legacy Build System に戻すことです。。。。これまではそうしていましたが、私はこの問題を解決したいのであって、逃げたいわけではありません。また、New Build System を使用することでどれだけコンパイル時間が短縮できるかも見たいです。
  4. 次に、widget の deployment target が main app のものより高いと言われましたが、これも無視しました。
  5. さらに、Watch target の”Build Settings”> “Valid Architectures” を

    $(ARCHS_STANDARD) に変更するという提案がありましたが、これは確認していません。なぜなら、私は直接下の人の方法でコンパイルを終えたからです。しかし、この回答は私がいくつかのコンパイル警告を解消するのに役立ちました。。。。別のブログで言われていました。

  6. 最後に、この一階の人が main app target の Build Phases 内の Embed App Extensions で、Copy only when installing にチェックを入れることを提案しました。最終的に、これが私の正解でした。

YgqMdLSO7JsiFuP.png

结果#

エラーに遭遇したら、慌てずに、まずエラーメッセージを見て、その意味を理解し、他の人の解決策を検索する際には、エラーメッセージが同じかどうかを注意深く観察し、試してみてください。結果が合わなければ、落胆せずに、下を見て、一つ一つ注意深く見ていけば、必ず合う回答が見つかります。。。。。ハハハ

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。