私は現在Swiftでコーディングしていますが、エラーがあります。
そのようなモジュールはありません
しかし、モジュールは私のプロジェクトの中にあり、 "リンクされたフレームワークとライブラリ"と "組み込みバイナリ"で宣言されているので、私は理解していません。
フレームワークはObjective-Cにあるので、そのためのブリッジヘッダを書きました。
どうやってXcodeにフレームワークを認識させるのですか?
なぜこれが起こるのかよくわかりませんが、あなたの問題を解決する一つの方法はあなたの build settings そして Framework Search Paths を問題のフレームワークを含むフォルダに定義することです。フレームワークがプロジェクトディレクトリに配置されている場合は、フレームワーク検索パスを$(SRCROOT)
に設定して再帰的に設定するだけです。
金曜日の午後、または午前1時以降であれば:
xcodeproj
の代わりにxcworkspace
を開くと、このようなエラーが発生します。
質問に対するコメントの Martin R の答えがそれほど無視されている理由はよくわかりません。
ブリッジングヘッダー がすでに追加されているため、フレームワークのインポートをスキップしたことを確認してください。
お役に立てれば
私はCocoapodsと Swift を使って同じ問題を抱えていました。 Podfileの次の行に気付かなかった。
# Uncomment this line if you're using Swift
# use_frameworks!
それで、私がしなければならなかったすべてはそれをそれに変えることでした:
# Uncomment this line if you're using Swift
use_frameworks!
...そしてそれはうまくいきました:)
私もこの問題を経験していました。私にとっての修正は、2つのプロジェクト間のアーカイブ方式が一致しないことでした。フレームワークプロジェクトとアプリプロジェクトを含むxcworkspaceがあります。問題は、私のアプリのArchiveスキームでは、フレームワークがそのArchiveスキームに使用していたものとは異なるBuild Configurationを使用していたことです。両方のBuild ConfigurationsをReleaseに設定すると、問題が解決しました。
私の場合、何をしていたのかを理解しようとした結果、フレームワークのインポートが誤ったため、フレームワーク自体が問題であることがわかりました。信頼できるソースからフレームワークを入手していない場合は、フレームワークを調べて、その中にmodule.modulemapファイルを含むModulesフォルダーが含まれていることを確認してください。 module.modulemapが存在しない場合は、 "No such module 'MyFramework'"エラーが発生します。
Modulesフォルダに "MyFramework.swiftmodule"フォルダがない場合、フレームワークは見つかりますが、Xcodeはその内容を認識しないため、さまざまなエラーが発生します。
次のステップは私のために働いた。
"pod update"
を実行する.xcworkspace
を開いて、もう一度ビルドしてください。フレームワークが実際にそこにあり、パスなどにあると仮定して...〜/ Library/Developer/Xcode/DerivedData/ModuleCacheディレクトリを削除します(そしてプロジェクトをきれいにし、プロジェクト固有の派生データを削除します)。
標準のクリーンアップを実行しても、ModuleCacheディレクトリは再構築されません。
SchemeのビルドオプションのFind implicit Dependencies
がオンになっていることを確認してください。
私も数日前に同じエラーに遭遇しました。これが私が問題を解決した方法です:
エラーは「モジュールが見つかりません」です
プロジェクトビルド設定に移動します。
TestProject-Bridging-Header.hなどの新しいブリッジヘッダファイルを作成し、Swift Compiler→Objective-Cで生成されたインタフェースヘッダ名の下に置きます(上記の画像を参照)
それで全部です。
TvOSのようなプラットフォーム用に構築している場合は、必ずApple TV(つまりマッチング)シミュレータを選択してください。
IOSシミュレータを選択してtvOSアプリをビルドすると、まさにこのエラーが発生しました。 1時間の大部分を費やして、あらゆる種類のビルドの問題を探していました……。
さて、私にとって同じ問題がどのように解決されたかというと、デフォルトのままではなく、ワークスペースディレクトリを基準にして派生データの場所を設定することでした。 xcodeの設定に行きます。環境設定の位置タブに行き、派生データを相対に設定します。それが役に立てば幸い。
私は同じエラーを受けていました
import Firebase
しかし、私はメインのターゲットセクションにpodを追加するのではなく、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
そのため、適切なプレースホルダーにポッドを追加したことを確認する必要があります。
私の場合、アプリはIPHONEOS_DEPLOYMENT_TARGETが9.3に設定されていましたが、新しく作成されたフレームワークでは10.2に設定されていました。
ターゲットプラットフォームの要件がアプリの要件よりも高いため、暗黙の依存関係リゾルバはmy new framework を無視しました。
フレームワークを調整した後、 iOS展開ターゲット 私のアプリケーションの展開ターゲットに合わせて、フレームワークは正常にコンパイルおよびリンクされました。
私のために働いたのは これ /別の質問への解決策です。 Xcodeを閉じてプロジェクトをワークスペースとして再び開きます。
プロジェクトフォルダに移動して.xcodeworkspace
ファイルを開きます。
(プロジェクトの代わりに)ワークスペースを開くと、PodはProject Navigatorに最上位プロジェクトとして表示されます。
私はCocoapods
を使用してフレームワークをいくつか追加したのと同じエラーが出ました。私たちのプロジェクトでPodを使っているのなら、xcodeworkspace
の代わりにxcodeproject
を使うべきです。 xcodebuildでプロジェクトを実行するために、xcodebuild
コマンドに-workspace <workspacename>
パラメーターを追加しましたが、それは完璧に機能しました。
私はすでにポッドを取り付けました。私のデバイス上でアプリケーションをビルドしてもビルドは問題なく動作しましたが、アーカイブは動作しませんでした。私はただ走ります:
pod install
新しいポッドはインストールされず、ただ.xcodeprojファイルが再生成され、アーカイブが機能し始めました
私はちょうど私のカカオポッドを削除しました。それから、私はそれを削除するためにポッドインストールをしました。それから私はそれを私のpodfileに戻して再インストールしました。それがうまくいった。理由がわからない。
これで直しました
ターゲット - >一般 - >リンクされたフレームワークとライブラリ
Workspace
フォルダーの一番上にあるはずのフレームワークを追加します。お尻の痛み。
General => Linked Frameworks and Librariesに、私は./Pods/Pods.xcodeproj
を追加しました。
カルタゴを使用している場合は、建物の設定のフレームワークは通常
$(PROJECT_DIR)/Carthage/Build/iOS
(時間を節約するために)carthage update --platform ios --no-build
を実行すると、Buildフォルダ内のファイルは再作成されず、そのモジュールはXCodeで利用できなくなります。
私の場合は、carthage update --platform ios
を実行しましたが、問題は解決しました。
自分用 アクティブアーキテクチャのみを構築 選択した設定で[はい]に設定されていた。これはトリックでした:
左側のプロジェクトナビゲータから[ポッド]を選択し、[ビルド設定]を選択します。アクティブアーキテクチャのみを いいえ にビルドします。
カスタムPodを開発中にこの問題が発生しました。 Procfileで依存関係を指定するだけでよいことがわかりました。
Pod::Spec.new do |s|
# ... other declarations
s.dependency 'Alamofire', '~> 4.3'
end
私の問題は複数のターゲットに関するものでした。私は以下のリンクでそれを解決しました: 正しい方法でポッドファイルを設定してください そして // - ビルド設定を修正してください
誰かがそれが役に立つことを願っています。
私は、Import Paths
内のBuild Settings
がカスタム(MySQL)モジュールには間違っていることを発見しました。それを正しい方向に向けた後、メッセージは消えました。
これがようやく私のために働いたのです。私はこれをすべてやらなければならなかったことをそのかなり不幸ですが、これは私がそれがうまくいくのを見つけることができる唯一のものでした。
ライブラリがlinked framework and libraries
の下にリストされていることを確認した後。表示されていない場合は、+
をクリックして、フレームワーク/ポッドが一覧表示されていることを確認してください。
スキームアイコンでプロジェクトをクリックします(下の画像を参照)。
それからあなたは焦点のあなたのフレームワークがリストされるのを見るべきです:
Manage Schemes.
をクリック
それからあなたはこのような何かを見るべきです:
あなたのフレームワークのbox
にチェックを入れ、AutoCreate Schemes now
をクリックしてからclose
をクリックします。
それからフレームワーク/ポッドをもう一度インポートしてみてください。
それは私のために働きました。
私の場合は、上記のすべての提案を試してもまだ機能しません。私はただインポートするものなしでエラーを示すファイルの内容をコピーして、同じインポートで別のファイルに貼り付けて、エラーファイルをコメントアウトします。それがうまくいったプロジェクトをもう一度実行してから、元のエラーファイルを削除して同じ名前のファイルを作成し、同じインポートで再び内容を元に戻します。私の場合は、これらのインポートを一度リンクできるようにする方法を考えてみれば、それは問題ないはずです。
ポッドファイルに間違ったターゲットを設定したため(UITestsセクションではなくプロジェクト自体)、この問題が発生していました。
私にとってこれはRxSwiftで起こり、問題はPodfileで3.0.0に修正したことでした。バージョン制限を取り除き、ポッドをアップデートすると、それが修正された3.1.0にアップグレードされました。
"No such module"エラーの最も深刻な原因で賞を受賞しました。私の場合は、付属のフレームワークを手作業で構築し、それを自分のプロジェクトディレクトリにコピーします。私のフレームワーク検索パスは正しく設定されていて、フレームワークは正しくプロジェクトに追加されています。
私が構築していたフレームワークをアーカイブしたとき、私は派生データのリリースフォルダーに私を連れて行くために "ファインダーに表示"を使用しました。しかし、フォルダにはフレームワークへのエイリアスだけが含まれ、フレームワーク自体は含まれていないことに気付きませんでした。元のフレームワークは派生データディレクトリに残っていたので、後で派生データをクリアしたときにフレームワークは削除されましたが、 私のプロジェクトはそれを知りませんでした 。
実際のフレームワークへのエイリアスに従ってフレームワークを再アーカイブし、それを私のプロジェクトディレクトリにコピーすることはうまくいきました。
それが私が持っていたように、cocoapodsなしで、単なる単純なプロジェクトであるならば、あなたのプロジェクトディレクトリの中にあなたのフレームワークを移動して、再リンクを試みることができます。私はデスクトップでそれを持っていました、しかしリンクされて、そして「Import MyFramework」は誤りをしました。プロジェクトディレクトリ内に移動して再度リンクしたところ、うまくいきました。
Xcode 10+とXcodeのバージョン<10で作成されたプロジェクトに対するもう1つの提案2.メインプロジェクトが依存するフレームワークを持つサブプロジェクトを含みます。問題は、Xcodeがサブプロジェクトで指定されたディレクトリにコンパイル済みフレームワークを配置することです。これは、メインプロジェクトのビルドディレクトリとは異なる可能性があります。
ファイル>プロジェクト設定を確認してください。さて、 "詳細..."をクリックして "レガシ"以外のものをビルドパスとして選択してください。その場合、Xcodeはすべてのビルドされたコンポーネントを1つのフォルダに入れるでしょう、そしてそれは "足りない"モジュールを見つけることができるはずです。
コンパイル時エラーです
module.modulemap
Objective-C、ライブラリ/フレームワークターゲット。
独自のライブラリまたはフレームワークをホストする場合は、module.modulemap
ファイルがあり、そのヘッダーがBuild Phases -> Headers section
にあることを確認してください
Framework Search Paths
Swiftコンシューマー-> Swift静的フレームワーク
Swiftコンシューマー-> Objective-C静的フレームワーク
Objective-Cコンシューマー-> Swift静的フレームワーク
Objective-Cコンシューマ-> Objective-Cフレームワークライブラリ
Framework Search Paths
を設定せずにアプリをビルドしようとすると、以前と同じエラーNo such module...
が表示されます。フレームワークリソースを指すようにFramework Search Path
を設定すると、Xcodeはプロジェクトを正常にビルドします。ただし、シミュレータでアプリを実行すると、次の理由でクラッシュが発生します:Image not found
約
Import Paths
Swiftコンシューマ-> Swift静的ライブラリ
Import Paths
は.swiftmodule
を指す必要があります
上記の方法がすべてうまくいかなかった場合は、私の場合と同じです。前日は問題ありませんでしたが、翌朝も同じエラーに直面しました。参照を削除してフレームワークを削除し、もう一度追加しました。これは愚かに聞こえるかもしれませんが、うまくいったと思います。
1 - ポッドファイルで、問題を引き起こしているポッドを削除し、ファイルを保存します。2 - ポッドインストールを実行します3 - ポッドを再追加し、ファイルを保存します4 - ポッドインストールを再実行します
問題は解決されるべきです。
こんにちは
私の問題(今回)は、Podfileで古いバージョンのライブラリを使用していたことです。
私は使った:
pod 'LBTAComponents', '~> 0.1.9'
これはうまくいきませんでしたが、私がそれを次のように変更したとき:
pod 'LBTAComponents', '~> 1.0.2'
出来た。
あなた自身のライブラリやフレームワークをホストする場合、それがmodule.modulemap
ファイルを持っていて、そこからのヘッダがBuild Phases -> Headers
セクションにあることを確認してください。
私はFacebookSDKをロードするのと同様の問題を抱えていました、私は 〜/ Documents/FacebookSDK (あなたのフレームワークがあるところで検索)を フレームワーク検索パス in ビルド設定 そしてその後追加しましたFBSDKShareKitモジュールをインポートできました
私の場合は、プロジェクトをリロードするだけでした。プロジェクトのクローンを作成するためにコマンドラインを使用しましたが、サブモジュールが正しくインストールされませんでした。改善するために、私はXCodeを通してプロジェクトを複製し、そしてすべてがうまくいった。まず変更を確実にバックアップしてください。
ワークスペースに複数のプロジェクトがある場合は、以下の作業が必要です。
1) すべてのプロジェクトに新しい設定を追加する
2) product - > clean
3)derived data
を削除
4)端末のpod install
5)あなたのプロジェクトを構築します。
誰かに役立つことを願っています。
build-debug.xconfig
の最後に追加することで、私は実際にこれをはるかに簡単に解決しました
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.debug.xcconfig"
そしてbuild-release.xconfig
の終わりまで
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.release.xcconfig"
なぜならそれらのファイルは既にPODS_ROOT
と関連するビルド変数を定義しているからです。
上記のことをすべて行ってもまだ何もうまくいかない場合は、ターゲットのビルド設定のFramework検索パスに$(inherited)
を追加してみてください。
私の場合Swift 4のプロジェクトではライブラリはコンパイルされていないので、それらを見つけてインポートすることは不可能でした。解決策はSwift 3.2 のようにcocoapodsのライブラリのコンパイルバージョンを設定することでした。
このエラーは、フレームワークにモジュールマップがないことによっても発生する可能性があります。インポートしようとしているフレームワークが自分のものである場合は、フレームワーク自体にコンパイラの警告がないか確認してください。私の場合、私のフレームワークは構築されていて適切な場所にありましたが、構築の警告がありました。
警告:ターゲット 'MyFramework'のアンブレラヘッダが見つかりません。モジュールマップは生成されません
この警告を解決することにより(これは モジュール名と一致しないフレームワークヘッダーに関連する )、フレームワークをインポートすることができました。
私の場合は、カスタムパスのチルダ(〜)文字を$(HOME)
に置き換えることで修正しました。カスタムパスは、 Locations タブの下のXcode設定にあります。
時々あなたはポッドを設置しなければなりません。
XCode 10でもう1つ考えられる原因は、Podsプロジェクトの場合、Supported Platforms
がmacOS
に変更され、Valid Architectures
がi386 x86_64
に変更されることです。プロジェクトがiOS用であると仮定してから、Podsプロジェクトを選択し、Supported Platforms
をiOS
に、そしてValid Architectures
をarm64 arm64e armv7 armv7s
に変更します。書かれたSwiftのフレームワークのSwift version
も間違ったバージョンに設定されることがあります。
私はポッドFakeryをインストールしました、ポッドは私のポッドファイルの下に追加されました、しかし私がそれを使用しようとしたとき私は同じエラーを受けました。問題は、ビルドしなかったのですが、ビルドした後、SwiftコンパイラがFakery Swiftファイルにいくつかの関数の名前を変更したというエラーを投げました。これらすべてのコンパイラの問題を解決した後、ビルドは成功し、私はモジュールを使用することができました。だから私の場合はSwiftの言語互換性が問題でした。
私にとっての解決策はでした。ターゲットの内側 - >ビルド設定 - >フレームワーク検索パスと$(継承)の追加。しかし、それがcocoapodsならあなたの答えはおそらくターミナルの出力の中にあります。
その価値はあるが(私はXcode 7.2/Swift 2を使ってこれに馴染みがない)、プロジェクトディレクトリにライブラリからの.Swiftファイルを持っているだけで自動的にアクセスできるようになるので、usingステートメントは必要ない。
例:私はSwiftyJSONを使用していますが、プロジェクトにSwiftyJSON.Swiftファイルを含めるだけで済みました。 using
ステートメントは、実際には 'no such module'エラーを出し、それを解決することで解決しました。それで問題なく動作します。