自SDK 4.4以来无法在iOS上编译Aviary

时间:2014-12-16 12:47:44

标签: ios objective-c compiler-errors aviary

自从我更新到Aviary SDK 4.4后,我无法在iOS模拟器上运行我的应用程序。 我可以在iPhone和iPad上运行该应用程序。

clang: error: linker command failed with exit code 1 (use -v to see invocation)
ld: 30 duplicate symbols for architecture x86_64

框架和捆绑包在"链接二进制文件与库中可见"和" Bundle ressources"。

构建设置中的框架搜索路径正常。

看起来Aviary框架被管理了两次?

我离开/重新启动Xcode,在iOS模拟器中清理应用程序,清理目标并销毁DerivedData但没有成功。

很奇怪我在真实设备上没有问题。

1 个答案:

答案 0 :(得分:7)

我解决了这个问题。方法如下:

解决方案

请勿使用#import <AviarySDK/AviarySDK.h>,而是直接导入您正在使用的类。喜欢:#import <AviarySDK/AVYPhotoEditorController.h>等。

原因

我相信的原因在于新引入的AVYPhotoEditorCompatibility.h,默认情况下包含在<AviarySDK/AviarySDK.h>中。

我认为这是使用typedefconst

的问题代码
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;