Xcodeを使用して「そのようなモジュールはありません」というエラーが表示されるが、フレームワークはそこにある


344

私は現在Swiftでコーディングしていますが、エラーが発生しました:

そのようなモジュールはありません

しかし、モジュールは私のプロジェクトにあり、「リンクされたフレームワークとライブラリ」および「組み込みバイナリ」で宣言されているため、理解できません。

フレームワークはObjective-Cにあるため、そのためのBridgeヘッダーを作成しました。

Xcodeにフレームワークを認識させるにはどうすればよいですか?

エラーモジュール

事業

リンクフレームワーク、ライブラリ

ヘッダーブリッジ


20
ミスターにもなりません。明らかですが、完全なクリーンとビルドを試しましたか?
Kalel Wade、2015

28
フレームワークヘッダーがブリッジヘッダーファイルに既に含まれている場合は、Swiftソースファイルにインポートする必要はありません。
マーティンR

2
また、あなたは、インポートのために引用符を使用する必要があります:#import "Social/Social.h"
マーティンR

3
xcodeのCocoaPodsの「そのようなモジュールエラーはありません」と同じエラー。
AsimRazaKhan 2016

1
展開ターゲットを11から10に変更しましたが、Podfileで忘れてしまいましたplatform :ios, '10.0'。それが解決策でした。
Artur Guseynov 2018年

回答:


320

これが発生する理由はわかりませんが、問題を解決する1つの方法は、ビルド設定に移動し、問題のフレームワークを含むフォルダーへのフレームワーク検索パスを定義することです。フレームワークがプロジェクトディレクトリに配置されている場合は、フレームワークの検索パスを$(SRCROOT)に設定し、再帰的に設定します。


5
ありがとう。ターゲットのビルド設定ではなく、プロジェクトのビルド設定でこれを行わなければなりませんでした
Pulsar

8
私にとっての秘訣は、フレームワーク検索パスで使用するフレームワークへのパスを見つけることでした。$ {TARGET_BUILD_DIR} /YourFrameworkName.frameworkはうまく機能します。stackoverflow.com/questions/32816507/…
クリスプリンス

11
Project Build Settings代わりにこれを行わなければなりませんでしたTarget Build Settings
Maxim Mikheev 2016

378
トイレに行って直した。私が戻ったとき、それは働いていました。私はこのスレッドですべてを試したと確信しています。私もいつか祈りました。
nmdias 2017年

2
修正に関する注意:$(SRCROOT)は、PODSプロジェクトのフレームワーク検索パスに追加したときにのみ機能しました。
addzo 2017

546

金曜日の午後または午前1時以降の場合:

xcodeproj代わりに開くxcworkspaceと、次のようなエラーが発生します...


2
私はこれを聖杯として試しました。おかしい。誰が知っているが、終了してからワークスペースを再び開くことも、実際に機能しました。クリーンしてからビルドします。
mondousage

3
午後9時、fastlaneを使用して、gym(workspace:----)ではなく、gym(project:---)を指定しました。ありがとうございます。
RickiG 2016年

1
これは、Xcodeがクラッシュし、バグレポートから「再開」アプリケーションを選択した後に発生しました。次回はもっとよく知りたいと思います。
スタンプ

XCODEを再インストールしましたが、最近開いたプロジェクトを介してアプリを開いていたため、このエラーが発生しました。プロジェクトを閉じ、ファイル->開く-> xcworkspaceファイルを選択すると、すべてが機能しました。
Dpedrinha

コマンドラインでのビルドにも適用されます(問題):xcodebuild -workspace yourproject.workspace。
Ben Butzer

57

サブプロジェクトでの構成の名前が「親」プロジェクトの名前と一致していることを確認してください。構成の名前が正確に一致しない場合(大文字と小文字が区別されます)、Xcodeはアーカイブプロセスを中止し、「No such module ...」というエラーを表示します。

つまり、「AppStore」という名前の構成を持つ「親」プロジェクトがある場合、すべてのサブプロジェクトにもこの構成名があることを確認する必要があります。

添付のスクリーンショットをご覧ください。

「親」プロジェクトでの構成設定

最初のサブプロジェクトでの構成設定

2番目のサブプロジェクトの構成設定


1
私の場合、サブプロジェクトにはがDebugありDistribution、その親プロジェクトはのためにビルドしようとしていましたRelease。解決策はDistribution、子プロジェクトにのコピーを作成し、そのコピーの名前を変更することReleaseでした。
olivaresF 2018

2
これで問題が見つかりましたが、サードパーティのサブプロジェクトに触れたくなかったので、カスタム構成のフレームワーク検索パスに追加することで解決しました:)
DeFrenZ

これで問題が解決しました!よくできました:)
alicanbatur 2018年

