Closed8

[Unity]Firebase関連のpackageをGPR経由で読み込めなくなったやつの後処理

sukedonsukedon

背景
https://qiita.com/beiyuen/items/913f472f08f39acd3dcd?utm_source=pocket_mylist
Game Package Registry (GPR) by Google が、2021年5月19日でパッケージの提供を終了。
Firebase等を使っているプロジェクトではこれを使っていたと思いますが、最新のバージョンへのアップデートが従来の方法だと出来なくなってしまった。
PackageMangerで「Update to x.x.x」を押すだけでアップデートできるのは便利だったのに非常に残念です、、

↑の記事を参照しながらアーカイブサイトからtgzファイルをダウンロードして、手動で導入していた。

しかし、Firebaseのなんかの8.1.0のパッケージを導入しようとしたところ、Podspecの記述に不備があり手動でDepemdency.xml内で指定しているバージョンを書き換えたい、という状況になった。

そのときは結局unitypackageで導入してやり過ごしたけど、これ毎回やるの微妙な気が、、、firebaseのsoファイルは100MBを超えるので毎回git lfsに追加するのもめんどくさいし。

tgzファイルを解凍・編集・圧縮すればいいか。

--

プロジェクトを触るのが1人でかつ1つのPCでしか使わないなら↑の記事でも問題ないと思うけど、自分は2年単位とかでPCを変えてるのでいつかツケが回ってくる気がする。
ので他の方法を検討する

sukedonsukedon

これらのパッケージを使いたいプロジェクト側のmanifest.jsonで

{
  "dependencies": {
    "com.google.firebase.analytics": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.analytics-8.1.0",
    "com.google.firebase.auth": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.auth-8.1.0",
    "com.google.firebase.firestore": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.firestore-8.1.0",
    "com.google.firebase.database": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.database-8.1.0",
    "com.google.firebase.messaging": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.messaging-8.1.0",
    "com.google.firebase.remote-config": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.remote-config-8.1.0",
    "com.google.firebase.app": "git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.firebase.app-8.1.0",
    "com.google.external-dependency-manager":"git+ssh://git@github.com/sukedon/UnityCustomPackages.git?path=Google/com.google.external-dependency-manager-1.2.166",
   // 以下略
}

というように指定してあげれば無事に読み込んでくれました。

  • 一つのレポジトリに集約されてるからgithubの容量を圧迫せずに済む
    • プロジェクトごとにfirebaseのunitypackageを読み込むような運用だと無駄に容量使っちゃうので
  • 各パッケージの中身を編集できるので、万が一WorkAroundな対応がしたいときもなんとかなる
    • unitypackageでの運用だと直接編集できたが、tgzをローカルから読み込む方式だと解凍→編集→再度圧縮という手間をとる必要がありやや面倒だった

ということで一旦これでいいや_(:3 」∠ )_

sukedonsukedon

この運用だと、firebase関連のパッケージがバージョンアップした際の手順は

    1. アーカイブから各種パッケージをダウンロード
    1. パッケージ管理用のプライベートレポジトリにプッシュ(自分の場合はhttps://github.com/sukedon/UnityCustomPackages)
    1. パッケージを使用したいプロジェクトのmanifest.jsonの中身を編集する

という感じ。

https://github.com/sukedon/UnityCustomPackages
↑はプライベートレポジトリなわけですが、こういうのを公式が公開してくれればありがたいんだけども

そういえば前にxcodeの古いDeviceSupportをダウンロードしたいときがあった。
https://zenn.dev/sukedon/articles/0ec92289f4141a
そのときは公式なのか非公式なのかわからないレポジトリに過去のDeviceSupportが上がっていたんだけども、こういうのって勝手に公開したらまずい気がするからやっぱり公式がやってほしい。

UI上でバージョンを指定してアップデートできていたあの頃が懐かしい_(:3 」∠ )_

もっと楽な方法があるような気がするので、もしご存知の方はコメントいただけるとありがたいです...!

sukedonsukedon

↑までで結論付けた手法は「複数プロジェクトで併行して開発中かつFirebaseを使っている」というデベロッパー向けです。
とりあえず1つのプロジェクトにFirebaseを導入したい、という場合はプロジェクト内のAssetsフォルダと同階層のところにパッケージ用のフォルダを作ってtgzファイルを配置し、package.json内でそこのパスを指定するのが手っ取り早いです。

このスクラップは2021/08/27にクローズされました