Как настроить проект с общими фреймворками между iOS и watchOS 2, похожими на Lister App?

Приложение Lister - это единственный образец Apple Watch от Apple. проекты. Сначала он был написан для поддержки watchOS 1, а затем обновлен 16.09.15 для поддержки watchOS 2. Из-за этого существует множество целей, групп и т. Д., Которые не имеют однозначных названий, что затрудняет понимание того, что это что.

Я хочу создать аналогичный проект, в котором у меня есть iOS и watchOS 2 с общим кодом / фреймворками. Мне сложно понять, как создать такой проект из-за сложности приложения Lister.

Как мне настроить свой проект, чтобы я мог использовать код для совместного использования в моем приложении watchOS 2 и iOS? (Примечание: поддержка watchOS 1 не является обязательной.)


Для справки, вот список целей, схем и групп из приложения Lister:

  • Цели: Lister, Lister Tests, Lister Today, Lister WatchKit Extension, Lister WatchKit App, ListerKit, ListerKit Tests, Lister Watch Extension, Lister Watch App, ListerKit (watchOS), Lister (OS X), Lister Сегодня (OS X), ListerKit (OS X), ListerKit Tests (OS X)
  • Схемы: Lister, Lister Today, Lister WatchKit App, Glance - Lister WatchKit App, ListerKit, Lister Watch App, Glance - Lister Watch App, ListerKit (watchOS), Lister (OS X), Lister Today ( OS X), ListerKit (OS X)
  • Группы: приложение Lister iOS, приложение Lister WatchKit, общий код WatchKit Lister, приложение Lister Watch, приложение Lister OS X, код Shared ListerKit Framework, общие ресурсы Lister.

person Senseful    schedule 20.12.2015    source источник


Ответы (1)


Проект настолько сложен, что поддерживает как watchOS 1, так и watchOS 2.

Резюме

Если все, что вам нужно, это поддержка watchOS 2 и совместное использование кода между iOS и watchOS 2, вам нужно будет создать две платформы, по одной для каждой платформы.

watchOS 1:

  • Код используется совместно с watchOS 1 и watchOS 2 путем простого включения файлов .swift в обе цели (Lister WatchKit Extension и Lister Watch Extension). (См. Группу Код WatchKit общего списка.)
  • Код совместно используется watchOS 1 и iOS через Lister iOS Framework (ListerKit).

watchOS 2:

  • Код совместно используется watchOS 2 и watchOS 1 путем простого включения файлов .swift в обе цели (Lister WatchKit Extension и Lister Watch Extension). (См. Группу Код WatchKit общего списка.)
  • Код используется совместно с watchOS 2 и iOS за счет включения общих файлов (например, List.swift) как в Lister iOS Framework (ListerKit), так и в Lister watchOS 2 Framework (ListerKit (watchOS)). (См. Группу Общий код платформы ListerKit.)

    В разделе Совместное использование кода между приложением iOS и приложением watchOS страницы В руководстве по переходу для watchOS 2 они подтверждают такую ​​настройку для watchOS 2:

    В watchOS 2 вы можете обмениваться кодом, но не фреймворками, между вашим приложением iOS и приложением Watch. Поскольку приложения работают на разных платформах с разной архитектурой, исходные файлы необходимо компилировать отдельно для каждой платформы. Если вы по-прежнему хотите использовать платформу для управления любыми общими исходными файлами, вы должны создать отдельные целевые объекты инфраструктуры для каждой платформы и добавить свои общие исходные файлы в каждую платформу.

    [...]

    ПРИМЕЧАНИЕ

    После создания отдельной целевой платформы для расширения WatchKit необходимо управлять содержимым этой платформы отдельно как для iOS, так и для watchOS. Если вы добавляете файлы в версию фреймворка для iOS, не забудьте добавить их в версию watchOS.


Подробная информация о цели

Примечание: везде, где вы видите WatchKit, это обычно относится к watchOS 1, а Watch - к watchOS 2.

Список приложений для iOS (Lister):

  • Цель: Lister
  • Название продукта: Lister
  • Поддерживаемые платформы: iOS.
  • Группа: Список приложений для iOS / основных приложений.
  • Целевая зависимость: Lister iOS Framework (ListerKit)
  • Целевая зависимость: список виджетов iOS Today (Lister Today)
  • Целевая зависимость: список приложений watchOS 2 (Lister Watch App)
  • Целевая зависимость: список расширений watchOS 1 (Lister WatchKit Extension)
  • Ссылки с: Lister iOS Framework (ListerKit.framework)
  • Встраивает: Lister iOS Framework (ListerKit.framework)
  • Встраивает: список расширений watchOS 1 (Lister WatchKit Extension.appex)
  • Встраивание: регистрация приложения для iOS (Lister.appex)
  • Встраивание: список приложений watchOS 2 (Lister Watch App.app)