ありがとうございました!私のメインプロジェクトには3つの構成があります。したがって、私はフレームワークについても同じことを行い、それが役立ちました。
daxh

Xcodeにネストされたサブプロジェクトの特定の構成をビルドさせる方法についての手がかりはありますか?それはあまりにも、メインプロジェクトに新しいコンフィグを追加するの接続状態になると、サブプロジェクトのコンフィグ名前を変更したくない
DREN

44

質問のコメントでのMartin Rの回答がなぜ無視されているのかはよくわかりません:

フレームワークはすでにブリッジングヘッダーで追加されているため、フレームワークのインポートをスキップしたことを確認してください。

お役に立てれば


37

CocoapodsとSwiftを使用して同じ問題がありました。Podfileの次の行に気づきませんでした。

# Uncomment this line if you're using Swift
# use_frameworks!

だから、私はそれを次のように変更するだけで済みました:

# Uncomment this line if you're using Swift
use_frameworks!

...それがうまくいった:)


うん、use_frameworksはPodfileにもなかったので、追加しました
PhoenixB


18

私もこの問題を経験していました。私にとっての修正は、2つのプロジェクト間のアーカイブスキームが一致しないことでした。フレームワークプロジェクトとアプリプロジェクトのあるxcworkspaceがあります。問題は、アプリのアーカイブスキームで、フレームワークがアーカイブスキームに使用していたものとは異なるビルド構成を使用していたことでした。両方のビルド構成をリリースに設定し、それで問題が修正されました。


これでうまくいきました。メインプロジェクトのビルド構成をリリース(配布から)に戻したので、サブプロジェクトと一致します。すべてが機能しています。ありがとうございました!
チャーリーセリグマン2016年

1
フレームワークには、プロジェクトで使用したAdHoc構成がありませんでした。つまり、プロジェクトと一緒にビルドされませんでした。
Johan

15

次の手順でうまくいきました。

  1. Xcodeを終了
  2. "pod update"端末で実行
  3. .xcworkspace再度開いてビルドします。

1
これらの手順は、私のために働いた...おかげで...私は「ポッドがインストール」走ったが、「モジュールXXXが離れていません..」になっていなかったが、XCodeのを終了して、ワークスペースは、私を助け再開時に...
アクス

私の問題は、新しいビルド構成とスキームを追加した後、「モジュールが見つかりません...」というメッセージが表示された後pod installです。
William Hu

これでうまくいきました。なぜこれが問題を修正するのかについての説明はありますか?
Nico Cernek

それは私のために働いた。projectname.xcworkspaceを再度開いた後、それを機能させるには、クリーンアップと再ビルドを行う必要があります。
Prashant

14

私の場合、フレームワークのインポートで何が間違っているのかを理解しようと何度も試みた結果、最終的にフレームワーク自体に問題があることがわかりました。信頼できるソースからフレームワークを取得していない場合は、フレームワークを検査して、中にmodule.modulemapファイルがあるModulesフォルダーが含まれていることを確認する必要があります。module.modulemapが存在しない場合、「No such module 'MyFramework'」エラーが発生します。

SwiftyJSON.frameworkのディレクトリ構造を示す例

Modulesフォルダーに "MyFramework.swiftmodule"フォルダーがない場合、フレームワークは見つかりますが、Xcodeはその内容を認識しないため、別のエラーが発生します。


2
何らかの理由で、これが存在する場合でも、xcode 9.1には表示されません。フレームワークを右クリックし、[Finderに表示]をクリックして、モジュールマップがそこにあることを確認します。ポッドプロジェクトで手動フレームワークを使用している場合、新しい手動フレームワークを追加したり、既存のフレームワークを更新したりする場合は、ポッドを再構築します。
Christopher Larsen

1
ありがとう!私は自分でファイルを作成し、それは機能しました:フレームワークモジュールNAME {アンブレラヘッダー "NAME.h"エクスポート*モジュール* {エクスポート*}}
Sjoerd Perfors

12

フレームワークが実際にそこにあり、パスなどにあると仮定します...〜/ Library / Developer / Xcode / DerivedData / ModuleCacheディレクトリを削除します(そして、プロジェクトをクリーンアップし、適切な方法でプロジェクト固有の派生データを削除します)。

標準のクリーンアップを実行しても、ModuleCacheディレクトリは再構築されません。


1
私はあなたが言ったようにそれをやっただけで、それはうまくいきません:/
alexandresecanove

1
次に、私が遭遇した問題と同じように見える別の問題に直面している可能性があります。:-/
ブラッドブライトン

Cocoapodでも同じ問題が発生し、ModuleCache内のファイルを削除するとうまくいきました。
HolySamosa

10

