🤖

UnityでQuestとモバイルAndroidを共存させるGit管理方法

2022/02/11に公開

UnityでQuestとモバイルAndroidを単一リポジトリで扱う場合、どちらもAndroidプラットフォームなので、各プラットフォームをビルドすると必要のないプラグインがバイナリに含まれてしまいます。

GooglePlayへのパブリッシュはaabで150MB以下の制限です。この制限がなくてもできるだけバイナリのサイズは下げたいところです。
https://developer.android.com/guide/app-bundle?hl=ja#size_restrictions

そこで今回は、Gitのサブモジュールを使って、各プラットフォームで必要な部分のみを切り分けてリポジトリ管理することでこの問題を解決します。

サブモジュール自体の説明は「Git サブモジュール」でググってください。

プラットフォームごとにサブモジュール化したリポジトリの作成手順

  1. ApplicationCoreという名前のアプリケーションのコア部分のUnityプロジェクトを作成し、リポジトリにプッシュしましょう。

  2. Github上でPlatform_QuestというQuestの開発に必要なもののみを管理するリポジトリを作成しましょう。このとき、gitignoreも一緒に作成してください。サブモジュールを追加するには空のリポジトリではだめなので何かしらファイルが必要ですが、Unityでmetaファイルが作成されるものは余計な差分が出てきてしまうことがあるので避けてください。

  3. Platform_QuestリポジトリをApplicationCoreのAssetsフォルダ以下にサブモジュール追加します。

git submodule add git@github.com:kanik155/Platform_Quest

forkの場合は左のサイドバーのSubmodulesを右クリック->[Add New Submodule...]から追加できます。

  1. 追加できるとこのような構成になります。

  2. ApplicationCoreのgitignoreに下記を追加してサブモジュールを無視するようにします。このようにすることで、サブモジュールを追加していない環境でも余計な差分が出なくなります。

# Submodules
Assets/Platform_Quest/
Assets/Platform_Quest.meta
  1. Platform_Questフォルダ以下に適当に新しいシーンを作成してPlatform_Questリポジトリでプッシュしてください。

こんな感じでQuestの開発のみに必要なものはPlatform_Questフォルダ以下に入れて開発していきましょう。

あらたにApplicationCoreリポジトリをクローンした場合

  1. ApplicationCoreリポジトリをクローンしてください。この状態だとPlatform_Questはありません。

  2. Assets/Platform_QuestにPlatform_Questリポジトリをクローンしてください。この状態だとPlatform_Questが追加された状態で開発できます。

補足

必要があれば起動時にエディタスクリプトを走らせてQuestのみで必要なエディタの設定を書きましょう。

https://docs.unity3d.com/ja/2020.3/Manual/RunningEditorCodeOnLaunch.html

同様に、Platform_Mobileなどのリポジトリも作り、QuestとモバイルAndroidの切り替えができるようにしましょう。

Discussion