web-dev-qa-db-ja.com

Swiftフレームワークは、「デバッグ」または「リリース」以外の名前のビルド構成では機能しません:そのようなモジュールはありません

'Debug'または 'Release'以外の名前のビルド構成を使用しようとすると、Xcodeは突然私のSwiftフレームワークを見つけることができません。構成は名前以外はまったく同じです(実際には、新しい構成は、作業中の「デバッグ」構成から複製されました)。

Build configurations screenshot

Xcodeは「そのようなモジュールはありません」と報告します

Xcode error

これは本当に奇妙なバグのようです。確かに誰かがこれに遭遇したことがありますか?私のグーグル検索は結果をもたらさなかった。誰かがこの問題を引き起こしている可能性があるものを知っていますか?フレームワークを正しく追加したと確信しています。

私が行っていることを正確に示すために、短いスクリーンキャストを作成しました: http://www.screencast.com/t/zpgZ5ZYgvH

結論:

  1. プロジェクトが現在サードパーティのSwiftフレームワークを使用してビルドされていることを確認してください
  2. プロジェクト/ファイルナビゲーターでプロジェクトを選択します
  3. エディタの左側のサイドバーで[ターゲット]の上にあるプロジェクトを選択し、[情報]タブが表示されていることを確認します
  4. 構成のリストの下にある[+]ボタンをクリックし、[XXX構成の複製]を選択して、現在の構成を複製します(おそらく「デバッグ」)。
  5. 製品(メニュー)>スキーム>スキームの編集...に移動して、新しい構成を使用するようにスキームを変更します。
  6. 左側のサイドバーで[実行]を選択します
  7. [ビルド構成]で新しい構成を選択します
  8. もう一度ビルドしてみてください

サンプルプロジェクトをダウンロードすることもできます: http://s000.tinyupload.com/?file_id=4879776321627427182

Xcode 6.0.1(6A317)とYosemite 10.10(14A361c)を実行しています。

55
DJ Tarazona

ターゲットの_Framework Search Path_に次の_Build Settings_を追加します:$(SYMROOT)/Release$(EFFECTIVE_PLATFORM_NAME)そしてそれを_non-recursive_にします

私の場合、これはAlamofire用で、gitサブモジュールとしてプロジェクトに追加されました。

フレームワークは正しくビルドされており、ビルドログで確認できますが、デフォルトのフレームワーク検索パスはスキーム名から派生していると思います。 AlamofireフレームワークとdSYMファイルは_Release-iphoneos_/_Release-iphonesimulator_にあります。

スキーム名がデフォルトである限り、これはどのSwiftフレームワークでも機能すると思います。そうでない場合は、ビルドログを確認し、それに応じてフレームワークの検索パスを調整してください。

28
James Zaghini

私もこの問題を抱えていて、含まれているAlamofireプロジェクトに同じ構成名を追加することで修正しました。

私のメインプロジェクトのビルドスキーム: main project configs

そして、Alamofireプロジェクト内のビルドスキーム: screenshot of schemes

注:また、iOSの展開ターゲットが両方のプロジェクトで同じであることを確認してください。

20
Antoine

CocoaPodsを使用している場合は、pod installを試してください。これにより、構成名を使用していくつかの.xcconfigファイルが生成されます。ビルドフォルダをクリーンアップして、再度ビルドします。

8
Doug Amos

モジュール構造がある場合(たとえば、アプリがフレームワークを使用してUI、サービス、またはビジネスロジックをアプリケーションのメインモジュールから分離している場合)、これらのフレームワークをビルドする各サブプロジェクトに新しいビルド構成を追加します。

この場合、作成者が自分のワークスペースにServices Frameworkを持っているとすると、その作成者はDebugOriginal構成も追加する必要がありました。そしてもちろん、pod installを実行します。

これが私の問題を修正した方法です。

0
Anton Ogarkov