個人開発のアプリを CocoaPods から Swift PM に移行した

個人開発のアプリを CocoaPods から Swift Package Manager に移行した。

やることはシンプルで $ pod deintegrate して、XcodePackage Dependencies に Podfile にあるライブラリを追加していくだけでよい。 なのだが、同時にM1Macへの移行やiOS15対応などが発生し、色々ハマったのでメモ。

Swift PM 移行は全てのライブラリを一気に移行した方が良い

最初は Podfile からライブラリを1つずつ Swift PM に移行していったのだが、そうすると以下のようなエラーが出て困った。
全てを一気に移行するとどこでエラーが出たのかわからないから1つずつと思ったのだがそれが間違いで CocoaPods と SwiftPM が共存すると色々ややこしくなるっぽいので CocoaPods を消して Swift PM 移行した方が楽っぽい。

  • framework not found FBLPromises
  • Could not find module 'Xxxx' for target 'x86_64-apple-ios-simulator'; found: arm64-apple-ios-simulator, at: /Path/Build/Products/Debug-iphonesimulator/Siren.swiftmodule is missing one or more architectures required by this target: arm64.
  • No such module 'GoogleMobileAds'

細かい対応

Undefined symbol: _OBJC_CLASS_$_JSContext

https://github.com/googleads/swift-package-manager-google-mobile-ads/issues/8

JavaScriptCore が抜けてるっぽい。PRはマージされてないのでXcodeで直接追加した

Crashlytics Run script

fromatom.hatenablog.com

SVProggressHUD

https://github.com/SVProgressHUD/SVProgressHUD/pull/1063

Swift PM 未対応なので使うのをやめて解決

その他

  • Other Linker Flags にいっぱい記載されていたので -ObjC だけの状態にした
  • Excluded Architecturex86_64 だけ指定
  • 他にもごちゃごちゃいっぱい試行錯誤して触ったけど覚えてない
  • Fastlane

おわり

数年前に Swift Package Manager が出てきた時は全然実用段階じゃなくて、こんなの使う日が来るのか? と思ってたけどもう実用段階で実際に使えるようになってすごいし感慨深い。