web-dev-qa-db-ja.com

CocoaPodsを使用すると「そのようなモジュールはありません」

これが私の手順です。プロジェクトディレクトリに新しいPodfileを作成し、次を追加しました

platform :ios, '9.0'
use_frameworks!

target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end 

pod installを起動すると、すべてがうまくいき、xcworkspaceを開きます。次にViewController.Swiftに移動し、ポッドをインポートしようとするとNo such module 'SwiftyJSON'になり、import SwiftyJSONになります。何か案は?

編集:SwiftyJSONはObj-CではなくSwiftベースのモジュールです

62
Idris

Podsフレームワークをビルドスキームに追加して、フレームワークをビルドしてみてください。ビルドしたら、プロジェクトをビルド/実行します。

手順:

  1. スキームメニュー>スキームの管理> Podsをチェック>閉じる manage

    enter image description here

  2. スキームメニューからPodsを選択します。
  3. Podsをビルドします。
  4. 同じメニューからプロジェクトを選択し、ビルド/実行します。
81
Micah Benn

ポッドファイルをインストールした後、プロジェクトの.xcworkspaceファイル(.xcodeprojではない)を再度開く必要があります。

  1. CocoaPodsでレポジトリを複製する
  2. YourWorkspace/YourApplication.xcworkspaceを開きます
  3. そのプロジェクトの埋め込みバイナリにSwiftyJSON.frameworkを追加して実行するアプリを選択します

ハッピーコーディング:)

19
Asil ARSLAN

次を使用してポッドを再インストールすることもできます。

pod deintegrate

その後

pod install

これは私のためにこの問題を修正しました

17
Vishal

Command + Option + Shift + Kを押してからRunを押すと、魔法が表示されます。

または、メニュー-> ProductからキーボードのOptionキーを押すと、Clean Build Folderが表示されます。

Xcodeがこれらのことをどのように行うことができるのかおもしろそうに見えますが、Podを使用してSwiftライブラリを使用し、苦労してClean Build Folderになったときに同じことが起こりました。

16
Yash Vyas

これがまだ他の人に役立つかどうかはわかりません。しかし、私の場合、それは.podspecファイルの依存関係を参照しないという愚かな間違いでした。

複数の内部ライブラリを備えたアプリケーションがあり、それらのライブラリも相互に依存関係があります-Podfilesで説明しましたが、podspecsでは説明しませんでした。

したがって、Podfileには次のものがあります:

アプリケーション/ Podfile

# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

ConsumingLibrary/Podfile

# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

.podspecでも呼び出す必要があります。

ConsumingLibrary/ConsumingLibrary.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'DependentLibrary1', '~> 0.1.0-RC'

DependentLibrary1/DependentLibrary1.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'

ConsumingLibraryをビルドしてテストを実行できる理由を理解しようとして約2時間を無駄にしたと思いますが、アプリをビルドするとすぐに3つのライブラリすべてを消費しました。

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

10
LowAmmo

No such moduleの問題を解決するpod installコマンドの後にpod updateを使用してみてください。試したところ、うまく機能しました。

ありがとう、ラトネシュワル

6

@jakub-truhlářが書いたように、根本的な問題はSwiftとObjective-Cライブラリを混在させるいくつかの並行性の問題のためにmodule.modulemapファイルがないことですが、それらのファイルを手動で作成するよりも、複数の派生データをクリーンアップして、プロジェクトをビルドします。プロジェクトが正常にビルドされたら、module.modulemapファイルをリポジトリにコミットして、現在のブランチを変更するなどしてこれらのファイルが失われないようにします。

2
samuperry

ターミナルの特定の依存関係を更新しました

プロジェクトフォルダーに移動し、以下のコマンドを実行します

ポッドのポッド名を更新

私は私がする必要があります

ポッド更新ReachabilitySwift

1
karthikeyan

Swiftプロジェクト内にobj-cポッドがある場合に発生することがあります(use_frameworks!.podfileを使用している場合でも)。

podがインストールされていて、まだ取得している場合そのようなモジュールはありません、 これを試して:

  • XcodeのPodsプロジェクトに移動します
  • ポッド
  • 影響を受けるpodを右クリックします
  • Finderに表示

