所以我正在研究Swift中的iOS项目,我想创建一个包含一些有用内容的静态库.
我的问题是当我尝试在Xcode(版本6.3)中构建我的lib时,我有一个"Build Failed",然后是: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker
我从来没有见过这个,这不是我的第一个静态库.所以我在想我可能与我只使用Swift类这一事实有关.
你们有什么感想 ?先感谢您.
我已经构建了一个Swift框架,现在我正在尝试构建一个将使用该框架的Swift iOS应用程序.我收到这个错误:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我搜索了SO并找到了类似的报告并尝试了其中列出的修复程序,包括:
Always Embed Swift Standard Libraries = YES在我的框架和我的应用程序的构建设置中设置Enable Bitcode=NO在我的框架和我的应用程序的构建设置中设置Runpath Search Paths被设置为@executable_path/Frameworks,无论是在我的框架和我的应用程序的构建设置在每种情况下,当我尝试运行我的应用程序时,我都会遇到相同的错误.
如何创建静态库,并且可以在ios中的任何项目上添加.a文件.
我试过这样做但是做不到.
提前致谢
我想在swift中使用我的webrtc .a静态库.你能帮帮忙吗?我读过你不能在swift中使用静态库,这是真的吗?
Xcode有时会自动找到依赖项.当我是那个定义关系的人,当我变得懒惰时,我认为是可以的......
但更多的时候我发现自己面临着一个存在(中等到大尺寸)项目的目标.由于该项目是由其他人制作的,我发现很难理解哪些目标取决于什么,因为并非所有关系都是明确的.
Xcode用于查找此类关系的规则是什么?(我希望我能理解逻辑,所以在我的脑海中运行它并且可能在将来节省一些时间)或者是什么使目标有资格隐含地依赖于另一个?
目标及其创建的产品可能与另一个目标相关.如果目标需要另一个目标的输出以便构建,则说第一个目标依赖于第二个目标.如果两个目标都位于同一工作空间中,Xcode可以发现依赖关系,在这种情况下,它会按所需顺序构建产品.这种关系被称为隐式依赖.
Xcode11 Beta的“框架,库和嵌入式内容”部分中有3个新选项可用于添加库。Xcode库部分屏幕截图
谁能解释他们的工作?
我们创建了一个IOS框架,分发给各个人。但是现在我们遇到了一个有趣的问题。我们在框架中使用protobuf,我们的一位客户开始使用Expo Kit,该工具包最近也包含了protobuf,现在我们的客户因我们的框架而崩溃:
Class Foo is implemented in both ... One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)
我们不能使用Cocoapods Protobuf-ios,因为它已经过时了。
我能想到的唯一选择是在不包含此客户端的protobuf文件的情况下构建框架。因此,我们的框架将使用其Expo Kit profobuf文件。我该如何在Xcode中执行此操作,或者是否有替代解决方案。
编辑:
我想要实现的目标,但似乎并没有做到正确。我想发布没有Protobuf.a文件的Framework。Protobuf.a必须依赖于客户端应用程序。
我在使用Xcode时很好奇。
复制项目所需的开源类文件时,我总是需要选择一个选项。
选项为“创建组”和“创建文件夹引用”。
我已经阅读了两者之间的区别。
但这是完全不了解的。
当我选择两个选项之一时,我从项目中删除了该文件,并同时删除了开源类文件。
我不想要这个。
我希望始终作为独立文件存在。我应该选择什么?
我的目标是创建一个包含Swift和Objective-C的iOS框架,我可以在我的开发项目中使用它.该框架的本质是框架本身正在发展.因此,每次使用此框架构建项目时都很重要(我将使用"使用"项目的框架称为项目缺乏更好的术语),我想确保框架本身重新构建.我希望这是一个框架,因为我有一些使用应用程序,我希望使用相同的框架代码.我已经为今天的大部分时间而苦苦挣扎,并浪费了大量时间在本来应该做的事情上,至少在我的想法中,更容易.所以,我会分享我的过程.
我正在构建一个闭源动态框架。它依赖于第三方闭源静态框架。
我将静态依赖框架链接到我的框架的项目/目标,如本 Apple 技术说明中所述:
同一篇苹果技术说明中提到:
应用程序目标负责嵌入所有框架,包括其他框架依赖的任何框架。
所以我也给我的客户提供了我所依赖的框架的副本。然而,在同一份技术说明中,Apple(指嵌入静态库/框架)指出:
由于这些情况下的二进制文件是静态库,因此应用程序无法将其嵌入到应用程序包中。
...该库应保留在“将二进制文件与库链接”部分中。
没关系 - 所以我只是让我的客户链接静态框架依赖项而不是嵌入它,一切都工作正常。
-ObjC然而,当我的客户需要他们使用的其他库的链接器标志时,就会出现问题。此链接器标志导致我的(objective-c)静态框架依赖项加载其所有类两次,并且客户端在其控制台中随处可见重复的类日志。
这里一种可能的解决方案是让客户端识别他们使用的需要-ObjC链接器标志的库,并force_load为这些库指定标志。但在客户端使用 CocoaPods 的情况下,此解决方案也会导致问题,因为 CocoaPods 会-ObjC再次覆盖每个链接器标志的任何更改pod install。对于这个问题还有其他解决方案/想法吗?
PS我知道之前的苹果技术说明也提到:
静态框架不是共享静态库的受支持方式。
但不幸的是,我目前受到业务限制的束缚,我必须包含这个静态框架依赖项。
我想向我的Swift项目添加一个库。我找到3个不同的地方要添加。
我想知道正确的做法以及每个人的目的。
选择目标->一般
选择目标->构建阶段
选择目标->单击+按钮->选择“新复制文件阶段”
我在我的 ios 项目中遇到了这个问题。在 xcode 中找不到架构 x86_64 的符号clang: error: linker command failed with exit code 1 (use -v to see invocation)
提前致谢!!