Самый быстрый способ добавить Carthage в проект Xcode

Какой самый быстрый способ добавить зависимости в проект Xcode с помощью Carthage.

Как добавить или отредактировать зависимости позже.


person AiOsN    schedule 09.10.2018    source источник


Ответы (2)


Установить Карфаген

Загрузить 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

  • Свяжите двоичный файл с библиотеками> кнопка с плюсом> Добавить другой> Перейдите в папку проекта> Карфаген> Сборка> iOS> Framework, чтобы добавить

введите описание изображения здесь

Выполнено

person AiOsN    schedule 09.10.2018
comment
Вопрос: не должно ли быть какой-то зависимости от фреймворка в Target Dependencies? Если вы измените Cartfile, а затем перекомпилируете его? Просто чтобы убедиться, что новый фреймворк подключен на ходу? - person David H; 16.03.2019
comment
самое простое руководство, которое я смог найти. Лучше, чем даже официальные документы. +1 - person Stefano Mtangoo; 19.03.2019

Карфагенский поток

[Диспетчер зависимостей iOS]

TL;DR:

Download dependency -> build fat binary -> it should  be imported -> slice for release

Длинная версия:

  1. Установка Карфагена

    //Homebrew
    brew install carthage
    
  2. Создайте Cartfile файл в каталоге проекта (_4 _) / рабочей области (.xcworkspace)

  3. Измените Cartfile. Добавьте необходимую зависимость == репо

    github "<owner>/<repo>" == <version>
    
  4. Запустите 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)
            }
        }
    }   
    
  5. Перетащите созданные фреймворки на General -> Frameworks and Libraries

    //framework location
    <cartfile_path>/Carthage/Build/
    
  6. Запускаем следующий скрипт. Этот шаг важен, потому что 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

[Carthage --no-use-binaries]

[Быстрая сборка Carthage]

[Местный Карфаген]

person yoAlex5    schedule 23.04.2020