【Unity】AndroidSDK、UnityのものとAndroid Studioのもの、どっち使う?

【Unity】AndroidSDK、UnityのものとAndroid Studioのもの、どっち使う?

Unityで作ったゲームをAndroid向けにビルドする際は、Unity HubからインストールしたSKDやNDKを使います。Unity側で動作を確認しているバージョンが同梱されているので、基本的にはそのまま使うのが良いと思います。

ただ、Android向けにビルドしてプロジェクトをエクスポートした場合、Android Studioで開こうとすると「プロジェクトで使用しているSDKのパスとAndroid Studioで使っているSDKのパスが異なるけどどうする?(意訳)」と聞かれることも。

どちらを選択するか記事の中で個人的な視点で場合分けして紹介したいと思います。もし有識者の方がいたらアドバイスをいただけると嬉しいです。

 

 

環境

macOS 11.1 Big Sur

Unity2020.1.7f1

Unity Hub 2.4.2

Android Studio 4.1.1

 

AndroidSDK、UnityのものとAndroid Studioのもの、どっち使う?

UnityからエクスポートしたAndroidのプロジェクトをAndroid Studioで開こうとすると以下のようなダイアログが表示されることがあります。

ずらりと並ぶ英文
ずらりと並ぶ英文

 

Unityがビルドするときに使ったSDKはUnity Hubから「Android Build Support」を使ってインストールしたパスのもので、私のAndroid StudioではAndroid Studio側でまた別のパスにSDKを配置しています。

なので、

The project and Android Studio point to different Android SDKs.

のように「プロジェクトで使っているAndroid SDKのパスとAndroid Studioが使っているAndroid SDKのパスが違っているよ」とダイアログが表示されたのでした。

選択肢としてはプロジェクトのSDKを使うか、Android Studioで使っているSDKを使うかの2つです。

あ、SDKってなんだっけ? という時には以下の記事をご参照ください。簡易的に解説しています。

 

プロジェクトのSDKを使う場合

プロジェクトのSDKを使う場合は [Use Project’s SDK] を選択します。これにより、Unityでモジュール追加を行なった時にインストールしたSDKへのパスを使うようになるため、Android Studioでもそのパスを見るようになります。

これはプロジェクト単位ではなくAndroid Studioで使うデフォルトのSDKパスを変える動きになっています。ダイアログの中では [2] の動きですね。

 

Android Studioで使っているSDKを使う

Android Studioで使っているSDKを使う場合は [Use Android Studio’s SDK] を選択します。もともとAndroid StudioでSDKをいくつかダウンロードしていた場合はパスが変更されずにそのまま使えるようになります。

プロジェクト側の設定ファイルである「local.properties」のファイルには『sdk.dir』や『ndk.dir』のようにSDKやNDKへのパスが記載されており、この値がUnityで出力した時から変更されることになります。ダイアログの中では [1] の動きです。

 

どちらを使うか場合分けで選ぶ

正直にいうとどちらも影響がある動きなので選ぶのは迷うところです。

UnityからエクスポートしたAndroidプロジェクトで何をしたいかによって選ぶ選択肢が変わります。ここでは個人的にこうするという選び方を紹介します。有識者の方はご意見をいただけると嬉しいです。

 

プロジェクトの中身を見るだけ

Unityからエクスポートしたプロジェクトの中身を確認するだけなら、[Use Android Studio’s SDK] を選択します。ビルドをしないのであれば使用するSDKのバージョンが変わったとしても影響がないので、Android Studio側の設定を買えないようにするのが良いと思います。

 

端末のエミュレータを使いたいだけ

Unity2019.2までならx86のアーキテクチャ向けにapkを出力できるので端末のエミュレータを使うことができます。実は別途apkをエクスポートしていて、ADV Managerから端末を立ち上げるためにプロジェクトをエクスポートした、みたいな感じならやはりAndroid Studioでビルドを行わないので [Use Android Studio’s SDK] を選択します。

この場合はエミュレータにapkファイルをドラッグする形でアプリをインストールして実行することを想定しています。

プロジェクトを開いている状態で [▶︎(Run)] ボタンから実行すると、Android Studio側でビルドを行うことになるため、使っているSDKが異なることで問題を引き起こすことがあるかもしれません。

Unity2019.3からはx86向けにapkを出力できなくなってしまったので、エミュレータを使用する用途でプロジェクトをエクスポートすることは少なくなるかもしれません。

 

 

 

