🐛
Embedded Framework で Xcode Previews が動作しない時の対処法
起きていた問題
- Embedded Framework で Carthage や CocoaPods を利用してライブラリを導入していました
- その状態で Xcode Previews を開こうとすると
Library not loaded
というエラーが発生し、Previews が開けない状態になっていました(自分の環境は Xcode 12.4)
問題の原因
-
LD_RUNPATH_SEARCH_PATHS
に ライブラリの Path が含まれていないことが原因(以前まで動作していたのか定かではないですが Xcode のバグっぽい雰囲気もあります)
解決方法
CocoaPods の場合
で議論されていますが、以下のような workaround を Podfile に対して適用すれば解決することができました。
class Pod::Target::BuildSettings::AggregateTargetSettings
alias_method :ld_runpath_search_paths_original, :ld_runpath_search_paths
def ld_runpath_search_paths
return ld_runpath_search_paths_original unless configuration_name == "Debug"
return (ld_runpath_search_paths_original || []) + (framework_search_paths || [])
end
end
class Pod::Target::BuildSettings::PodTargetSettings
alias_method :ld_runpath_search_paths_original, :ld_runpath_search_paths
def ld_runpath_search_paths
return (ld_runpath_search_paths_original || []) + (framework_search_paths || [])
end
end
上記を Podfile に追加することで pod install
時、自動的に LD_RUNPATH_SEARCH_PATHS
に CocoaPods で導入しているライブラリの Path が追加されました。
Carthage の場合
$(PROJECT_DIR)/Carthage/Build/iOS
を LD_RUNPATH_SEARCH_PATHS
(Xcode 上では RunPath Search Paths
)に追加すれば解決できました
Discussion