我正在嘗試用靜態庫實作弱鏈接。我閱讀了那兩篇文章,"iOS 上的靜態庫"和"Jesse Pinkman 如何破解 iOS 上的動態庫",這兩篇文章確實很有幫助。
然而,我現在的情況是,我無法實作我想要的東西。我開發了兩個框架,讓我們稱它們為Main和Feature,它們既可以作為 pods 也可以作為 swift 包安裝。
Main并不依賴Feature,Feature也不依賴Main,但是如果Main和Feature都存在于開發者的podfile中,那么Main可以使用Feature的功能。這是通過在Main的podspec中的框架搜索路徑上添加Framework的路徑實作的。
Main.podspec
# 這在podfile中加入use_frameworks!
s.pod_target_xcconfig = {
"FRAMEWORK_SEARCH_PATHS" => [
"$(heredited)"。
"${PODS_CONFIGURATION_BUILD_DIR}/Feature" ,
],
}
這樣,Main可以通過以下方式使用Feature的功能
#if canImport(Feature)
print("success!!")
let feat = Feature()
feat.test()
#else
print("Failed to import Feature" )
#endif"。
當集成開發者沒有在他的podfile中包含use_frameworks!時,問題就開始了(例如React Native)。Main和Feature隨后被構建為靜態庫,它被編譯,但它從未進入SUCCESS塊。
在閱讀了上述文章后,我認為正確的方法應該是如下內容
Main.podspec
s.pod_target_xcconfig = {
"LIBRARY_SEARCH_PATHS" => [
"$(heredited)"。
"${PODS_CONFIGURATION_BUILD_DIR}/Feature" ,
],
"SWIFT_INCLUDE_PATHS" => [
"$(heredited)"。
"${PODS_CONFIGURATION_BUILD_DIR}/Feature" ,
],
}
也許還要加上
Main.podspec
s.pod_target_xcconfig = {
...
'OTHER_LDFLAGS' => [
"$(heredited)"。
'-ObjC'。
'-weak_library -l "Feature"'。
],
...
}
我試著在Feature's一側的Defines module = YES/NO進行了上述操作。
Feature.podspec
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES'
然而,上述方法都不奏效。有沒有人知道我可能做錯了什么,或者給我指出一些方向?
uj5u.com熱心網友回復:
我最后模擬了你所需要的這里。
。但是,我只能通過以下方式解決你的問題的一半(沒有use_frameworks):
Main.podspec
# To include Swift Module
'OTHER_SWIFT_FLAGS' => ['$(繼承)', '-Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Feature/Feature.modulemap"']
Podspec方面:
- 不確定為什么在cocoapod設定中需要
modulemap檔案路徑(可能是當一個庫被弱鏈接時)
Podfile Side:
use_frameworksuse_frameworks將無法作業,因為modulemap檔案不會在指定的路徑中找到(因為它只考慮靜態路徑的情況)& Xcode會認為它是需要的。不知道如何在Podspec中選擇性地指定一個modulemap檔案。
我希望我能夠提供幫助,盡管它是半途而廢。
uj5u.com熱心網友回復:
@e_pie 我認為你想做的是一個post_install的東西,如果你清楚Main對Feature的依賴性。
因此,你所嘗試的東西實際上是完美的,但應該像這樣在App的Podfile中放在post_install:
post_install do|installer|
安裝程式.pods_project.target.each do |target|
if target.name == "Main"
target.build_configurations.each do |config|
config.build_settings['FRAMEWORK_SEARCH_PATHS'] = "${PODS_CONFIGURATION_BUILD_DIR}/Feature"
end。
end
end end
end end
我希望這有幫助,如果沒有,請告訴我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307321.html
標籤:
