【发布时间】:2017-12-30 13:36:00
【问题描述】:
好的,所以也许我做错了什么,所以请随时纠正我。让我解释一下我想要实现的目标。
我从事一个有多个目标的项目。每个目标用于创建一个单独的应用程序。这些目标共享许多核心功能,但一些目标添加了一些额外的代码或仅使用“核心”的最小集合(例如一些 Web 服务)。
目前,所有内容都打包到一个 Xcode 项目中,我使用“Target Membership”功能(在文件检查器中)来标记哪个类属于哪个目标。核心类是所有目标的成员,特殊类只是一个目标的成员。
这很容易让人困惑,并带来另一个问题。我想使用 CI/CD 服务器自动构建和发布更新到 Test Flight。由于目前所有文件都在一个存储库中,因此我无法自动检测需要更新的应用程序。
我现在的计划是将我的存储库和我的项目分成多个部分。我想为每个应用程序使用一个“核心”项目以及一个项目。每个项目都将驻留在它自己的 GIT 存储库中。
然后我创建一个“主”存储库并使用 GIT 子树添加其他存储库。然后,我可以为每个存储库分别设置触发器以构建相应的应用程序(或者如果我更改核心中的某些内容,则一次构建所有应用程序)。
到目前为止,结构看起来不错,但我在正确设置 cocoapods 时遇到了问题。我的问题是我在我的核心中使用 cocoapod 依赖项,它现在是一个框架。我的 Podfile 目前看起来像这样:
source 'https://github.com/CocoaPods/Specs.git'
workspace 'Master.xcworkspace'
platform :ios, '10.0'
use_frameworks!
project 'core/Core'
project 'app/MyApp'
def common_pods
pod 'Firebase/Core'
pod 'Alamofire'
end
target 'Core' do
project 'core/Core'
common_pods
target 'CoreTests' do
inherit! :search_paths
end
end
target 'MyApp' do
project 'app/MyApp'
end
我的文件系统如下所示:
- 主(文件夹)
- Master.xcworkspace
- 播客文件
- 核心(文件夹)
- Core.xcproject
- Core(包含文件的文件夹)
- 应用程序(文件夹)
- MyApp.xcproject
- MyApp(包含文件的文件夹)
如果我现在在其中一个 MyApp 类中导入 Core 框架,我会收到一条构建错误消息“缺少必需的模块 'Firebase'”,如果我将“common_pods”添加到 MyApp 目标,我可以构建但在运行时获取一堆“在Core.framework和/.../MyApp.app/MyApp中都实现了Class xxx。将使用两者中的一个。哪个未定义。”错误和我的应用程序崩溃。
我曾经读到应该制作自定义框架 pod 并使用 cocoapods 添加它们,而不是直接通过项目目标嵌入二进制功能添加它们,但这并不意味着每次我对核心进行更改时,我d 需要构建框架,然后在最终构建和运行我的应用程序之前进行 pod 更新?那不可能是解决办法。
我错过了什么?我究竟做错了什么?我希望你能帮我弄清楚。
【问题讨论】:
-
您是否设法解决了嵌入式框架(带有 pod)的问题?我面临同样的情况,不想通过 pod 添加自定义框架,因为在更改框架代码时会变得很棘手。
标签: ios xcode git frameworks cocoapods