Подтвердить что ты не робот

Как использовать фреймворки, импортированные с помощью кальяжа на быстрой игровой площадке

У меня быстрый проект с некоторыми фреймворками, добавленными через carthage. Можно ли использовать эти рамки в игровой площадке внутри проекта и как ее использовать, потому что

import Argo

не работает: (

4b9b3361

Ответ 1

Это перестало работать в какой-то момент. Вздох

Что я делаю сейчас

  • Создайте macOS> Инструмент командной строки.
  • Создайте Cartfile с помощью github "ReactiveX/RxSwift" и запустите carthage update --platform iOS
  • Перейдите к целевому инструменту командной строки и добавьте платформы из Carthage/Build/iOS в связанные структуры и библиотеки
  • Добавьте файлы детской площадки.

На данный момент я могу запускать файлы с игровой площадки.

🤷🏻♂️


Детская площадка имеет доступ к внешним фреймворкам, если она является частью рабочей области, в которой создается цель, настроенная для доступа к этим фреймворкам.

Если вы хотите добавить игровую площадку в существующий проект Carthage, вам нужно только сохранить проект как рабочее пространство (Файл> Сохранить как рабочее пространство...), построить цель, и все готово.

Если вы просто хотите распространять игровую площадку с помощью сторонних фреймворков, вам нужно создать пустое рабочее пространство. Вот пошаговый пример игровой площадки с платформой RxSwift:

  1. Создайте новый проект XCode типа Кросс-платформенный> Другой> Пустой. Назовите это RxPlayground.
    Это создаст эту структуру RxPlayground/RxPlayground.xcodeproj и откроет пустой Xcode.

  2. Скачать RxSwift с Карфагеном

    • Создайте файл Cartf с этой строкой: github "ReactiveX/RxSwift" "swift4.0"
    • Запустите Карфаген с carthage update --platform iOS Карфагена carthage update --platform iOS.
  3. Добавьте игровую площадку в проект.

    • Нажмите Файл> Создать> Детская площадка...
    • Выберите iOS> Пустой шаблон и назовите его Rx.playground
    • Щелкните правой кнопкой мыши узел проекта и выберите "Добавить файлы в RxPlayground".
    • Выберите Rx.playground и добавьте его.
  4. Создать рабочее пространство

    • Нажмите Файл> Сохранить как рабочее пространство...
    • Сохранить как Rx.xcworkspace
  5. Скопируйте фреймворки в каталог продуктов.

    • Закройте проект и откройте Rx.xcworkspace
    • Создайте кроссплатформенный> Другой> Агрегат. Назовите это RxAggregate
    • Создайте новую фазу сценария запуска со следующим содержимым:
    cp -rv "${SRCROOT}/Carthage/Build/iOS/" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"

На этом этапе Xcode и Finder выглядят так:

xcode

Обратите внимание, что Carthage/и Cartfile.resolved появляются, когда вы запускаете Carthage, без них ваша игровая площадка будет всего в нескольких Ks.

Finder

Наконец, построить проект (⌘B). Теперь вы можете использовать рамки на вашей детской площадке:

//: Playground - noun: a place where people can play
import RxSwift

_ = Observable<Void>.empty()
    .subscribe(onCompleted: {
        print("Completed")
    })

Иногда в первый раз, когда вы строите (⌘B), Xcode не замечает новую платформу (вздох). Я нажимаю на цель и возвращаюсь к исходному файлу или заново открываю проект. У меня нет объяснения, почему это происходит.

Ответ 2

Чтобы среда работала на игровой площадке, проект, создающий структуру, должен быть включен в рабочую область для вашего проекта. Поэтому для выполнения этой работы вам необходимо выполнить следующие действия:

  • Если ваш проект не находится внутри рабочей области, создайте рабочее пространство для своего проекта, выбрав File > Save As Workspace в Xcode.
  • Перетащите файл .xcodeproj из папки Carthage/Checkouts в рабочую область.
  • Запустите действие сборки в вашей целевой среде.

Ответ 3

Я решил это, скопировав встроенные фреймворки в каталог Built Products, где Playgrounds в рабочей области также ищет фреймворки. Примечание: вам также нужно запустить липо и удалить неиспользуемые архитектуры из двоичных файлов FAT.

Подробнее здесь: https://github.com/richardnees/CarthagePlaygrounds

Ответ 4

Основанный на @Jano отличный ответ (спасибо за это), я создал полностью функциональную игровую площадку, чтобы взаимодействовать с картой Карфагена:

https://github.com/backslash-f/carthage-playground

В качестве примера я включил схему диаграмм:

charts-example

Я тестировал Xcode 10.1.

"Работает на моей машине". 👍🏻

Ответ 5

Нашел, как это сделать, не перейдя в рабочее пространство и не добавив файл.xcodeproj из папки Carthage/Checkouts в ваш проект. Это работает, если у вас есть какая-то рамочная цель, которая содержит все источники, которые вы хотите использовать на игровой площадке. Эта структура должна быть в "Встроенных фреймворках" вашей основной цели.

  1. Добавьте Карфаген.framework к вашему проекту из Карфагена /Build/IOS
  2. Перетащите его из дерева проектов в "Встроенные рамки" для своей основной цели
  3. Добавьте Карфаген.framework к вашей целевой рамочной программе как необязательный (в целевом членстве)
  4. Добавить импорт "Ваша инфраструктурная цель" на игровую площадку

Это сработало для меня