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

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

import Argo

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


person Alexey Poimtsev    schedule 26.04.2015    source источник


Ответы (5)


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

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

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

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

????????‍♂️


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

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

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

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

  2. Загрузить RxSwift с Carthage

    • Create a Cartfile with this line: github "ReactiveX/RxSwift" "swift4.0"
    • Управляйте Карфагеном с carthage update --platform iOS.
  3. Добавить игровую площадку в проект.

    • Click File > New > Playground…
    • Выберите iOS > Пустой шаблон и назовите его Rx.playground.
    • Щелкните правой кнопкой мыши узел проекта и выберите «Добавить файлы в RxPlayground».
    • Выберите Rx.playground и добавьте его.
  4. Создать рабочую область

    • Click File > Save as Workspace…
    • Сохранить как Rx.xcworkspace
  5. Скопируйте фреймворки в каталог продуктов.

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

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

xcode

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

Поиск

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

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

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

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

person Jano    schedule 29.07.2017
comment
Прежде чем поставить -1 за сложность, обратите внимание, что это шаг за шагом с нуля, и это позволяет вам использовать двоичные фреймворки вместо добавления проекта Xcode, который строит фреймворк. - person Jano; 01.12.2017
comment
Очень полезно! Спасибо - person Dmytro Nasyrov; 30.03.2018

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

  1. Если ваш проект не находится внутри рабочей области, создайте рабочую область для своего проекта, выбрав File > Save As Workspace в Xcode.
  2. Перетащите файл .xcodeproj из папки Carthage/Checkouts в рабочую область.
  3. Запустите действие сборки на целевой платформе.
person Niels    schedule 17.05.2015
comment
хм? мне нужна поддержка некоторых фреймворков на игровой площадке, но не в проекте :) - person Alexey Poimtsev; 08.06.2015
comment
Это шаги, которые вам нужно предпринять, чтобы заставить его работать на игровой площадке. Будете ли вы использовать фреймворк в своем проекте, решать вам. - person Niels; 09.06.2015
comment
У меня такая же проблема. Я сделал это. Но не изменился. Где я должен создать файл игровой площадки? - person shunsuke_stackoverflow; 23.09.2015
comment
Файл игровой площадки должен находиться в проекте xcode, который также находится в рабочей области, содержащей проект xcode вашего фреймворка. - person Niels; 23.09.2015
comment
Спасибо! Я понимаю. Я мог бы решить сам, может быть. - person shunsuke_stackoverflow; 23.09.2015
comment
@Neils, но в этом случае у вас нет проекта, ВЕСЬ ваш код находится на игровой площадке, фреймворк установлен извне через carthage. - person mmmmmm; 28.11.2017

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

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

person Richard Kruse Nees    schedule 18.04.2017

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

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

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

Пример диаграммы

Я тестировал последнюю версию Xcode.

"Работает на моем компьютере" ????????

person backslash-f    schedule 22.06.2018

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

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

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

person sergiy batsevych    schedule 08.11.2018