dea*_*rne 8 xcode ios swift rx-swift swift-package-manager
我的项目中有两个框架,每个框架都依赖于同一个 Swift 包(在本例中为 RxSwift,但我认为这并不重要)。
为了构建项目,我必须在两个目标中包含相同的包(通过目标常规设置中的“框架和库”列表) - 否则当我尝试导入包时,它找不到它。
当我运行我的应用程序时,我在控制台中看到如下警告:
objc[79287]: Class _TtC9Alamofire18UploadTaskDelegate is implemented in both
/Users/deanWombourne/Desktop/PackageManagerTest/DerivedData/PackageManagerTest/
Build/Products/Debug-iphonesimulator/Framework1.framework/Framework1 (0x110877e00)
and
/Users/deanWombourne/Library/Developer/CoreSimulator/Devices/2319A320-1A01-4784-B85E-272FF0F999CB/
data/Containers/Bundle/Application/D40DE3EA-DD78-4241-B307-070CDAF8BFA1/PackageManagerTest.app/PackageManagerTest (0x10f9858c8).
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)
有时,应用程序会在重复的包中崩溃。
我已经通过构建一个没有重复包问题的版本来测试该应用程序(将所有代码复制/粘贴到同一个目标!)然后它运行良好,所以这与重复包问题有关。
那么,我的问题是什么?
在 Xcode 中有什么方法可以指定一个包将包含在两个目标中,而不是将它复制两次到可执行文件中?
理想情况下,我想将它指定为某种动态库,这样它就不会被嵌入到可执行文件中,而是按需加载 - 但此时欢迎任何解决方案!
编辑
如果我只有一个框架,但它与主应用程序目标共享 RxSwift 包依赖项,我也会遇到此问题。
小智 9
我是如何解决 XCode 11 for RxSwift 包中的问题的:
将 RxSwift 包作为依赖项添加到您的项目中(您可能已经这样做了)
创建一个新的框架目标(我称之为“RxSwiftDependency”)。您无需向其中添加任何文件或其他任何内容。保持原样。
在该附加目标的“常规”选项卡上,在“框架和库”部分中添加 swift-package 依赖项(请参见下面的屏幕截图)
将该附加目标 (RxSwiftDependency) 添加到需要依赖项的目标的“框架和库”中。如果您之前添加过“RxSwift”,请删除它。
在需要 RxSwift 实体的其他目标的 .swift 文件中添加“import RxSwift”
在最终目标中嵌入所有必要的框架
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |