まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

GoogleAnalyticsのiOS SDKをpodspec側のdependencyにすると相性が悪い

GoogleAnalyticsのSDKのラッパーライブラリを作りたい

そのためには、podspec側にdependencyを書いておく必要がある。こんな感じ。

Pod::Spec.new do |s|
  s.name             = 'Example'
  s.version          = '0.1.0'
  s.summary          = 'A short description of Example.'
略
  s.dependency 'Google/Analytics'
end

これでpod installをするとtransitive dependencyのエラーが出てpod installができなくなってしまう。 原因は、GoogleAnalyticsが提供しているライブラリがFramework形式ではなく、.aのstatic libraryのためGoogle様がどうにかしてくれないとどうしようもない。 swiftの場合、use_frameworks!が必要なため、ここで詰まってしまう。

回避策、そしてまた別の問題

Podfile側に下記のworkaroundを入れれば回避可能。 https://github.com/CocoaPods/CocoaPods/issues/3289

pre_install do |installer|
    def installer.verify_no_static_framework_transitive_dependencies; end
end

しかし、pod installはうまくいくけどライブラリはリンクされないため結局ライブラリ側ではGAのSDKが利用できない。 リンクさせるためには、下記のようにpodspec側のxcconfigにFRAMEWORK_SEARCH_PATHSLIBRARY_SEARCH_PATHSなどを追記していかないといけない。実際は、他にも必要だが何が必要かを探して自分で書いていかないといけない。

  s.pod_target_xcconfig = {
    'FRAMEWORK_SEARCH_PATHS' => '"${PODS_ROOT}/Google/Frameworks"'
  }