質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1463閲覧

podを使用したframeworkを作成するとビルドエラーになる

suhi

総合スコア28

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2022/07/29 14:38

編集2022/07/29 14:45

環境

Mac OS 12.4
Xcode 13.4.1
Swift 5.6.1

実現したいこと

ロジック部分を自作frameworkとして作成し、それを別のプロジェクトから呼び出して使いたいと思っています。
例えば、SwiftyJSON をpod install した frameworkを作成し(SampleFrm)、それを別のアプリプロジェクト(SampleApp)から呼び出せるようにしたい。
上記を統括するプロジェクトを別途用意し(SampleFrmApp.xcworkspace)、作業しようと思っています。

構成は以下の通り

[root]  ├ SampleFrmApp.xcworkspace  ├ SampleApp       ├ SampleApp.xcodeproj       ├ (略)  ├ SampleFrm       ├ Podfile       ├ Pods       ├ SampleFrm.xcodeproj       ├ SampleFrm.xcworkspace       ├ (略)

やったこと

  • SampleFrmApp.xcworkspaceから、SampleApp.xcodeproj、SampleFrm.xcodeprojを参照するように設定する
  • Podfileを追加する前の状態でSampleFrmをビルドすると、SampleAppからSampleFrmを参照できる
  • SampleFrmに対し pod init>SwiftyJSON を pod installしたあと再度SampleFrmをビルドすると、SampleAppからSampleFrmを参照できず、SampleApp側で以下ビルドエラーが発生
(略) ld: framework not found FBLPromises clang: error: linker command failed with exit code 1 (use -v to see invocation)

すこし調べた限りですと、podを使用したframeworkがそもそも見つからなかったのですが、この方法は邪道なのでしょうか...?

もし解決方法をご存知でしたら、ご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

どうやらframeworkを外部から呼び出す際、framework内部で参照しているライブラリのリンクが切れて参照できない状態になるようです。

根本解決ではありませんが、
frameworkとして分離したいコード(SampleFrmにあたる部分)をpodspecでライブラリ化し、これを参照したいアプリ側(SampleApp)はこれをcocoapodsでinstallするようにすると、参照できるようになりました。

ライブラリ側 ├ SampleFrm.podspec ├ SampleFrm       ├ Podfile       ├ Pods       ├ SampleFrm.xcodeproj       ├ SampleFrm.xcworkspace       ├ (略) アプリ側  ├ SampleApp       ├ Podfile       ├ Pods       ├ SampleApp.xcodeproj       ├ SampleApp.xcworkspace       ├ (略)

(参考:https://moneyforward.com/engineers_blog/2021/11/11/private-cocoapods-library/)

いったんは上記で対応しようと思いますが、frameworkとして作成したプロジェクトでcocoapodを使用してもリンク切れを起こさない方法をご存知の方がいましたら、コメントお願いいたします。

投稿2022/08/03 12:20

suhi

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問