好吧,或許我正在做一些絕對錯誤的事情,請隨時糾正我。讓我解釋我想達到的目標。在iOS Framework和App Projects中在同一工作區中使用Cocoapods
我在一個有多個目標的項目上工作。每個目標都用於創建一個單獨的應用程序。目標共享許多核心功能,但是一些目標添加一些額外的代碼或僅使用「核心」的最小集合(例如一些網絡服務)。
當前所有內容都打包到一個Xcode項目中,並使用「目標成員」功能(在File Inspector中)標記哪個類屬於哪個目標。核心類是所有目標的成員,特殊類只是一個目標的成員。
這很容易混淆,並帶來另一個問題。我想使用CI/CD服務器自動構建併發布更新到測試飛行。由於目前所有文件都在一個存儲庫中,因此無法自動檢測哪個應用程序需要更新。
我現在的計劃是將我的存儲庫和我的項目分成多個部分。我想過爲每個應用程序使用一個「Core」項目以及一個項目。每個項目都將駐留在它自己的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
- Podfile
- 核心(文件夾)
- Core.xcproject
- 核心(包含文件夾中的文件)
- 應用程式(文件夾)
- MyApp.xcproject
- MyApp的(包含文件夾中的文件)
如果我現在將Core框架導入到t他MyApp類,我得到一個構建錯誤,說「缺少必需的模塊'Firebase'」,如果我添加「common_pods」到MyApp目標,我可以建立,但在運行時得到一堆「類xxx在Core.framework和/.../MyApp.app/MyApp。將使用兩者之一。哪一個是未定義的。「錯誤和我的應用程序崩潰。
我曾經讀過應該製作自定義框架pod並使用cocoapods來添加它們,而不是直接通過項目目標嵌入二進制文件功能來添加它們,但這並不意味着每次我對核心進行更改時,我都會是否需要構建框架,然後在最終構建和運行我的應用程序之前進行pod更新?這不可能是解決方案。
我缺少什麼?我究竟做錯了什麼?我希望你能幫我弄明白。