。frameworkサフィックスが付いたパッケージファイルが必要です。フォルダーModulesを作成します。このフォルダーにmodule.modulemapという名前のファイルを作成します。コードは次のとおりです。

framework module MODULE_NAME_HERE {
  umbrella header "MODULE_NAME_HERE.h"

  export *
  module * { export * }

  link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE
  link framework "AdSupport"
  link "c++"
  link "z"
}

再構築そして大丈夫です。

1
Jakub Truhlář

私が開発したSwiftフレームワークで同じ問題に直面しました。フレームワークにはgitプロジェクトの依存関係があり、フレームワーク自体がメインプロジェクトにポッドとして追加されました。したがって、理想的には、podspecファイルとPodfileでも依存関係が指定されています。

メインプロジェクトからアクセスするときに問題に直面することはありませんでしたが、スタンドアロンでフレームワークを開くと、「No such module」エラーがスローされました。

根本的な原因は、最初にメインプロジェクトで、次にフレームワークプロジェクトでpodinstallを実行したため、フレームワーク自体ではなくメインプロジェクトを指すパスで基本構成が設定されていることです。

例:プロジェクトファイルでは、0091AB0C861D71C94ADD7240のようになりました/ * Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "../../Apps/MyMainProject/Pods/Target Support Files/Pods-myframework/Pods-myframework.release.xcconfig"; sourceTree = ""; };

下記の修正を行った後、4444F5B1B35F066E57F96782/* Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "Pods/Target Support Files/Pods-myframework/Pods-myframework.release.xcconfig"; sourceTree = ""; };

エラーを修正するには、

  1. プロジェクトファイル->構成->すべての構成をなしに設定します。
  2. PodsフォルダーとPodfile.lockを削除します。
  3. 最初にフレームワークプロジェクトディレクトリで「ポッドインストール」を実行し、次にメインプロジェクトディレクトリでポッドインストールを実行します。
1
Arvind Abi

これらの提案をすべて試しましたが、何もうまくいきませんでした。代わりに、私のために働いていたのはポッドを分解することでした。その後、Xcode階層からポッドフォルダーを削除し、ポッドのインストールを行います。突然、うまくいきました。とにかくこれらの提案のほとんどがヒットまたはミスしているので、私に理由を聞かないでください。しかし、それが他の誰かにもうまくいくなら私は幸せです:)

0
Andrej Jaššo

CocoaPodsを古いプロジェクトに追加する際にこの問題がありました。以前のプロジェクトには既に手動でライブラリが含まれていました。ターゲットの設定で以前に設定された値のために、XcodeがCocoaPodsによって生成されたFramework Search Pathに解決されなかったために発生しました。

私を助けた解決策:

  1. 古いパスをコピーします

  2. deleteを押して、ターゲットの列のFramework Search Path設定を完全にクリアします-CocoaPodsによって生成されたパスがそこに表示されます

  3. 生成されたものの下に古い検索パスを追加します(まだ手動で追加したフレームワークを使用する場合にのみ必要です)

  4. プロジェクトのクリーンアップ、派生データのワイプ、ビルド。

結果は次のようになります(1行目はXcodeによって追加され、2行目はCocoaPodsによって追加され、3行目は手動です): enter image description here

0
Vitalii

ポッドの.podspecで定義されている正しいフレームワーク名をインポートしてください。

0
Leo

XCodeを開いてから、ファイル->最近開いてプロジェクトのワークスペースを選択すると、この問題が発生しました。

同じワークスペース/プロジェクトのファイルシステムに2つの.xcworkspaceファイルがあることがわかりました。

正しい.xcworkspaceファイルをダブルクリックしてXCodeを開くとうまくいきませんでした。正しいものは動作するものです。

後で間違ったものを削除しました。

0
Gerd Castan

フレームワークmodule.modulemapファイルにリンク「c ++」を追加するとうまくいきました

0
user2029995

複数のターゲットの場合。例えばTarget1、Target2

use_frameworks!

target 'Target1' do
 pod 'Fabric'
 pod 'Crashlytics'

   target 'Target2' do
   end

end

次に、ポッドインストールを実行します。

0
Yogendra Singh
  • クリーンプロジェクト
  • xcodeを閉じる
  • xcodeを開く
  • 楽しい
0
Ivan