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.
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.
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:
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.
Nun, dies ist ein Fehler, den ich einmal bekam mehr aber nicht. Ich weiß nicht, was ich getan habe, um es zu verursachen.
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.
`` `
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? –
Das würde nichts ändern, da libgit2.dylib auf dem Gerät nicht verfügbar wäre. Warum kompilierst du nicht einfach libgit2 static? –
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. –