Держите код расширения WatchKit (git репо) отдельно от существующего кода iPhone (репо) - PullRequest
2 голосов
/ 08 февраля 2020

Я хотел добавить расширение WatchKit (с SwiftUI, поддерживаемым на iOS13 +) в мое существующее приложение (целевой iOS12), сохраняя при этом обе кодовые базы разделенными (два репозитория).

  • Как можно отделить WatchKit Код расширения от Mobile One?
  • Будет ли мое приложение Watch с SwiftUI работать только для пользователей с WatchOS 6 и iOS13, не затрагивая существующих пользователей с iOS12?
  • Как насчет увеличения размера двоичного файла приложения?

Спасибо за чтение!

1 Ответ

2 голосов
/ 16 февраля 2020

Я не уверен, что существует более простое решение, но оно должно работать:

Разделение обоих приложений:

Если вы откроете в Xcode навигатор Source Control, вы увидите, что Ветви, теги и удаленные элементы относятся к основной записи в навигаторе проекта, то есть к проекту Xcode. Поэтому, чтобы иметь отдельные репозитории, вам нужны отдельные проекты Xcode, которым вы можете назначить отдельные репозитории.
Однако вы можете иметь несколько проектов в одной рабочей области, чтобы все файлы были доступны в этой рабочей области.
Чтобы иметь один автономное приложение и одно приложение с расширением для часов, просто настройте рабочее пространство с помощью автономного приложения и добавьте еще один новый проект. Для этого нового проекта нужны все файлы исходного приложения, а также расширение для часов.
Поскольку вам нужны файлы из одного проекта, а также из другого, вы можете перетащить их из одного проекта в новый, но затем они будут скопированы (a зеленый + значок отображается при перетаскивании). Обычно это не то, что вам нужно, поскольку вы обычно не хотите хранить две копии отдельно. Вместо этого вы можете показать такой файл в Finder, а затем перетащить его из Finder в новый проект. В этом случае у вас есть возможность только скопировать ссылку.

Независимость обоих приложений:

Поскольку у вас есть два отдельных проекта, вы можете установить цель развертывания в настройках сборки цели в соответствии с требованиями.

Размер:

Каждый проект получит отдельные продукты, отдельное приложение только xxx.app и новый проект xxx.app, Watch.app и Watch Extension.appex. Так что не должно быть никаких накладных расходов.

РЕДАКТИРОВАТЬ (из-за комментария Уада ie в его вопросе):

Я не уверен, что понимаю вашу проблему:
С процедурой выше, вы получаете одно рабочее пространство с двумя отдельными проектами, которые совместно используют часть файлов.
«Мобильный проект» такой же, как вы используете сейчас. У него есть только одна цель (несмотря на цели тестирования), созданная исключительно из необходимых источников. Таким образом, он имеет тот же размер, что и сейчас.
«Часовой проект» является новым. У него есть 3 цели: «мобильная» цель, цель Watch и цель Extension Extension (несмотря на цели тестирования). Он построен с общими источниками и дополнительными источниками расширения часов. Таким образом, его размер больше, но увеличение, конечно, зависит от ваших источников.
Поскольку у вас есть 2 репозитория, проекты разделены, но оба репозитория совместно используют некоторые файлы. Если вы хотите полностью отделить их, вы можете скопировать файлы из вашего текущего проекта в ваш новый проект (вместо того, чтобы копировать только ссылки), но тогда вам нужно было сохранить 2 копии.
Надеюсь, это поможет!

...