Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

target has transitive dependencies that include static binaries #34

Closed
motizuki opened this issue Dec 27, 2015 · 18 comments
Closed

target has transitive dependencies that include static binaries #34

motizuki opened this issue Dec 27, 2015 · 18 comments
Milestone

Comments

@motizuki
Copy link

Hello,

I've been trying to use the FirebaseUI pod v0.3.1 and I am getting this error when I run 'pod install'.

[!] The '******' target has transitive dependencies that include static binaries: (path../Pods/Google/Libraries/libGGLCore.a and path../Pods/Google/Libraries/libGGLSignIn.a)

This is my pod file:

platform :ios, '8.0'
use_frameworks!

target 'projectName' do
pod 'FirebaseUI', '~> 0.3'
end

@motizuki
Copy link
Author

Ref issue #23
It would be great if we could fix the issue on FirebaseUI/Auth + use_frameworks! since I will need to use frameworks for further pods.

@asciimike
Copy link
Contributor

As mentioned in #23, we can't do anything until Google changes the way they handle their pods. You'll either have to remove use_frameworks! or use FirebaseUI/Core.

Alternatively we can break out providers as per #26, at which point you can use providers other than Google with use_frameworks!.

@asciimike asciimike added this to the 0.4 milestone Dec 30, 2015
@motizuki
Copy link
Author

motizuki commented Jan 2, 2016

Oh cool, I will try that.
Thanks

@paulthorsteinson
Copy link

I can't get any project in Xcode 7.2 to compile with the latest FirebaseUI, even if i remove use_frameworks!

@motizuki
Copy link
Author

motizuki commented Jan 3, 2016

Removing the use_frameworks! will add all pods as static libraries, therefore you will have to import them through the Obj-c-bridge-header file in order to use them in your code.

@paulthorsteinson
Copy link

Thanks, totally forgot to do that after removing use_frameworks! 👍

@asciimike
Copy link
Contributor

Has anyone tried this on Cocoapods 1.0 (or even 0.39) yet? They seem to claim it was fixed as of 0.39 (http://blog.cocoapods.org/CocoaPods-0.39/)

@motizuki
Copy link
Author

I have tried on pod -v 1.0.0.beta.2, and the error still persists.
[!] The 'Pods-...' target has transitive dependencies that include static binaries: (../Pods/Google/Libraries/libGGLCore.a and ../Pods/Google/Libraries/libGGLSignIn.a)

@asciimike
Copy link
Contributor

Ok, thanks for letting us know, we'll do some more digging :)

On a related note, I wish their docs gave a little more info on what they did or how the feature worked...

@eeschimosu
Copy link

+1. I'm running in to the same problem. Trying to make a new project from FirebaseUI and add the static libraries using CocoaPods in order to simplify my life with authing using Firebase. Is this viable?

@asciimike
Copy link
Contributor

@eeschimosu Swift or Obj-C, and which version of iOS are you trying to use?

@eeschimosu
Copy link

@mcdonamp I would go for Obj-C since most of the job is already done, but I would love a Swift version of this. I am trying to use it from iOS 8.4 to 9.2.1

@eeschimosu
Copy link

I've removed the Google static dependencies and created this Pod: https://github.com/eeschimosu/FireUInoGoogle. It's useful if you don't want or need the Google Auth.

@asciimike
Copy link
Contributor

Yeah, it's an issue of use_frameworks not being compatible with Google pods (which are shipped as static libs). Since we try to coerce our pod into being a framework, but the Google pod can't be, Cocoapods freaks out... We could support Carthage (which would fix this since it's just including the libs and their dependencies without the Cocoapods magic), or see about fixing some of the Google pods issues. The real issue here is that iOS 7 can't have dynamic frameworks, so if you're a library/framework developer trying to support 7-9, things get a little tricky :/

Glad you got it working without Google, though it's sad that's what had to happen. If you're interested in helping out more, you could work on #26, which makes each provider it's own subspec, so you don't have to maintain FireUInoGoogle, but rather developers could just choose to not import FirebaseUI/GoogleAuth.

@codemodouk
Copy link

Hi @motizuki,

Firstly, apologies, I'm a bit new to Xcode and Swift, however, I'm really keen to try out Firebase and FirebaseUI.

Removing the use_frameworks! will add all pods as static libraries, therefore you will have to import them through the Obj-c-bridge-header file in order to use them in your code.

I've followed the instructions given to add the pods as static libraries by removing the use_frameworks! statement in the Podfile. I've also added lines into my objc bridging header file like so:

#import "FirebaseUI/FirebaseArray.h" #import "FirebaseUI/FirebaseAppDelegate.h" ...etc...

However, I still get a No Such Module 'FirebaseUI' when I attempt to import it into my Swift app.

Can you provide any guidance on how to get this working?

Thanks

@asciimike
Copy link
Contributor

@motizuki You should always add the umbrella header #import "FirebaseUI/FirebaseUI.h which should pull in everything necessary to run FirebaseUI (I need to check if it's properly done for the new Auth stuff--I have a feeling it isn't). EDIT: Well, look at that--I got rid of it when we added Auth. Anyways, the above advice is useful when people provide it for you ;)

The thing that I assume is missing is the module.modulemap, which (in most cases) takes the Umbrella header and wraps it like so:

framework module FirebaseUI {
    umbrella header "FirebaseUI.h" // except we don't have one >.<

    header "FirebaseArray.h" // and all other headers

    export *
    module * { export * }
}

The modulemap is typically generated through Cocoapods, but is either not being created, or is empty due to the lack of an umbrella header. You can modify the modulemap with the new stuff manually to try it out while we work to get some reasonable fixes.

@codemodouk
Copy link

Thanks Mike, I will keep an eye out for the fix.

@asciimike
Copy link
Contributor

Hey folks! 0.3.2 added support for per-provider subspecs, so at least now you can pick and choose which providers to install, which means that this bug is only a problem if you desire to use Google authentication (as it's a limit of Google SignIn, rather than FirebaseUI). I'll be closing it since it's "solved" in the general case, and developers should know how to deal with it when using Google SignIn.

@black-pixel-source black-pixel-source mentioned this issue Jun 23, 2019
Closed
@gmore gmore mentioned this issue Sep 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants