У меня есть быстрый проект с некоторыми фреймворками, добавленными через carthage. Можно ли использовать эти фреймворки на игровой площадке внутри проекта и как их использовать, потому что
import Argo
не работает :(
У меня есть быстрый проект с некоторыми фреймворками, добавленными через carthage. Можно ли использовать эти фреймворки на игровой площадке внутри проекта и как их использовать, потому что
import Argo
не работает :(
Это перестало работать в какой-то момент. Вздох
Что я делаю сейчас
github "ReactiveX/RxSwift"
и запустите carthage update --platform iOS
На данный момент я могу запускать файлы игровой площадки.
????????♂️
Игровая площадка имеет доступ к внешним платформам, если она является частью рабочей области, которая создает цель, настроенную для доступа к этим платформам.
Если вы хотите добавить игровую площадку в существующий проект Carthage, вам нужно только сохранить проект как рабочую область (Файл > Сохранить как рабочую область…), построить цель, и все готово.
Если вы просто хотите распространять игровую площадку со сторонними фреймворками, вам нужно создать фиктивное рабочее пространство. Вот пошаговый пример игровой площадки с фреймворком RxSwift:
Создайте новый проект Xcode типа «Кроссплатформенный» > «Другое» > «Пустой». Назовите его RxPlayground.
Это создаст эту структуру RxPlayground/RxPlayground.xcodeproj и откроет пустой Xcode.
Загрузить RxSwift с Carthage
github "ReactiveX/RxSwift" "swift4.0"
carthage update --platform iOS
.Добавить игровую площадку в проект.
Создать рабочую область
Скопируйте фреймворки в каталог продуктов.
cp -rv "${SRCROOT}/Carthage/Build/iOS/" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
На данный момент Xcode и Finder выглядят так:
Обратите внимание, что Carthage/ и Cartfile.resolved появляются при запуске Carthage. Без них ваша игровая площадка будет занимать всего несколько тысяч.
Наконец, соберите проект (⌘B). Теперь вы можете использовать фреймворк на своей игровой площадке:
//: Playground - noun: a place where people can play
import RxSwift
_ = Observable<Void>.empty()
.subscribe(onCompleted: {
print("Completed")
})
Иногда при первой сборке (⌘B) Xcode не замечает новый фреймворк (вздох). Что я делаю, так это нажимаю на цель и возвращаюсь к исходному файлу или повторно открываю проект. У меня нет объяснения, почему это происходит.
Чтобы фреймворк работал на игровой площадке, проект, создающий фреймворк, должен быть включен в рабочую область вашего проекта. Итак, чтобы сделать эту работу, вам нужно выполнить следующие шаги:
File > Save As Workspace
в Xcode.Carthage/Checkouts
в рабочую область.Я решил эту проблему, скопировав построенные фреймворки в каталог Built Products, где Playgrounds в рабочей области также ищет фреймворки. Примечание: вам также необходимо запустить lipo и удалить неиспользуемые архитектуры из двоичных файлов FAT.
Подробнее здесь: https://github.com/richardnees/CarthagePlaygrounds
Основываясь на отличном ответе @Jano (спасибо за это), я создал полнофункциональную игровую площадку для взаимодействия с фреймворками Carthage:
https://github.com/backslash-f/carthage-playground
В качестве примера я включил структуру Charts:
Я тестировал последнюю версию Xcode.
"Работает на моем компьютере" ????????
Нашел как это сделать без конвертации в workspace и добавления файла .xcodeproj из папки Carthage/Checkouts в свой проект. Это работает, если у вас есть цель фреймворка, которая содержит все исходники, которые вы хотите использовать на игровой площадке. Этот фреймворк должен быть в «Встроенных фреймворках» вашей основной цели.
Это сработало для меня