私にとってうまくいったのは、別の質問に対するこの解決策です。Xcodeを閉じ、プロジェクトをワークスペースとして再度開きます。
プロジェクトフォルダーに移動し、.xcodeworkspace ファイルを開きます。
(プロジェクトではなく)ワークスペースを開くと、ポッドはProject Navigatorで最上位のプロジェクトとして表示されます。


9

必ず、Find implicit DependenciesSchemeのビルドオプションがオンになっていることを確認してください。


これは私のために働いていた...
Abhinav Dobhal

7

数日前にも同じエラーが発生しました。これが私が問題を解決した方法です:

エラーは「モジュールが見つかりません」です

  • ルートプロジェクトディレクトリにPodfileを作成する
  • cocoapods(SwiftおよびiOSプロジェクトの依存関係マネージャー)をインストールします。
  • ポッドインストールを実行する
  • プロジェクトのビルド設定に移動します。

    • Swiftコンパイラー-コード生成でObjective-cブリッジングヘッダーを検索(ここでSwiftコンパイラーが見つからない場合は、プロジェクトに新しいSwiftファイルを追加してください)
    • ライブラリヘッダーファイルを左側からブリッジヘッダーにドラッグアンドドロップします(添付の画像を参照)ここに画像の説明を入力してください
  • 新しいブリッジヘッダーファイルを作成します(例:TestProject-Bridging-Header.h)。Swiftコンパイラ→Objective-Cで生成されたインターフェイスヘッダー名の下に配置します(上の画像を参照)。

  • TestProject-Bridging-Header.hファイルに#import "Mixpanel / Mixpanel.h"と書き込みます
  • Swiftファイルでは、コードは次のようになります。インポートMixpanel(つまり、ライブラリの名前)

それで全部です。


この答えは役に立ちました。MBProgressのためにそれを設定しようとすると、私は、指示に従って終わったios-support.blogspot.com/2017/04/...非常に類似していました、。
Vette

6

わかりました。同じ問題が私にとって解決されたのは、ワークスペースディレクトリを基準にして、派生データの場所をデフォルトのままに設定することでした。xcodeの設定に移動します。設定の場所タブに移動し、派生データを相対に設定します。それが役に立てば幸い。


それは一度だけ機能し、実行するとモジュールが見つからないという同じ問題が発生します。
nycdanie

5

同じエラーが発生しました

import Firebase

しかし、その後、私はポッドをメインターゲットセクションに追加するのではなく、PodfileのTestおよびTestUIターゲットにのみ追加していることに気付きました。

コマンドで

pod init

xcode swiftプロジェクトの場合、次のPodfileが生成されます

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

したがって、適切なプレースホルダーにポッドを追加する必要があります。


5

tvOSのようなプラットフォーム用にビルドしている場合は、Apple TV(つまり、一致する)シミュレータが選択されていることを確認してください。

iOSシミュレーターを選択してtvOSアプリをビルドすると、まさにこのエラーが発生しました。あらゆる種類のビルドの問題を探すために、1時間の大半を費やしました。


1
iOSプロジェクトをビルドするときに「My Mac」を選択した場合も同様です。Xcodeのも、これを可能にする理由がわからない...😒
クラース

ありがとうございました!今では明らかですが、エラーにより、より複雑なソリューションを探すようになりました!
Dan Messing

5

私の場合、アプリIPHONEOS_DEPLOYMENT_TARGETは9.3に設定されましたが、新しく作成したフレームワークでは10.2に設定されました

暗黙的な依存関係リゾルバーは私の新しいフレームワークを無視しましたターゲットプラットフォームの要件がアプリの要件よりも高いため、。

フレームワークのiOS配置ターゲットをアプリケーションの配置ターゲットと一致するように調整した後、フレームワークは正常にコンパイルおよびリンクされました。


ありがとう。数時間を無駄にした後、展開ターゲットが問題であることがわかりました。
niks

4

を使用していくつかのフレームワークを追加したときに、同じエラーが発生しましたCocoapods。プロジェクトでポッドを使用している場合は、xcodeworkspaceではなくを使用する必要がありますxcodeproject。xcodebuildを介してプロジェクトを実行するために-workspace <workspacename>xcodebuildコマンドにパラメーターを追加しましたが、完全に機能しました。


新しい質問がある場合は、[ 質問する ]ボタンをクリックして質問してください。十分な評判がある場合は、質問に賛成票を投じください。または、お気に入りとして「スター」を付けると、新しい回答が通知されます。
アレッサンドロカッティン2017

@pawan singh、私のために数時間節約しました、ありがとう!
ドミトリーセンコビッチ

3

Import PathsBuild Settingsカスタム(MySQL)モジュールが間違っ。それを正しい方向に向けると、メッセージは消えました。


@rplankenhornまあ、ちょうどあなたがあなたのマシンにそれらを置いたところです。find知らない場合はを実行してください。
qwerty_so 2017

