21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Xcode11以降 Carthageでライブラリを追加するときの注意点

Last updated at Posted at 2020-04-16

Carthageでライブラリを追加するときにXcodeのTargetのGeneralタブでframeworkを追加する作業が必要ですが、Xcode11からこのframeworkの追加部分が若干変わっていました。

Xcode10
image.png

Xcode11
image.png

このように、Xcode10まではLinked Frameworks and LibrariesのセクションのStatus欄にRequiredOptionalを設定していたものが、Frameworks, Libraries, and Embedded Contentという旧Linked Frameworks and LibrariesEmbedded BinariesとマージしたものになってEmbed欄にDo Not Embed, Embed & Sign, Embed Without Signingを設定するように変わっていました。(あと関係ないですが、Xcode11では名前順に自動でソートされるようになっていました)

Carthageのドキュメントを読むとDo Not Embedを選ぶように書いてあります。

Open your application targets’ General settings tab. For Xcode 11.0 and higher, in the "Frameworks, Libraries, and Embedded Content" section, drag and drop each framework you want to use from the Carthage/Build folder on disk. Then, in the "Embed" section, select "Do Not Embed" from the pulldown menu for each item added. For Xcode 10.x and lower, in the "Linked Frameworks and Libraries" section, drag and drop each framework you want to use from the Carthage/Build folder on disk.

ここが気をつけるポイントなのですが、デフォルトではEmbed & Signになってしまうので、必ずDo Not Embedに変更しなければなりません。

Embed & Signにしていても普通に手元でビルドしてる分には特に影響がないのですが、ipaファイルを作成する際のビルド時に問題が発生しますのでご注意ください。

Error Domain=IDEDistributionPipelineErrorDomain Code=0 "Code signing "XXX.framework" failed." UserInfo={NSLocalizedDescription=Code signing "XXX.framework" failed., NSLocalizedRecoverySuggestion=View distribution logs for more information.}
21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?