RxSwiftをCarthageで入れたら実機で起動できなかったので、RxRelayも追加して解決した


RxSwiftとRxCocoaを追加後、ビルドはサクセスするのですが、実機で動作確認ししようとすると以下のエラーで落ちてしまいました。

dyld: Library not loaded: @rpath/RxRelay.framework/RxRelay
  Referenced from: /var/containers/Bundle/Application/xxxxxxx-xxxx-xxxx-xxxx-477EBE5CC202/xxx.app/xxx
  Reason: image not found

今回の解決方法は、RxRelayも追加することでした。

RxSwiftライブラリをビルドすると、以下の5つのフレームワークが生成されます。

  • RxSwift
  • RxCocoa
  • RxRelay
  • RxBlocking
  • RxTest

RxSwift, RxCocoaのみXcodeで追加すれば良いと思っていたのですが、どうやらRxRelayも必要みたいですね🤔

TARGETS -> General -> LinkedFrameworks and Libraries にRxRelayも追加し、
Build Phases の Input Files Lists, Output Files Lists にも追記しました。

input.xcfilelist
$(SRCROOT)/Carthage/Build/iOS/RxSwift.framework
$(SRCROOT)/Carthage/Build/iOS/RxCocoa.framework
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
output.xcfilelist
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxSwift.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxCocoa.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxRelay.framework

以上で、無事に実機での動作確認を行えるようになりました。