Подтвердить что ты не робот

Связывание двух (iphoneos и watchos) фреймворков с одинаковым названием продукта

Недавно мне пришлось дублировать свои собственные фреймворки, чтобы иметь возможность связывать их с родным расширением watchOS 2, потому что платформа отличается. Итак, для каждой рамки X у меня есть экземпляр X-watchos. Все работает отлично в симуляторе и при создании непосредственно на моих устройствах, и только после того, как я попытался архивировать, у меня получилась эта ошибка связывания:

Ошибка связи

Я запустил lipo -i на встроенной структуре watchOS и, конечно же, ее арки arm7 и arm64 вместо armv7k.

Когда я смотрел дальше в встроенный каталог, я заметил это:

Производная структура данных

Обе версии являются символическими ссылками на один и тот же файл, и поскольку они имеют одинаковое имя продукта, они переопределяются. Я мог бы сделать их разными именами, но это сделало бы import их очень громоздкими.

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

EDIT 08/22/2015: Я подал радар с образцом проекта: http://www.openradar.me/22392501

EDIT 08/24/2015: Это было подтверждено в примечаниях к выпуску Xcode 7 Beta 6 как известная проблема:

известная проблема

EDIT 09/9/2015: Xcode 7.1 Примечания к выпуску бета-версии подсказывают, что это исправлено, но я еще не подтвердил его.

4b9b3361

Ответ 1

Это работает для меня в Xcode 7.1.

Ответ 2

Я использую аналогичную конфигурацию с моими собственными фреймворками, но при создании ее на каждой платформе я устанавливаю другое имя (MyFramework и MyFramework-watchOS). Не забудьте указать общее имя продукта вручную (мое - MyFramework на обоих) на вкладке настроек сборки каждой структуры.