Carthage: CocoaPods binary framework convert to Carthage binary framework

Created on 22 Feb 2017  路  9Comments  路  Source: Carthage/Carthage

  • carthage version: 0.19.1
  • xcodebuild -version: Xcode 8.2.1 Build version 8C1002
  • Are you using --no-build? No
  • Are you using --no-use-binaries? No
  • Are you using --use-submodules? No

Actually 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
question

Most helpful comment

@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/*"

All 9 comments

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/*"

Was this page helpful?
0 / 5 - 0 ratings