web-dev-qa-db-ja.com

Xcodeのポッドエラー「Id:framework not found Pods」

Bitbucketリポジトリからプロジェクトを複製しようとしていますが、ワークスペースでXcodeプロジェクトを実行しようとするとId: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)エラーが発生します。これらは私が従った手順です。誰かが私が間違っていることを私に知らせることができれば、それは素晴らしいことです!

  1. git clone (link to bitbucket)
  2. デバッグとリリースの両方で、Xcodeポッドプロジェクトの構成設定をnoneに変更しました
  3. 実行された_pod install_
  4. 開いたXcodeワークスペースファイル
  5. xcodeでビルドしようとしましたが、エラーId: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)を受け取りました

編集ポッドファイルは次のとおりです。

_# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

target 'Oncarb' do
  pod 'Alamofire'
  pod 'SwiftyJSON', '~> 2.2.0'
end

#target 'OncarbTests' do
#  pod 'Alamofire'
#  pod 'SwiftlyJSON', '~> 2.2.0'
#end
_

行方不明のステップはありますか?

ありがとうございました!

38
Pami

これは私のためにそれを修正しました:

  1. ワークスペースを開きます。
  2. 画面の左側にある青いプロジェクトアイコン(ファイルツリーに展開されます)をクリックします。
  3. 右側で「ターゲット」を選択します(「プロジェクト」ではなく、プロジェクトは青色です。ターゲットは鉛筆と定規のようなもので、絵筆は三角形を作ります)
  4. [全般]タブをクリックします
  5. 「リンクされたフレームワークとライブラリ」セクションに移動します(一番下まで)
  6. Podsフレームワークを削除する
  7. AlamofireとSwiftyJSONを追加する

私の場合、ポッドフレームワークを削除しない限り機能しませんでしたが、これは回避策であると感じています。おそらく、より多くの経験を持つ人がコメントできます。

131

ターゲットの名前を変更したり、何かを移動した後、ポッドのインストールが破損することがあります。幸いなことに、Sudo make installのソリューションよりも簡単に修正する方法があります。

  1. pod deintegrateを実行して、プロジェクトからCocoapodの痕跡を削除します。
  2. pod installを再度実行して、すべて追加し直します。

修正済みです。

28
NiñoScript

私の問題は、テストを実行したときにこのエラーが発生したことです。私はちょうどそれをインストールするので

target 'Project' do
   pod 'xxx'
end

また、テストターゲットに追加する必要があります。

target 'ProjectTests' do
   pod 'xxx'
end
5
William Hu

私の場合、いくつかのフレームワークが赤でリストされていました。これらは、以前のPodfile構成から残っていました。赤でリストされたこれらのフレームワークを削除するだけで、問題は修正されました。

1
Andrew

explicitテストクラス/テストターゲットへのCocoapodsフレームワークのインポートで考えられる原因の1つ。

例:

import XCTest
//import AlamofireImage
@testable import MyProject

// instead of importing AlamofireImage:
#if os(iOS) || os(tvOS) || os(watchOS)
    import UIKit
    public typealias Image = UIImage
#elseif os(macOS)
    import Cocoa
    public typealias Image = NSImage
#endif

テストでAlamofireImageで定義されているtypealias Imageを明示的に使用したため、最初にAlamofireImageをインポートしました。

私の例のようにインポートを防止するのが簡単な場合は、実行してください。 Imageの定義をテストクラスファイルにコピーしました。

本当にそのインポートが必要だと思われる場合は、William Huの回答に進んでください。彼の答えの脚注:

target 'MyProjectTests' do
   pod 'OnlyThatFrameworkYouImportIntoYourTest' 
end

これらのポッドのみをテストターゲットに追加する必要があり、明示的にインポートする必要があります。

1
Gerd Castan