【问题标题】:adding a pod to a universal framework library using cocoapods使用 cocoapods 将 pod 添加到通用框架库
【发布时间】:2017-06-29 10:53:36
【问题描述】:

我正在使用 CocoaPods 1.2,我有一个包含 2 个目标的项目,一个是主要的 iPhone 应用程序,另一个是可可触摸框架库。

将 pod 添加到我的 iphone 目标没有问题,我的主要问题是我无法将任何 pod 添加到其他共享库目标。

这是我的 pod 文件的示例:

platform :ios, '9.0'

target 'MyApp' do
  use_frameworks!
  pod 'EVReflection'
end

target 'MyLibrary' do
  use_frameworks!
  pod 'EVReflection'
end

将 pod 添加到主应用 MyApp 可以正常工作,但不能添加到其他目标,您知道为什么会发生这种情况吗?

我曾尝试使用 abstract_target,但没有成功。我什至试图去整合和重新整合,但也没有用。

只有在尝试将 pod 添加到通用框架库时才会出现问题,将 pod 添加到任何其他类型的目标都可以正常工作。

任何帮助将不胜感激。

【问题讨论】:

  • cocoapods 会报错吗?还是 Xcode 在抱怨?
  • cocoapods 或 xcode 没有错误,pod 安装成功并且 xcode 运行良好,但是当您尝试将 pod 导入库中时,它说找不到模块
  • 我很确定我过去做过这个并且没有遇到问题,但我会整理一个小样本,看看我发现了什么。

标签: ios swift cocoapods


【解决方案1】:

这是我的整个过程

  1. 创建一个新的 swift 应用项目。
  2. 创建一个新的 cocoa touch 框架目标。
  3. 在工程目录下,运行pod init
  4. Tyr 这个 Podfile

    # Uncomment the next line to define a global platform for your project
    platform :ios, '9.0'
    
    target 'SOQ' do
      use_frameworks!
    end
    
    target 'SOQFW' do
      use_frameworks!
    end
    
    pod 'EVReflection'
    

安装 pod 后,在我的两个目标 SOQ(swift 应用程序)和 SOQFW(可可触摸框架)中,*.swift 和用户类 EVObject 中的import EVReflection 都没有问题。

示例代码是

import EVReflection

class User: EVObject {
    var id: Int = 0
    var name: String = ""
    var friends: [User]? = []
}

你可以试试看。

我的开发环境是 os x 10.12 , xode 8.2.1 , cocoapods 1.1.1

【讨论】:

  • 我确实创建了一个新项目和 2 个目标,它确实工作正常,所以我想知道我在另一个项目中做错了什么,经过更多调查后,我发现因为我还选择了第三个目标在您的示例中该“用户”类的文件检查器“目标成员资格”窗口中,我还需要将 EVReflection 窗格添加到第三个目标,现在它工作正常,谢谢
  • 如果你的框架之一是在 Objective-C 中,它就不起作用,并且它说 [!] 用 Swift 编写的 Pod 只能作为框架集成;将use_frameworks! 添加到您的 Podfile 或目标以选择使用它。使用的 Swift Pod 是:SwiftyJSON-library
【解决方案2】:

我在这里创建了一个示例项目:https://github.com/dtweston/PodFrameworkTest

我的 Podfile 与您在问题中发布的完全相同。

我能够在主应用程序和框架库中导入和使用框架。

在框架内:

public class LibUser: EVObject {
    var id: Int = 0
    var name: String = ""
    var friends: [LibUser]? = []
}

在应用程序中(你可以看到这也引用了框架的LibUser 类):

class AppUser: EVObject {
    var id: Int = 0
    var name: String = ""
    var friends: [LibUser]? = []
}

我也在使用 macOS 10.12 和 Xcode 8.2.1。我正在使用 cocoapods 1.2.0,它也适用于 Cocoapods 1.2.0-rc1

我想知道您的设置和我的设置有何不同。如果您查看包含您的应用程序和框架的项目的信息,那么 Cocoapods 配置文件是否设置正确?

【讨论】:

  • 谢谢您,您的示例运行良好,我发现我的问题与我实际上有 3 个目标有关,而第二个目标是从文件检查器“目标成员资格”中选择第三个目标窗口,所以我不知道我需要将我的吊舱添加到两个目标,即使没有将 EVReflection 吊舱导入第三个目标,感谢您的努力,我希望我可以在你们之间分配赏金,但我不认为它可能,我会在上面标记答案,因为他之前确实发布过
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2012-10-05
  • 2015-01-10
相关资源
最近更新 更多