自从我更新到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 软件在“使用库链接二进制文件”和“ bundle 资源”中可见。

在构 build 置中,框架搜索路径是确定的。

看来Aviary框架曾被管理过两次?

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

非常奇怪,我在实际设备中没有问题。

最佳答案

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



不要使用#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;

08-18 11:56