Какой самый быстрый способ добавить зависимости в проект Xcode с помощью Carthage.
Как добавить или отредактировать зависимости позже.
Какой самый быстрый способ добавить зависимости в проект Xcode с помощью Carthage.
Как добавить или отредактировать зависимости позже.
Установить Карфаген
Открытый терминал
Терминал: cd ~ / Путь / К / Папка, содержащая проект
Создайте файл Carthage как:
Терминал: коснитесь Cartfile
Откройте файл Cartfile из папки проекта и добавьте необходимую зависимость.
Пример файла Cartfile
github "Аламофайр / Аламофайр" == 4.5
github "Alamofire / AlamofireImage"
После редактирования файла Cartfile сохраните его.
Выполните следующую команду из терминала
Терминал: обновление carthage - платформа iOS
xCode> Этапы сборки
/ usr / local / bin / carthage копии-фреймворки
$ (SRCROOT) /Carthage/Build/iOS/DependencyName.framework
Выполнено
Карфагенский поток
TL;DR:
Download dependency -> build fat binary -> it should be imported -> slice for release
Длинная версия:
Установка Карфагена
//Homebrew
brew install carthage
Создайте Cartfile
файл в каталоге проекта (_4 _) / рабочей области (.xcworkspace
)
Измените Cartfile
. Добавьте необходимую зависимость == репо
github "<owner>/<repo>" == <version>
Запустите carthage update
в Cartfile
расположении. Логика высокого уровня:
`carthage update [dependency]` {
- reads `Cartfile`, resolves dependency graph and generates `Cartfile.resolved` to store a list of versions that will be actually built
//--no-use-binaries - this flag force a Carthage to not use a `Prebuilt framework`
//--no-build - this flag skip a building step - `carthage build`
`carthage bootstrap [dependency]` {
- reads `Cartfile.resolved`
`carthage checkout [dependency]` {
`carthage fetch <path>` {
- fetch dependency from `Cartfile.resolved` into `~/Library/Caches/org.carthage.CarthageKit/` folder
}
- checkout/move a dependency from `~/Library/Caches/org.carthage.CarthageKit/` to generated `Carthage/Checkouts` folder
}
`carthage build [dependency]` {
- builds all `shared frameworks schemes` from `Carthage/Checkouts` into generated `Carthage/Build` folder
//--no-skip-current - (+current consumer)this flag also builds all `shared frameworks schemes` of a consumer workspace/project(in addition to `Carthage/Checkouts` folder)
}
}
}
Перетащите созданные фреймворки на General -> Frameworks and Libraries
//framework location
<cartfile_path>/Carthage/Build/
Запускаем следующий скрипт. Этот шаг важен, потому что carthage создает двоичный файл fat
(arm64 ... + x86_64), используя lipo
[About] . Apple отклоняет заявку, которая ее использует. Вот почему вы должны добавить этот дополнительный шаг, чтобы вырезать архитектуру для симулятора (x86_64)
Build Phases -> + -> New Run Script phase ->
// /usr/local/bin/carthage - path to Carthage, copy-frameworks - command which sets a necessary architecture and copies framework to an application bundle
Shell -> /usr/local/bin/carthage copy-frameworks
//path to a generated Carthage/Build
Input files -> + -> $(SRCROOT)/Carthage/Build/<platform>/<name>.framework
* Любая carthage
команда должна вызываться из папки Cartfile
Если вы столкнетесь с какой-то ошибкой
This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/2q/jhrcxkmx49g21lydqfrf26ph0000gn/T/carthage-xcodebuild.AySUH3.log
//you can use open command to review the log
open /var/folders/2q/jhrcxkmx49g21lydqfrf26ph0000gn/T/carthage-xcodebuild.AySUH3.log
Создать тайник Карфагена
rm -rf ~/Library/Caches/org.carthage.CarthageKit
Не торопитесь на update
carthage update --platform ios --verbose --new-resolver
//e.g.
//The dependency graph contained a cycle
Используйте XCFramework [О программе] --use-xcframeworks
//error
Building universal frameworks with common architectures is not possible. The device and simulator slices for "<schema_name>" both build for: arm64
Rebuild with --use-xcframeworks to create an xcframework bundle instead.
//solution
carthage update --platform ios --verbose --new-resolver --use-xcframeworks