При открытии файла ObjectieGitFramework.xcodeproj я могу успешно скомпилировать схему iOS. Однако потребовалось много экспериментов. Давайте начнем с самого начала - как я это сделал.Включая библиотеку ObjectiveGit в приложение iOS
Что я сделал:
Сначала я клонировал вилку 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
Открытие проекта и строительство в настоящее время приводит к одной ошибки и одного предупреждения. Я разрешаю Xcode автоматически обновлять параметры проекта для разрешения предупреждения.
Теперь я иду в каталог libgit2
и построить с помощью cmake:
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
Src: https://github.com/libgit2/libgit2
Этот результат, помимо всего прочего, в файле libgit2.0.15.0.dylib
создается.
Я перетаскиваю его в Xcode и добавляю его в ObjectiveGit и цель iOS. Теперь перейдите на вкладку фазы сборки для ObjectiveGit-прошивки и сделать его выглядеть следующим образом:
Проблема
В этот момент я мог бы построить проект, и я мог бы создать классы в нем успешно используется ObjectiveGit
. Однако, когда я перетащил проект в другой проект, добавил ObjectiveGit-iOS
в качестве целевой зависимости и добавил libObjectiveGit-iOS.a
в link binary with libraries
Я не смог импортировать ObjectiveGit/ObjectiveGit.h
плюс я получал некоторые другие странные ошибки (см. Изображения ниже). Я очень мало разбираюсь в библиотеках в xcode, поэтому я совсем не знаю, почему это не работает.
Теперь это ошибка у меня один раз, но не больше. Я не знаю, что я делал, чтобы вызвать это.
Update
$(SRCROOT)/frameworks/ObjectiveGit/Classes
$(SRCROOT)/frameworks/ObjectiveGit/libgit2/include
$(SRCROOT)/frameworks/ObjectiveGit/Classes/Categories
При добавлении этого к header search path
что-то странное происходит. Это приводит к тому, что файлы не будут найдены, кроме 70 других ошибок Mach-o.
«`
Что относительно статической библиотеки, которая сама содержит динамическую библиотеку? Не могли бы это работать, если бы можно было включить dylib (libgit2) в статический 'ObjectiveGit'? –
Это ничего не изменит, потому что libgit2.dylib не будет доступен на устройстве. Почему бы вам просто не скомпилировать libgit2 static? –
Теперь я чувствую себя очень, очень глупо. Я не знаю, почему я этого не делал. Я сделал это сейчас, и, похоже, он работает нормально, но я не могу точно сказать, из-за каких-то ошибок mach-o с libz, которые работают над ними. –