使用嵌套框架的 iOS 问题

标签 ios xcode swift frameworks dependency-management

我有一个具有以下项目规范设置的项目:

Main App 
    --> UIFramework (own framework)
        --> CoreFramework (own framework)
            --> Mixpanel Third Party framework installed using carthage

每个框架都设置为其上一个框架的项目依赖项,换句话说: - CoreFramework 包含 Mixpanel 框架 - UIFramework 依赖于 CoreFramework - 主应用依赖于 UIFramework

这个结构是在一个公共(public)工作区上设置的。

我可以毫无问题地单独构建和测试每个框架。 我的问题归结为从主应用程序访问 CoreFramework。

如果我获取 Root View Controller 并编写以下代码:

import UIKit
import UIFramework

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let object = UIFrameworkClass()
        object.testFunction()
    }

}

应用程序在设备上运行和构建没有任何问题。 但是,如果我写这段代码:

import UIKit
import UIFramework
import CoreFramework

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let object = UIFrameworkClass()
        object.testFunction()

        coreFrameworkGlobalTestFunction()
    }

}

构建时出现以下错误:

Framework not found Mixpanel for architecture arm64

我已经尝试将 Mixpanel 框架直接嵌入和链接到我的应用程序,但无济于事。

关于造成这种情况的原因有什么想法吗?如何从我的主应用程序访问 CoreFramework 上的类和函数而不出错?

非常感谢。

最佳答案

以防其他人将来遇到同样的问题: 我能够通过将 Mixpanel 库的路径添加到主应用程序 Build SettingsFrameworks Search Path 属性来解决问题,问题就消失了。

一定会喜欢一些很棒的 Xcode 魔法。

关于使用嵌套框架的 iOS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963573/

相关文章:

swift - 为什么协议(protocol)中的 get-only 属性要求不能被符合的属性满足?

iphone - 具有 6.1 部署目标的 iOS 应用程序

ios - 在 iphone 应用程序中调用 exit(0)

ios - Xcode 6.2 : no iOS simulators available?

ios - TableView未加载iPhone模拟器中的所有记录

ios - 将 iOS 10.3.3 与 Xcode 版本 8.2.1 一起使用?

c - 在 XCode 中链接 libuv 库

ios - 应用程序安装失败 : App has disallowed Info. plist key

swift - 如何解析在没有 arrayName 的 json 对象中包含数组的 JSON

ios - Swift 4 中的视频动画