Невозможно скомпилировать Aviary на iOS с SDK 4.4
Я не могу запустить свое приложение только на iOS Simulator, так как я обновил Aviary SDK 4.4. Я могу запустить приложение на своем iPhone и iPad.
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ld: 30 duplicate symbols for architecture x86_64
Каркас и пакет видны в "Связать двоичные файлы с библиотеками" и "Ресурсы пакета".
Путь поиска фреймворка в порядке в настройках сборки.
Похоже, фреймворк Aviary был управляем дважды?
Я оставляю / перезагружаю Xcode, очищаю приложение в симуляторе iOS, очищаю цель и уничтожаю DerivedData без успеха.
Очень странно, у меня нет проблем в реальных устройствах.
1 ответ
Я решил эту проблему. Вот как:
Решение
Не использовать #import <AviarySDK/AviarySDK.h>
вместо этого импортируйте классы, которые вы используете напрямую. Подобно: #import <AviarySDK/AVYPhotoEditorController.h>
и т.п.
причина
Причина, по которой я верю, заключается во вновь введенном AVYPhotoEditorCompatibility.h
, который по умолчанию включен в <AviarySDK/AviarySDK.h>
,
Я думаю, что здесь проблемный код, который использует typedef
с const
typedef AVYPhotoEditorPremiumAddOn AFPhotoEditorPremiumAddOn AVY_PREMIUM_ADDON_NAMESPACE_DEPRECATED_ATTRIBUTE;
AVY_PREMIUM_ADDON_NAMESPACE_DEPRECATED_ATTRIBUTE AFPhotoEditorPremiumAddOn const AFPhotoEditorPremiumAddOnNone = AVYPhotoEditorPremiumAddOnNone;
AVY_PREMIUM_ADDON_NAMESPACE_DEPRECATED_ATTRIBUTE AFPhotoEditorPremiumAddOn const AFPhotoEditorPremiumAddOnHiRes = AVYPhotoEditorPremiumAddOnHiRes;
AVY_PREMIUM_ADDON_NAMESPACE_DEPRECATED_ATTRIBUTE AFPhotoEditorPremiumAddOn const AFPhotoEditorPremiumAddOnWhiteLabel = AVYPhotoEditorPremiumAddOnWhiteLabel;