私は、新しいプロジェクトでこの問題を抱えています。この問題は、RestKitとFacebook SDKの両方で発生します。奇妙なことに、SwiftyJSONは問題なく動作します。私は真新しいSwiftプロジェクトとPodfileを作成します:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'test-fb-Swift4' do
pod "FBSDKCoreKit"
pod 'SwiftyJSON', '~> 2.1'
pod 'RestKit', :inhibit_warnings => true
end
target 'test-fb-Swift4Tests' do
end
そのファイルを作成した後、ポッドインストールを実行し、test-fb-Swift4.xcworkspaceファイルでxcodeを再度開きます。
コントローラー内にRestKitをインポートすると、No such module 'RestKit'というエラーが表示されます。 Podfileを次のような非常に単純なバージョンにフォーマットするためのさまざまな方法を試しました。
source 'https://github.com/CocoaPods/Specs.git'
pod 'RestKit'
ターゲットの有無にかかわらず、use_frameworksの追加と削除を試みました。 :inhibit_warningsの有無にかかわらず。
CocoaPods 0.36.4を実行していて、最新のrcビルドを試しました。別のプロジェクトのObjective-Cバージョンは正常に動作します。これはSwiftを使用した最初のプロジェクトであり、この問題にこだわっています。
同じ問題がありました。私の解決策は、.xcworkspace
ではなく、.xcodeproj
を使用してプロジェクトを開くことでした。 .xcodeproj
にはメインプロジェクトのみが含まれます。 .xcworkspace
には、Restkitを含むすべてが含まれます。
同様の問題がありました。特にRestKitではなく、最初はHockeySDKを使用します。ポッドの削除と再インストール、ココアポッド自体の更新、ポッドの更新、派生データの削除、プロジェクトのクリーニングなど、すべてを試しました。
それから私はすべてのポッドが私にとって問題であることに気づきました。関連トピックの検索を続けた後、私は最終的にそれを発見しました:
•ターゲット>ビルドフェーズ>バイナリとライブラリをリンク
Podsフレームワークの置き場所が間違っていました(以前のPodsのセットアップまたはインストールの試行による可能性があります)。
削除すると、問題はなくなりました。私は、人々が以下のような問題を経験しているように見えることに気付きました
•プロジェクト>情報>構成
また、Podsフレームワークが誤ってマップされていた場所。したがって、前者がうまく機能しない場合は、後者も確認することをお勧めします。
2番目のオプションは私のために働いた。 [プロジェクト]> [情報]> [構成]には、プロジェクトの2つのターゲットがあります。通常のターゲット(Quizz)とテストターゲット(QuizzTests)です。
通常の構成では、構成は「Pods.debug」または「Pods.release」で設定されましたが、QuizzTestsには構成がありませんでした。 QuizzTestsの構成を入力するとすぐに、すべてが機能しました。
私にとっては、ポッドを分解して再インストールすると問題が解決しました。
最初
pod deintegrate
その後
pod install
この問題を修正するために非常に簡単にできることの1つは、ポッドのインストール時にXCodeが完全にシャットダウンされるようにすることです。この問題が発生するたびに、プロジェクトを閉じてもXCodeが開いたままであることがわかります。お役に立てば幸いです!
私が見つけた別の潜在的な解決策は、use_frameworks!
をまだポッドファイルに追加していない場合に追加し、pod install
を再度実行することです。そのポッドのみを追加した場合、Firebaseの問題でした。
これでうまくいくはずです:
何時間も試した後、私は原因を発見しました。メインのアプリターゲットには、4つのビルド構成(デバッグ、リリース、内部、外部)がありました。ただし、私のフレームワーク(子プロジェクト)には、カスタムが追加されているため、内部、外部がありませんでした。フレームワークプロジェクトにinternal/externalを追加すると、すべてが正常にアーカイブされました。
私が試したもの:
この問題に対する唯一の解決策は、メインアプリターゲットを再度ビルドして実行する前に、スキームピッカー(実行/停止ボタンの隣)でPods-(yourapp)ターゲットを公開し、そのPods-ターゲットを手動でビルドすることでした。これで誰かが10分節約できることを願っています!
ここでの答えの1つはmake sure that XCode is completely shut down when installing pods
であり、これを行っていないことはわかっていました。だから、Xcodeを完全に閉じて、もう一度開き、なしでpod install
を実行して、問題を修正しました。そのため、Xcodeの再起動はうまくいきました。
私の場合、最初はXcodeに1つのターゲットしかありませんでした。 pod install
を実行しました。数か月後、別のターゲットを作成する必要があったため、複数のターゲットがありました。
この状況で、pod install
を実行してxcodeをビルドすると、「no such module」エラーが発生します。
そこで、pod
ファイルを削除してから、pod init
を削除しました。
複数のターゲットのPodfile形式が変更されました
できます!!
これをチェックしてください!
同じクラスにアクセスする複数のターゲット(Messages Extension Appなど)を使用しており、そのクラスが両方のターゲットに追加されている場合、PodFileで両方のターゲットのポッドを追加する必要があります。
アイデアログ:まず、この問題はライブラリポッドまたはフレームワークの検索パスにこのポッドがないためだと思いますが、実際にはそこにあります。
第二に、XCode 10のバージョンサポートがポッドの誤ったマッピングをリードしているためかもしれません。ただし、プロジェクトをクリーンにした後、派生データを削除し、Xcodeを閉じ、ポッド関連ファイルを削除して、ポッドを再インストールします。これらの手順はすべて失敗しました…。この2番目のステップに4時間を費やしました…
第三に、最後にStackOverflowでGoogleを検索し続けたところ、@ Tyler Sheaffer氏の経験が@metatheoreticソリューションの下にあることがわかりました。
他の誰かの答えの下で彼の経験を残す人がいます。そして、最も重要なのは、複数のスキームの構成を早めに変更することを思い出させます。これは、従うチュートリアルで、構成名に例で名前を付けることを教えているためです:Debug(Development)。しかし、Cocoapodsは()を受け入れることができません。したがって、構成名Debug_Developmentを変更しました…だから!!!問題は、スキーム管理が開発などのお客様のスキームの1つで構成名を自動的に更新することです。また、成功した更新を行うスキーム開発で名前の更新のみを確認し、他の2つのカスタムスキーム(ステージング)を確認するためにスキップします、生産)。しかし!!!これらの2つはまだ古い誤った構成名のままです。だからこそ、私のKingfisherモジュールは、設定やスキームと一致しなかったため、決して見つかりません。最後に、Project/Scheme/Manage Schemes/Case closedで新しい更新構成ファイルを選択することで、この問題を解決します。
.gitignore
でPods
フォルダーを無視としてマークすると、この問題が発生しました。修正方法は、rm -rf
Pods
フォルダーをedし、pod install
を実行して、クリーン&ビルドしたことです。
アプリはプライマリターゲットを使用してビルドしますか?
もしそうなら、私はこれを機能させることができました:
pod install
を実行しますこれが私の最終的なPodfileです。
platform :ios, '11.3'
target 'myapp' do
use_frameworks!
# Pods for myapp
pod 'KeychainSwift'
pod 'ReachabilitySwift'
pod 'Firebase/Core'
pod 'Fabric'
pod 'Crashlytics'
target 'myappTests' do
inherit! :search_paths
# Pods for testing
end
target 'myappUITests' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-local' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-master' do
inherit! :search_paths
# Pods for testing
end
end
これは、アプリ拡張機能のターゲットiOSバージョンがアプリと異なる場合に起こりました。それらを一致させることでこれが修正されました。