26

以下を含むワークスペースがあります。

  • myiPhone.xcodeproj
  • sharedStuff/sharedStuff.xcodeproj

sharedStuff.xcodeproj は、myiPhone.xcodeproj に依存する静的ライブラリを構築します (簡単にするために、各プロジェクトには単一のターゲットがあると仮定します)。

ここで、両方のプロジェクトで利用できる CocoaPods を介してライブラリを追加したいと考えています。

私の Podsfile は次のようになります。

workspace 'myWorkspace.xcworkspace'
platform :ios

target :myiPhone do
    xcodeproj 'myiPhone.xcodeproj'
    pod 'MBProgressHUD', '~> 0.6'
end


target :sharedStuff do
    xcodeproj 'sharedStuff/sharedStuff.xcodeproj'
    pod 'MBProgressHUD', '~> 0.6'
end

ビルドすると、次のエラーが発生します。

diff: /../Podfile.lock: そのようなファイルまたはディレクトリはありません diff: /Manifest.lock: そのようなファイルまたはディレクトリはありません エラー: サンドボックスが Podfile.lock と同期していません。「pod install」を実行するか、CocoaPods インストールを更新します。

ここで何が起こっているのか誰にも分かりますか?

更新: 「Check Pods Manifest.lock」ビルド フェーズが実行されたときに、PODS_ROOT 変数が設定されていないように見えます。

4

5 に答える 5

23

ワークスペースに 2 つのプロジェクトがあり、受け入れられた回答がうまくいきませんでした。しかし、最終的に、Cocoapods を 2 つのプロジェクトで適切に動作させる方法を管理しました。私のポッドファイルは次のようになります。

workspace 'Projects.xcworkspace'
platform :ios, '8.0'

use_frameworks!

# ignore all warnings from all pods
inhibit_all_warnings!

def shared_pods
    # all the pods go here
    # pod 'Parse' etc.
end

xcodeproj 'Project1.xcodeproj'
xcodeproj 'Project2/Project2.xcodeproj'

target :Project1 do
  xcodeproj 'Project1'
  shared_pods
end

target :Project2 do
  xcodeproj 'Project2/Project2.xcodeproj'
  shared_pods
end
于 2015-11-19T15:25:25.943 に答える
10

xcode プロジェクトの最初のターゲットには、2 つのロック ファイルで差分を実行するビルド フェーズがあります。しかし、xcode プロジェクトの構成は、Pods/Pods-libPods.xcconfig で構成されたユーザー定義の設定を参照していないようです。

複数の xcodeprojs で Pod を特定のターゲットにリンクしようとしているようです。私の仮定が正しければ、target属性を間違って使用しています。このtarget属性は、Pods プロジェクト内に新しい静的ライブラリを作成します。これには、その 内で構成した Pod が含まれますtarget

Pods xcodeproj のデフォルトのターゲットは、libPods.a スタティック ライブラリを生成する libPods です。これは、 を指定しない場合に生成されますtarget。したがって、ポッド xcodeproj で複数の静的ライブラリを生成することに関心がない場合は、わざわざターゲットを定義せず、link_with属性を使用してデフォルトの libPod target(静的ライブラリ) を xcodeprojs のターゲットにリンクします。

たとえば、次の Podfile は、コンパイル フェーズに MBProgressHUD ソースを追加する Pods.xcodeproj に libPods ターゲットを作成し、PODS_ROOT と PODS_HEADER_SEARCH_PATH を定義する xcconfig ファイルを各 xcodeprojs に追加します。次に、この静的ライブラリを指定したターゲットにリンクしlink_withxcodeproj

workspace 'myWorkspace.xcworkspace'
platform :ios

xcodeproj 'myiPhone.xcodeproj'
link_with 'myiPhone'
xcodeproj 'sharedStuff/sharedStuff.xcodeproj'
link_with 'sharedStuff'

pod 'MBProgressHUD', '~> 0.6'
于 2013-06-05T19:53:49.087 に答える
7

これは私のフォルダ構造です

OB
|podfile
|Project1->Project1.xcodeproj
|Project2->Project2.xcodeproj

これはOBフォルダ内の私のpodfileです

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

workspace 'OB.xcworkspace'
use_frameworks!

# ignore all warnings from all pods
inhibit_all_warnings!

project 'Project1/Project1.xcodeproj'
project 'Project2/Project2.xcodeproj'

abstract_target 'OB' do
    pod 'Alamofire', '~> 4.0'

    target 'Project1' do
        project 'Project1/Project1.xcodeproj'
    end

    target 'SchoolKids' do
        project 'Project2/Project2.xcodeproj'
    end
end

これにより、Afnetworking/Alamofire が両方のプロジェクトに追加されます。特定のプロジェクトに専用のポッドが必要な場合は、これを行うことができます。

 target 'Project1' do
        project 'Project1/Project1.xcodeproj'
        pod 'Alamofire', '~> 4.0'
    end
于 2016-12-03T06:01:50.410 に答える