【问题标题】:Linking third party frameworks to my own framework, distributed using Carthage将第三方框架链接到我自己的框架,使用 Carthage 分发
【发布时间】:2019-06-12 13:10:03
【问题描述】:

我们有几个不同的专有 API 作为提供类似功能的框架提供给我们。 API 当然是不完全相同的,所以我们想围绕这些构建一个包装外观框架,所以我们的应用程序不需要关心他们使用的是哪个 API。

首先,我创建了一个使用这些 API 之一的框架,并通过单元测试验证它是否按预期工作。我们在项目中添加了第三方框架二进制,框架搜索路径是这样的:

$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS
$(PROJECT_DIR)

所有非递归。 Cartage 路径在这里是因为我们使用 Quick 和 Nimble 进行单元测试。我将相关框架存储在项目根目录中。

我们希望使用 Carthage 来分发我们的框架,以后也可以作为 Cocoapod。

问题是当我尝试通过命令:carthage build --no-skip-current --platform iOS 构建我们的框架时,我收到错误:

*** Building scheme "Nimble-iOS" in Nimble.xcodeproj
*** Building scheme "Quick-iOS" in Quick.xcworkspace
*** Building scheme "XXX" in XXX.xcodeproj
Build Failed
    Task failed with exit code 65:
    /usr/bin/xcrun xcodebuild -project /Users/andre/Development/yyy/xxx/XXX.xcodeproj -scheme XXX -configuration Release -sdk iphonesimulator -destination platform=iOS\ Simulator,id=AE9E3D9D-BE2C-4AE1-AB37-C6BE8948067B -destination-timeout 3 ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES build (launched in /Users/andre/Development/yyy/XXX)

日志包含以下内容:

iphonesimulator/XXX.build/Objects-normal/i386/XXXLockService.o
/Users/andre/Development/yyy/XXX/XXX/LockServiceFactory.swift:7:71: error: 'PinServiceAccessImpl' is unavailable: cannot find Swift declaration for this class
                     case .xxx: return XXXLockService(lockService: PinServiceAccessImpl.getInstance())
                                                                   ^~~~~~~~~~~~~~~~~~~~

PinServiceAccess.PinServiceAccessImpl:2:12: note: 'PinServiceAccessImpl' has been explicitly marked unavailable here
open class PinServiceAccessImpl : NSObject {

从应用程序中使用框架时,文档声明我们应该将框架添加为嵌入式二进制文件,但当项目是框架时,此选项不可用。

让我困惑的是,单元测试似乎找到了 PinServiceAccessImpl.getInstance()!

我想有一些我不知道的关于链接的细节会导致构建失败。有人知道我们错过了什么吗?

【问题讨论】:

  • 您有 Carthage 复制框架构建阶段吗?您是否在“链接的框架和库”中链接了您的框架?
  • 嗨!是的,我有复制框架构建阶段,复制 Nimble 和 Quick 框架。这似乎可以正常工作。问题是 Carthage 没有使用的第三方库。这是项目中文件的一部分,我认为不需要复制。

标签: ios swift xcode carthage


【解决方案1】:

将部署目标更新到 11.0 后问题得到解决。

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2021-04-21
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多