2012-04-14 6 views
1

Beim Öffnen der ObjectieGitFramework.xcodeproj-Datei kann ich jetzt das iOS-Schema erfolgreich erstellen. Es war jedoch eine Menge Experimentieren erforderlich. Lasst uns von Anfang an beginnen - wie ich das gemacht habe.Einschließlich ObjectiveGit-Bibliothek in der iOS-App

Was ich tue:

ersten geklonten mir eine Gabel von ObjectiveGit.

git clone [email protected]:Eonil/objective-git.git --recurse-submodules 
cd objective-git 
cd ./Scripts/libgit2-make-ios/; sh ./download-make-clean-deploy.sh "./../../libgit2.a"; cd ../.. 

Src: https://github.com/libgit2/objective-git/pull/54

Öffnen des Projekts und Gebäude führt nun zu einem Fehler und eine Warnung. Ich lasse Xcode automatisch die Projekteinstellungen aktualisieren, um die Warnung zu lösen. Errors

Jetzt gehe ich zum libgit2 Verzeichnis und bauen cmake mit:

$ mkdir build && cd build 
$ cmake .. 
$ cmake --build . 

Src: https://github.com/libgit2/libgit2

Dieses Ergebnis, unter anderem in der libgit2.0.15.0.dylib-Datei erstellt werden. Image of the file in finder

Ich ziehe es in den Xcode und füge es zu ObjectiveGit und dem iOS-Ziel hinzu. Jetzt gehe ich in den Aufbauphasen Registerkarte für ObjectiveGit-iOS und es wie folgt aussehen:

enter image description here

Das Problem

In diesem Moment ich das Projekt aufbauen konnte, und ich konnte Klassen erstellen innerhalb es erfolgreich mit der ObjectiveGit. Wenn ich jedoch das Projekt in ein anderes Projekt gezogen habe, ObjectiveGit-iOS als Zielabhängigkeit hinzugefügt und libObjectiveGit-iOS.a in link binary with libraries hinzugefügt habe, konnte ich ObjectiveGit/ObjectiveGit.h nicht importieren und ich bekam einige andere seltsame Fehler (siehe Bilder unten). Ich weiß sehr wenig über Bibliotheken in xcode, also weiß ich überhaupt nicht, warum das nicht funktioniert.

enter image description here enter image description here

Nun, dies ist ein Fehler, den ich einmal bekam mehr aber nicht. Ich weiß nicht, was ich getan habe, um es zu verursachen. enter image description here

aktualisieren

$(SRCROOT)/frameworks/ObjectiveGit/Classes 
$(SRCROOT)/frameworks/ObjectiveGit/libgit2/include 
$(SRCROOT)/frameworks/ObjectiveGit/Classes/Categories 

Beim Hinzufügen dieses zu header search path geschieht etwas Seltsames. Dies führt dazu, dass keine Dateien gefunden werden, sondern stattdessen 70 andere Mach-o-Fehler.

`` `

Antwort

1

Dynamische Bibliotheken werden von iOS nicht unterstützt. Sie müssen statische Bibliotheken verwenden.

Um es klar zu sagen: Natürlich unterstützt iOS dynamische Bibliotheken, aber nur diese, die von Apple vertrieben werden.

+0

Was ist mit einer statischen Bibliothek, die selbst eine dynamische Bibliothek enthält? Konnte das nicht funktionieren, wenn man die Dylib (libgit2) in das statische 'ObjectiveGit' aufnehmen könnte? –

+1

Das würde nichts ändern, da libgit2.dylib auf dem Gerät nicht verfügbar wäre. Warum kompilierst du nicht einfach libgit2 static? –

+1

Ich fühle mich jetzt sehr, sehr dumm. Ich weiß nicht, warum ich das nicht getan habe. Ich habe es jetzt getan und es scheint gut zu funktionieren, aber ich kann es nicht genau sagen wegen einiger Mach-o-Fehler mit der libz, die an ihnen arbeitet. –

Verwandte Themen