Список виджетов iOS Today (Lister Today или Lister):

  • Цель: зарегистрироваться сегодня
  • Название продукта: Lister
  • Поддерживаемые платформы: iOS.
  • Группа: список приложений для iOS / виджет "Сегодня"
  • Целевая зависимость: Lister iOS Framework (ListerKit)
  • Ссылки с: Lister iOS Framework (ListerKit.framework)
  • Используется: приложение Lister iOS (Lister)

Список платформ iOS (ListerKit):

  • Цель: ListerKit
  • Название продукта: ListerKit
  • Поддерживаемые платформы: iOS.
  • Группа: Lister iOS App / ListerKit Framework (iOS)
  • Группа: общий код платформы ListerKit
  • Используется: Lister iOS App (Lister)
  • Используется: Lister iOS Today Widget (Lister Today)
  • Используется: Lister watchOS 1 Extension (Lister WatchKit Extension)

Список расширений watchOS 1 (Lister WatchKit Extension):

  • Цель: расширение Lister WatchKit
  • Название продукта: расширение Lister WatchKit
  • Поддерживаемые платформы: iOS.
  • Группа: Lister WatchKit App / Lister WatchKit Extension
  • Группа: общий код WatchKit Lister
  • Целевая зависимость: Lister iOS Framework (ListerKit)
  • Целевая зависимость: список приложений watchOS 1 (Lister WatchKit App)
  • Используется: приложение Lister iOS (Lister)

Список приложений watchOS 1 (Lister WatchKit App):

  • Цель: Lister WatchKit App
  • Название продукта: приложение Lister WatchKit
  • Поддерживаемые платформы: iOS.
  • Группа: Lister WatchKit App / Lister WatchKit App
  • Используется: Lister watchOS 1 Extension (Lister WatchKit Extension)

Список расширений watchOS 2 (Lister Watch Extension):

  • Цель: расширение Lister Watch
  • Название продукта: расширение Lister Watch
  • Поддерживаемые платформы: watchOS
  • Группа: Lister Watch App / Lister Watch Extension
  • Группа: общий код WatchKit Lister
  • Группа: Lister Watch App / ListerKit Framework (watchOS)
  • Целевая зависимость: Lister watchOS 2 Framework (ListerKit (watchOS))
  • Ссылки с: список watchOS 2 Framework (ListerWatchKit.framework)
  • Встраивает: Lister watchOS 2 Framework (ListerWatchKit.framework)

Список приложений watchOS 2 (Lister Watch App):

  • Цель: приложение Lister Watch
  • Название продукта: приложение Lister Watch
  • Поддерживаемые платформы: watchOS
  • Группа: приложение Lister Watch / приложение Lister Watch
  • Используется: приложение Lister iOS (Lister)

Список watchOS 2 Framework (ListerKit (watchOS) или ListerWatchKit):

  • Цель: ListerKit (watchOS)
  • Название продукта: ListerWatchKit
  • Поддерживаемые платформы: watchOS
  • Группа: Lister iOS App / ListerKit Framework (iOS) / iCloud и локальное хранилище / ListUtilities.swift
  • Группа: общий код платформы ListerKit`
  • Используется: Lister watchOS 2 Extension (Lister Watch Extension)

На заметку:

  • Группа Shared Lister WatchKit Code содержит код, который используется как расширениями watchOS 1, так и watchOS 2 .
  • Название группы Lister Watch App/ListerKit Framework (watchOS) подразумевает, что она должна быть частью цели ListerKit (watchOS), но вместо этого она является частью цели Lister Watch Extension.
  • * Shared ListerKit Framework Code в первую очередь предназначен для обмена кодом между фреймворками iOS, watchOS и OS X ListerKit. Однако есть несколько файлов, не включенных в ListerKit (watchOS) цель: SegueHandlerType.swift, CheckBoxLayer.swift
  • Хотя термин WatchKit в основном используется для обозначения watchOS 1 в этом проекте, продукт Lister watchOS 2 Framework называется ListerWatchKit, но он используется только в watchOS 2. Примечание: watchOS 1 не использует платформу.
  • Я исключил из списка группы / цели / и т. Д. OS X.
person Senseful    schedule 20.12.2015