Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Maps Utilities IOS Pod error

I'm having trouble adding Google Maps IOS Utilities (for marker clustering) to my swift xcode project with pods. When I run pod install it fails with the following error:

The 'Pods-App' target has transitive dependencies that include static binaries: (/Users/warrick/Projects/orix/App/Pods/GoogleMaps/Subspecs/Base/Frameworks/GoogleMapsBase.framework, /Users/warrick/Projects/orix/App/Pods/GoogleMaps/Subspecs/Maps/Frameworks/GoogleMapsCore.framework, and /Users/warrick/Projects/orix/App/Pods/GoogleMaps/Subspecs/Maps/Frameworks/GoogleMaps.framework)

Google maps works fine, but as soon as I add the utilities it breaks.

What does this error message mean, and how can I go about resolving it?

Here is my Podfile:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
workspace '../app'

target 'App' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  pod 'GoogleMaps'
  pod 'Google-Maps-iOS-Utils'

  # Firebase - used for notifications
  pod 'Firebase/Core'
  pod 'Firebase/Messaging'

  target 'AppTests' do
    inherit! :search_paths
    # Pods for testing
  end

end
like image 329
Warrick Avatar asked Dec 12 '16 04:12

Warrick


2 Answers

This is an issue that doesn’t have an out of the box solution due to Cocoapods limitations. The limitation occurs when an application is built in Swift, you are including use_frameworks! in your podfile, and are using a transitive dependency that is provided as a static library (such as Google Maps).

Becase Google will not provide a dynamic framework (until it supports iOS 7), the current workaround is to integrate Google Maps IOS Utilities manually into your project.

The integration steps are described here: https://github.com/googlemaps/google-maps-ios-utils/blob/b721e95a500d0c9a4fd93738e83fc86c2a57ac89/Swift.md

  • Remove Google-Maps-iOS-Utils from the Podfile (if it is there). In your project create a group named 'Google-Maps-iOS-Utils'.
  • Download the repo into your local computer.
  • Add the folders inside the src directory into your project by right clicking on the 'Google-Maps-iOS-Utils' group and selecting "Add Files to ..." (Make sure you select the target as your app target to avoid undefined symbols issue).
  • Make sure "Use Header Map" is ON for your app target in XCode Settings (it is ON by default in XCode).
  • Add a bridging header file with #import "GMUMarkerClustering.h" (note the relative path).
  • Open the umbrella header GMUMarkerClustering.h (under the Google-Maps-iOS-Utils/Cluster group) and change all the import paths to relative. For example, change #import <Google-Maps-iOS-Utils/GMUCluster.h> to #import "GMUCluster.h". (The 'Use Header Map' setting will resolve the relative path correctly).
  • Build your project.
  • That's it.
like image 78
Ilya Shvedikov Avatar answered Sep 21 '22 00:09

Ilya Shvedikov


I was able to install pod, error disappeared after I removed use_frameworks! from pod file because our project is in swift and added following lines to podfile pod 'GoogleMaps' # Objective-C pod pod 'Google-Maps-iOS-Utils', :git => 'https://github.com/googlemaps/google-maps-ios-utils'

like image 36
Waaheeda Avatar answered Sep 20 '22 00:09

Waaheeda