Как я могу добавить цель демонстрационного приложения в пакет Swift?

Я хочу включить демонстрационное приложение с пакетом настраиваемых элементов управления Swift, в котором будут показаны демонстрации реализации для каждого из элементов управления. Есть ли способ включить это в пакет Swift (а также таким образом разработать / протестировать элементы управления непосредственно внутри пакета)?


person joshd    schedule 18.01.2020    source источник


Ответы (2)


Что за приложение? SwiftPM напрямую поддерживает только исполняемые файлы macOS / Linux.

Если вам нужен iOS / tvOS / watchOS, вам понадобится проект Xcode, который связывает с использованием относительного пути для поиска вашего пакета. Это делается путем создания примера приложения и перетаскивания каталога, содержащего пакет, в проект Xcode. Затем вы можете связать библиотеку. Если вы поместите этот пример приложения в репозиторий с пакетом, оно будет распространяться вместе со всеми, кто клонирует пакет.

Одна важная вещь, которую я заметил (что почти наверняка является ошибкой в ​​Xcode), когда делал это сам, - это то, что Package.swift и Example.xcodeproj не могут находиться в одном каталоге. Вы должны вложить проект Xcode в другой каталог, иначе у него будут проблемы со сборкой / компоновкой много времени. Так что, если у вас возникнут какие-либо проблемы с тем, что я предложил, также попробуйте этот пластырь.

Я создал здесь пример на GitHub, который работает для Xcode 11.3.

person bscothern    schedule 20.01.2020
comment
Да, хотел иметь демоверсию macOS, но iOS могла работать. Может быть, это просто ошибка Xcode, потому что я тоже видел нечто подобное. Не могли бы вы предоставить свой файл Package.swift? - person joshd; 22.01.2020
comment
Пример Package.swift с исполняемым файлом или xcodeproj с использованием пакета, находящегося в том же репо, что и пакет? - person bscothern; 22.01.2020
comment
Оба? Был бы очень признателен, если бы вы увидели пример пакета, который вы уже создали, который также создает двоичный файл, который использует содержимое пакета. Как и выше, представьте себе пакет фреймворка, но я также хочу иметь возможность создавать и работать с демонстрационным исполняемым файлом, который использует фреймворк. - person joshd; 25.01.2020
comment
Также только что понял: учитывая ваш подход, который заключается в том, чтобы в основном включить отдельный проект в репо, а затем локально использовать пакет в проекте (да?), Не будет ли это проблемой для кого-то, чтобы легко включить пакет в свой собственный проект ( поскольку вместе с ним есть встроенный проект Xcode)? - person joshd; 25.01.2020
comment
Я соберу их вместе. Что касается вопроса о встроенном проекте Xcode. Мы использовали это с некоторыми новыми пакетами, которые создавали там, где я работаю, и это не вызвало никаких проблем, хотя у нас есть только исполняемый файл в этих проектах. Если бы у них также были цели фреймворка, это могло вызвать проблемы? Мне тоже придется это проверить. - person bscothern; 26.01.2020
comment
Приносим извинения за задержку публикации этого примера (переезд - это боль). Я обновил свой ответ внизу, чтобы получить ссылку на репозиторий GitHub с примером проекта. - person bscothern; 31.01.2020
comment
Превосходно! Я попробую завтра. - person joshd; 01.02.2020
comment
Супер полезно (и проще, чем я мог подумать). Самые крутые аспекты: 1. Не нужно обновлять файл Package.swift. 2. Наличие вложенного демонстрационного проекта внутри каталога пакета не влияет на использование пакета в других проектах. 3: Эта структура нестандартна, потому что работа в демонстрационном проекте позволяет легко разрабатывать код пакета, имея возможность протестировать его в демонстрационном приложении. - person joshd; 04.02.2020
comment
Может быть полезно для других, если вы разместите здесь свой файл Readme из своего проекта Git. - person joshd; 04.02.2020

Лучший подход - использовать рабочее пространство Xcode. Как это работает?

1. Создайте свои артефакты

Создайте каталог.

Создайте там рабочее пространство Xcode (Xcode: File: New: Workspace). Затем создайте свою библиотеку (пакет) и создайте свое приложение (любого типа) в том же каталоге.

На этом этапе просто поместите пакет и приложение в указанный выше каталог и немедленно закройте их.

Должно получиться вот так.

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

2. Свяжите свои артефакты

Откройте ваш файл .xcworkspace.

В левом нижнем углу нажмите + знак.

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

Выберите Добавить файлы в your_workspace_name, затем:

а) для демонстрационного приложения

Перейдите в каталог приложения, выберите Your_app.xcodeproj и нажмите "Добавить".

б) за упаковку

Перейдите в каталог пакета и выберите только каталог пакета. Перед нажатием кнопки «Добавить» убедитесь, что выбрано «Создать ссылки на папки для всех добавленных папок».

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

Теперь все ваше рабочее пространство должно выглядеть так. Вы можете сразу же импортировать библиотеку в свое приложение, и все готово.

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

person Sardorbek Ruzmatov    schedule 18.05.2021