実機を接続して、apkは別でエクスポートした後にAndroid Studioをデバッガとして使うならこの方法と同じ考え方でいいと思います。

 

エクスポートしたプロジェクトでビルドを行う

エクスポートしたプロジェクトでビルドを行う場合は、Android Studio側でビルドを行うことになります。個人的にはなるべくUnityの中で作業を終わらせておきたいと思っていますが、ゲームの中で使っているパッケージによっては、エクスポートしたプロジェクトでも作業を行うことがあるかもしれません。

この場合は [Use Project’s SDK] を選択すると良いでしょう。Unityでビルドする際に使うSDKバージョンと一貫性を持たせておくのは大切で、複数のバージョンのSDKを使ってビルドするのは思わぬエラーの元になります。

 

Unity以外でもAndroid Studioを使っている

この場合はさらに場合分けが必要かもしれません。

Unity以外でもAndroid Studioを使っていて、Unityからエクスポートしたプロジェクトでビルドを行わないのであれば [Use Android Studio’s SDK] を選択します。

Unity以外でもAndroid Studioを使っていて、Unityからエクスポートしたプロジェクトでビルドをしたい場合は、同時に進行しているプロジェクトがないか確認した方が良いと思います。ビルドを行うならUnityで使っているSDKと揃えたほうがトラブルが少ないと思うので [Use Project’s SDK] を選択したいところですが、他のプロジェクトも同時に動いているならそちらで使っているSDKのパスも変わってしまうことに注意が必要です。

影響が大きいので要確認ですね。

ただそちらのUnity以外のプロジェクトを開いたタイミングでこのダイアログが表示されるので、そのタイミングで [Use Project’s SDK] を選択して切り替えていくというのもありかもしれません。

 

UnityでインストールしたAndroid SDKのパスをデフォルトにするメリット・デメリット

「Unityで「Android Build Support」に含まれるSDKをインストールしたら、そこをAndroid Studioでもデフォルトにしたら?」

というアイディアもあるかもしれません。これについてメリット・デメリットを考えてみます。

 

メリット

SDKを1箇所で管理できるのでこのページで問題になっているSDKのパス違いの点は回避できます。Unity以外でAndroid Studioを使わず、SDK Managerでも特に追加でダウンロードしない場合はシンプルにこの方法でもいいかなとは思います。

 

デメリット

Unity本体をアップデートするたびにAndroid Studio側でもSDKのパスを変更する必要があるかもしれません。

Unity本体をアップデートする場合、Unity Hubを使っているならバージョンごとにインストールされます。この時、プラットフォーム向けのフォルダ(AndroidPlayerなど)もそれぞれのバージョンで作成されます。

例えば2020.1.5fから2020.1.17fにアップデートした、なんて場合は「おそらく」Androidビルドで使用するSDKなどのバージョンも変わらないので、2020.1.5fの「AndroidPlayer」フォルダの中にあるSDKを使うことができると思います。しかし、2019.4.xから2020.1.xのようにメジャーバージョン単位でアップデートした場合はUnityが推奨するSDKのバージョンが異なる可能性もあるため、結局対応するSDKをインストールし直すことになるかもしれません。

その場合、Android Studio側でもSDKのパスを変更する必要があります。

Unityからプロジェクトをエクスポートする時にはこのページで紹介しているダイアログが表示されるので、これで変更するのもありっちゃありですね。Unity以外でAndroid Studioを使わないならSDKを追加したりすることも少ないと思うので、プロジェクトごとに変更することでUnityとの一貫性を保つことができます。

 

私の場合はUnity以外でもAndroid Studioを使うことがあるのでAndroid Studioで管理するフォルダを用意して別々にしています。

 

まとめ

Unityで使用しているAndroid SDKのパスと、Android Studio側で使用しているAndroid SDKのパスが異なる場合、どちらのパスを使うのか確認するダイアログが表示されます。

個人的には、Unityからエクスポートしたプロジェクトでビルドを行わないのであればAndroid Studioで使っているSDKのパスを使い、ビルドを行うのであればプロジェクトで使用しているSDKのパスを使うのが良いと思います。ビルドの有無で使いわけるのが良さそう。

プロジェクトで使用しているSDKのパスを使うようにすると、Android Studioでデフォルトで使用するSDKのパスが変更されるので、他のプロジェクトを開いた時にこのページで紹介したダイアログが表示されることには注意が必要です。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!