AWS SDK Linker Flags 与导入的项目冲突

AWS SDK Linker Flags conflicting with imported project

我已经使用 AWS SDK 框架成功开发了一个应用程序,现在我正在尝试导入一个静态库作为自制框架,与我的其他几个项目共享代码。

问题是:为了导入我的静态库,我 need to add -ObjC 链接器标志以导入库,但每当我添加该链接器标志时,AWS 吓坏了 并给了我 40 多个红色编译错误。

我对链接器标志和库导入完全陌生,所以老实说我真的不知道从哪里开始。我做了一些研究,但我能找到的最好的线索是我可以使用 -force_load 而不是 -ObjC 的建议,但这似乎需要在 Build 中手动添加每个“.m”文件阶段部分,我的图书馆包括数百个这样的文件。

对于这个问题,是否有比添加每个文件以便我可以使用 -force_load 更简单的解决方案?如何获得 AWK SDK 和导入我的库的需求才能很好地一起玩?

编辑: 根据评论中的建议,这是我在添加 -ObjC 链接器标志时遇到的错误。如果没有该标志(也没有添加静态库),应用程序可以使用 AWSiOSSDKv2 框架成功编译。但是添加该链接器标志(据我所知,静态库需要它,但甚至在添加该库之前)会立即导致:

[删除代码以适应字符限制]

编辑 2: 根据 Yosuke Matsuda 的回答,我添加了 libsqlite3.dylib,这是我遗漏的。现在之前的错误已经消失,但我有几十(数百?)行 "duplicate symbol" 行,以一个红色 "Linker command failed with exit code 1" 错误结尾。 (我会把它们全部包括在内,但可笑的是,他们把我的 post 设置为 73,111 个字符,远远超过了 30,000 个字符的限制。)

有趣的是,它们似乎是由框架本身的要求引起的冲突(例如AWS框架中的AWSCore需要Bolts框架,但它们似乎与一堆重复的符号?)。

而且,和以前一样,只需从链接器标志中删除 -ObjC 即可让应用程序正常并成功编译。

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods_Reachability in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Reachability-dummy.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Pods-Reachability-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_Reachability in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Reachability-dummy.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Pods-Reachability-dummy.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityRef in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachableOnWWAN in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _kReachabilityChangedNotification in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilitySerialQueue in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachableBlock in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.unreachableBlock in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityObject in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_CLASS_$_Reachability in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_METACLASS_$_Reachability in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods_XMLDictionary in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-XMLDictionary-dummy.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(Pods-XMLDictionary-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_XMLDictionary in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-XMLDictionary-dummy.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(Pods-XMLDictionary-dummy.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._collapseTextNodes in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._stripEmptyNodes in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._trimWhiteSpace in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._alwaysUseArrays in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._preserveComments in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._wrapRootNode in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._attributesMode in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._nodeNameMode in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._root in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._stack in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._text in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_CLASS_$_XMLDictionaryParser in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_METACLASS_$_XMLDictionaryParser in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._databasePath in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._openResultSets in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._db in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._logsErrors in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._crashOnErrors in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._maxBusyRetryTimeInterval in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._startBusyRetryTime in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._cachedStatements in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._dateFormat in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._isExecutingStatement in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._traceExecution in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._shouldCacheStatements in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _FMDBExecuteBulkSQLCallback in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._inTransaction in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _FMDBBlockSQLiteCallBackFunction in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._openFunctions in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._checkedOut in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._statement in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._inUse in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._useCount in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._query in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_CLASS_$_FMDatabase in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_METACLASS_$_FMDatabase in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_CLASS_$_FMStatement in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_METACLASS_$_FMStatement in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._path in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._lockQueue in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._databaseInPool in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._databaseOutPool in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._openFlags in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._delegate in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._maximumNumberOfDatabasesToCreate in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_CLASS_$_FMDatabasePool in:
    /Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
    /Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
[And on and on and on, ending with...]
ld: 260 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

iOS 的 AWS 移动开发工具包依赖于 libsqlite3.dyliblibz.dylibSystemConfiguration.framework,但您没有提供它们。这就是错误消息的原因。 AWS Mobile SDK for iOS Developer Guide 的这一部分列出了必要的依赖项。