carthage version: 0.19.1xcodebuild -version: Xcode 8.2.1 Build version 8C1002--no-build? No--no-use-binaries? No--use-submodules? NoActually Fabric does not provide their binary framework with Carthage only with CocoaPods. It's been several months now that we are many to ask them but they do nothing.
So I took the initiative to try myself to define a carthage component from their binary framework Fabric and Crashlytics.
It does not work yet and I'll need some help.
My test project is defined here: CarthageFabric
Cartfile
binary "https://raw.githubusercontent.com/TofPlay/CarthageFabric/master/Fabric/Fabric.json" == 1.6.11
binary "https://raw.githubusercontent.com/TofPlay/CarthageFabric/master/Crashlytics/Crashlytics.json" == 3.8.3
Carthage Output
$ carthage update --platform iOS
*** Downloading binary-only framework Crashlytics at "https://raw.githubusercontent.com/TofPlay/CarthageFabric/master/Crashlytics/Crashlytics.json"
*** Downloading binary-only framework Fabric at "https://raw.githubusercontent.com/TofPlay/CarthageFabric/master/Fabric/Fabric.json"
Invalid architecture UUIDs: Could not parse UUIDs using dwarfdump from /Volumes/Users/me/TestProject/Carthage/Build/iOS/Crashlytics.framework/Crashlytics
If I copy manually Fabric.framework and Crashlytics.framework in the directory /Volumes/Users/me/TestProject/Carthage/Build/iOS it works perfectly.
That should be because that the framework are static ones. Carthage does not support static frameworks (search and see similar / related issues).
In this case with the instruction binary we don't need that Carthage check if it's a dynamic or a static framework. We only need that Carthage to copy the framework into /Carthage/Build/iOS folder.
Yes, I've also run into this issue. If Carthage relaxed the dynamic framework requirement in binaries it would make managing static framework dependencies considerably easier.
Did you see @mdiep's comment? 馃檪 https://github.com/Carthage/Carthage/issues/1379#issuecomment-271170497
Since this isn't really supported by Apple, we don't really want to get into it.
But I would be willing to review a PR that added this functionality. I can't promise that it'd be accepted鈥擨 think it'd likely depend on how much complexity was required. A good first step might be to investigate and report the things that would be required to support it.
I'm receiving a different error, what happens is that my framework has a plist file that is not copied
Failed to read file or folder at /private/var/folders/.../Dynatrace.framework: Error Domain=com.antitypical.Result Code=0 "the DTSDKName key in its plist file is missing" UserInfo={com.antitypical.Result.file=/tmp/carthage-20170311-45795-2gppce/Source/CarthageKit/Project.swift, com.antitypical.Result.function=readFailed, com.antitypical.Result.line=1107, NSLocalizedDescription=the DTSDKName key in its plist file is missing}
I did an experiment here: https://github.com/JackNova/dynatrace-carthage-poc
Could someone help me to understand what's going on?
I figured it out. My problem was that I created the .zip file with the framework on Mac OSX. What happens on MacOSX is that in the .zip file, ends up a __MACOSX/ folder. Carthage tries to identify a valid framework in this directory, but in this directory, the .plist is missing, so Carthage terminates with the Error.
Healing the .zip file solved the problem.
@JackNova Can you please explain how did you "heal" the zip file?
@oded-regev Check your zip file: unzip -vl Leanplum.framework-2.0.2.zip It likely contains a folder __MACOSX. Remove that by: zip -d Leanplum.framework.zip "__MACOSX/" "__MACOSX/*"
Most helpful comment
@oded-regev Check your zip file:
unzip -vl Leanplum.framework-2.0.2.zipIt likely contains a folder__MACOSX. Remove that by:zip -d Leanplum.framework.zip "__MACOSX/" "__MACOSX/*"