4

cocoapods 経由でインポートされた GoogleMaps を使用して、XCode 7 ベータ 3 と Swift 2.0 を使用している新しいプロジェクトがあります。これは WatchKit 2.0 アプリなので、iPhone 用のメイン ターゲット (Destinations)、Apple Watch 用のターゲット (Destinations WatchKitApp および Destinations WatchKitExtension)、および内部フレームワーク (DestinationsKit) があります。他のもの。

GoogleMaps をメイン ターゲット (目的地) に正常にインポートでき、マップの表示に成功しました。

import UIKit
import DestinationsKit
import GoogleMaps

class DestinationDetailsViewController : UIViewController
{
    // our selected destination
    var destination: Destination!

    // our map view
    var mapView : GMSMapView!

    // ... code to display a map centering on the destination ...
}

上記のコードは、私の内部フレームワークである DestinationsKit をインポートし、GoogleMaps を正常に使用します。

ただし、現在、2 地点間のルートを計算するコードを作成しており、そのコードを内部フレームワーク (DestinationsKit) に追加しています。GoogleMaps をインポートしようとすると、「No such module 'GoogleMaps'' というメッセージが表示されます。

import Foundation
import CoreLocation
import GoogleMaps  // Error 'No such module 'GoogleMaps''

public class UserTrip {   
}

私は成功せずに次のことをしました:

  • 「ビルドフェーズ」->「バイナリをライブラリにリンク」、Pods.Framework を追加しました (これは、メインターゲットで成功したことです)
  • 「フレームワーク モジュールへの非モジュラー インクルードを許可する」を「はい」に設定します。
  • ビルド設定で「パッケージ化」->「モジュールの定義」を「はい」に設定します

私の Pods ファイルは次のとおりです。

source 'https://github.com/CocoaPods/Specs.git'

use_frameworks!

pod 'GoogleMaps'

Pods.Framework が両方のターゲットに含まれていることを確認しました。そのため、メイン ターゲットが GoogleMaps を見つけられるのに、私の内部フレームワークが見つけられない理由がわかりません。

前もって感謝します!

4

1 に答える 1

2

もちろん、質問を投稿するとすぐに理由がわかりました。

Pods.framework をビルド フェーズに手動で追加しましたが、Pods ファイルを更新してフレームワークをターゲットとして含め、「pod install」を再度実行する必要がありました。したがって、更新された Pods ファイルは次のとおりです。

source 'https://github.com/CocoaPods/Specs.git'

# We need to link with all targets. If target is added, this must be updated

use_frameworks!

pod 'GoogleMaps'

link_with 'Destinations', 'DestinationsKit'

target 'Destinations' do
end

target 'DestinationsKit' do
end

「ターゲット」行が必要かどうかはわかりませんが、ターゲット固有の依存関係がホームになるように含めるとよいでしょう。

于 2015-07-17T19:21:58.070 に答える