CocoaPodsを使っていると、自分のアプリがまだまだ開発中だって時に、外部ライブラリがどんどんバージョンアップしていることはよくあります。仕様変更などがあると、pod updateしたタイミングで、記述を大きく変更せねばならなくなったりします。「今そんなことしたくない」って時にそういう状態になりたくないですよね。そのため、通常は開発を始めて、一区切りするまでは、外部ライブラリのバージョンは固定しておきたいものです。
Podfileの中でバージョンを指定すると固定できるわけですが、Firebaseについては、CoreやAuth、Databaseなどそれぞれがバラバラなバージョンとなっており、またそれぞれこれだと思ってバージョンの記述をしてもうまくバージョン固定できなかったりしていました。Firebaseについては、どのような書き方をすればいいのかがわかったのでMEMOしておきます。
最新バージョンの確認方法
まず、現時点でインストールされているバージョンと最新版を確認するコマンドです。Podfileが存在するディレクトリまで移動して、
pod outdated
です。すると、最新版が利用可能なものが
- Firebase 3.16.0 -> 3.16.0 (latest version 4.0.0)
- FirebaseAnalytics 3.8.0 -> 3.8.0 (latest version 4.0.0)
- FirebaseAuth 3.1.1 -> 3.1.1 (latest version 4.0.0)
- FirebaseCore 3.6.0 -> 3.6.0 (latest version 4.0.0)
- FirebaseDatabase 3.1.2 -> 3.1.2 (latest version 4.0.0)
- FirebaseInstanceID 1.0.10 -> 1.0.10 (latest version 2.0.0)
- FirebaseMessaging 1.2.3 -> 1.2.3 (latest version 2.0.0)
- FirebaseRemoteConfig 1.3.4 -> 1.3.4 (latest version 2.0.0)
- Google-Mobile-Ads-SDK 7.19.1 -> 7.19.1 (latest version 7.20.0)
のようにリストされました。
PodfileでFirebaseのバージョンを固定
これの赤字で記した「Firebase」のバージョンだけを Podfile にて
pod 'Firebase', '~> 3.16.0'
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/RemoteConfig'
pod 'Firebase/AdMob'
pod 'Firebase/Messaging'
pod 'Firebase/Auth'
のように記述しておくと、FirebaseDatabaseやFirebaseCoreなども最新版に更新されることなく、Firebaseが3.16.0時点のバージョンをそのまま保ってくれました。
ちなみに、「~>」の意味は、ここに記載がありますが、’~> 3.16.0’の場合、3.16.xのxの部分がマイナーバージョンアップした場合のみアップデートするような記述です。最新バージョンが「3.17.0」以上になるとアップデートされません。なので、おおよそ、仕様変更のような大きな変更はなく、そのバージョンのバグ修正などだけに対応することができるような感じになると思われます。
上記の例では、現在、「Firebase」の最新版は4.0.0なわけですが、「FIRDatabase→Database」等の記述変更があるため、アップデートするとかなり多くのエラーが発生し、今その修正作業をしたくないので、3.16.0をインストールしたときのままにしています。pod 'Firebase/Database’
部分にバージョンの記述をしなくてもFirebaseDatabaseは3.1.2に保たれています。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。