3

私はこれを修正しました

ターゲット->一般->リンクされたフレームワークとライブラリ

Workspaceフォルダーの一番上にあるフレームワークを追加します。苦しみの中で。


3

ココアポッドを削除しました。次に、ポッドインストールを行って削除しました。次に、それをpodfileに戻し、再インストールしました。それでうまくいきました。なぜだかわかりません。


3

すでにポッドをインストールしていました。デバイスでアプリケーションをビルドしたところ、ビルドは問題なく機能しましたが、アーカイブが機能しませんでした。私は走るだけです:

pod install

新しいポッドはインストールされず、.xcodeprojファイルが再生成され、アーカイブが機能し始めた


3

Xcodeの10.1で私のためのソリューションを変更することでしたビルドシステム上のワークスペースの設定をファイルメニューで。これはデフォルトでNew Build Systemに設定されており、それをLegacy Build Systemに変更しました。

ここに画像の説明を入力してください


メイトありがとう、あなたは私の日を救った!+1
DungeonDev

3

問題が発生する可能性があるいくつかの潜在的な設定ミスがあります。

  1. ファイルを開いている.xcworkspace.xcodeprojファイルを開いていないことを確認してください。また、ビルドするSocial前に、最初にビルドしたことを確認してくださいTriviaApp
  2. メインアプリのあるすべてのモジュールでiOS展開ターゲットが同じに設定されていることを確認してください。たとえば、TriviaApp配備ターゲットがに設定されている9.0場合、Social配備ターゲットもに設定する必要があります9.0
  3. メインモジュール(TriviaApp)と使用するフレームワーク(Social)の構成セットが同じであることを確認してください。あなたのプロジェクトは、3つの構成を持っている場合、すなわち、DebugReleaseReleasePremiumあなたの社会的なフレームワークよりも、3つの構成を持っている必要がありDebugReleaseReleasePremium。また、アーカイブ設定がとの両方TriviaAppで同じ設定になっていることを確認してくださいSocial。つまり、TriviaAppアーカイブスキームがに設定されているReleasePremium場合、Socialアーカイブスキームもに設定する必要がありますReleasePremium
  4. 既にに追加されている場合Socialは、各.swiftファイルをインポートする必要がないことを確認してくださいBridging-Header.h
  5. 問題がPodファイルから発生した場合は、コメントを解除#use_frameworks!したことを確認しuse_frameworks!てくださいPodfile。ポッドにSocial依存している場合、ポッドの再インストールが機能することがあります。
  6. 上記の手順のいずれも機能しない場合は、派生データフォルダーを削除して、再構築してください。

うわー、私はあなたの助けなしにそれを理解することはなかっただろう。実際、メインプロジェクトにカスタム構成を追加しましたが、フレームワークにはありませんでした。
ユリアンオノフレ

@lulian助けてくれてうれしい
Sazzad Hissain Khan

2

Carthageを使用している場合、ビルド設定のフレームワークは通常、

$(PROJECT_DIR)/Carthage/Build/iOS

carthage update --platform ios --no-build(時間を節約するために)実行すると、Buildフォルダー内のファイルが再作成されず、モジュールはXCodeで使用できなくなります。

私の場合、私は実行しましたcarthage update --platform ios、そして私の問題は解決されました。


2

General => Linked Frameworks and Librariesで、私は自分を追加しました、./Pods/Pods.xcodeprojそしてそれはトリックをしました


2

私はのためのアクティブ・アーキテクチャを構築するだけ選択された構成のために[はい]に設定しました。これはトリックをしました:

>左のプロジェクトナビゲータから「ポッド」を選択し、「ビルド設定」を選択>のみにアクティブアーキテクチャを構築しません


1

上記の方法すべてが私の場合のようにうまくいかなかった場合。前日は問題ありませんでしたが、翌朝も同じエラーに直面しました。参照を削除してフレームワークを削除し、再度追加しました。これはばかげているように聞こえるかもしれませんが、うまくいきました。


1

FacebookSDKの読み込みで同様の問題がありビルド設定のフレームワーク検索パス〜/ Documents / FacebookSDK(フレームワークの場所を検索)を追加しました。その後、FBSDKShareKitモジュールをインポートできました


1

それだけの価値はありますが(Xcode 7.2 / Swift 2を使用してこれが初めてです)、ライブラリの.swiftファイルをプロジェクトディレクトリに置くだけで自動的にアクセスできるようになり、usingステートメントは必要ないことに気付きました。

例:SwiftyJSONを使用していて、プロジェクトにSwiftyJSON.swiftファイルがあるだけで十分でした。using声明は、実際にそれを解決し、そしてそれがうまく動作します私は「いいえ、そのようなモジュールのエラーを与え、それを取っていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.