Xcode/Cocoapods:我无法访问链接到我的项目的框架中的依赖项

3
我希望能在一个工作区中嵌入多个项目和框架。
以下是Xcode中的结构:

enter image description here

Project1Project2 是应用程序项目,而 BaseFramework 是 Cocoa Touch 框架。

现在我想要做的是将一个 pod 依赖项添加到框架中,然后将该框架链接到其中一个项目,并在该项目中访问该依赖项。这是我在 Podfile 中尝试的内容:

platform :ios, '12.1'
use_frameworks!
inhibit_all_warnings!

workspace 'BaseWorkspace'

def shared_pods
  pod 'Toast-Swift'
end

project 'Project1/Project1.xcodeproj'
project 'Project2/Project2.xcodeproj'
project 'BaseFramework/BaseFramework.xcodeproj'

target 'BaseFramework' do
   project 'BaseFramework/BaseFramework.xcodeproj'
   shared_pods
end 

然后,我将框架链接到 Project2

enter image description here

一切都编译得很好,我可以在 Project2 中导入 BaseFramework... 但是我无法使用 Toast-Swift 的方法。我做错了什么?
感谢您的帮助。

我不确定为什么您想通过框架作为中间层来访问依赖项而不是直接访问。我认为您应该直接从Project1/Project2访问Toast-Swift,而不是尝试通过BaseFramework => Toast-Swift来访问它。您能否进一步阐述一下? - Tarun Tyagi
好的,我这样考虑:假设我想创建一个基础框架,它可以重用依赖项中的代码,然后多个项目应该包括该框架,而不一定使用框架依赖项中的元素。这是一种不好的方法吗? - Rob
2个回答

3

通过在框架目标范围内声明项目目标,项目目标将获得框架的所有依赖项。

platform :ios, '12.1'
use_frameworks!
inhibit_all_warnings!

workspace 'BaseWorkspace'

def shared_pods
  pod 'Toast-Swift'
end

target 'BaseFramework' do
   project 'BaseFramework/BaseFramework.xcodeproj'
   shared_pods

   target 'Project1' do
      project 'Project1/Project1.xcodeproj'
   end

   target 'Project1' do
      project 'Project2/Project2.xcodeproj'
   end
end 

0

最好创建一个pod,并将'Toast-Swift'添加为其依赖项,以避免使用总称框架。请参考这里


这是我最初的想法,但由于我计划仅在我的团队中使用此框架,所以我认为使用本地框架可能是一个更好的主意。如果我按照你的想法去做,我想我将不得不使用私有pod,对吗? - Rob
是的,您可以将您的框架作为私有 pod 分发。 - Tibin Thomas
好的,谢谢。我会等待看看是否有其他答案,如果没有,我会接受你的答案。但我有点惊讶和失望,因为似乎没有简单的解决方案来实现我想要的... - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接