[Unity] アプリをビルドしてandroid実機上でテストする

Unityで作成したアプリをPC上で確認した後は、ターゲット端末に落として実際のテストをします。
これはAndroid向けにBuildして実機でテストする手順です。MacとWindowsの両方のケースで見ていきます。
 
adroid-build_01

Unity 2018.1
Android 8.1

 




Androidでの開発を始める

 
Unityマニュアルには説明ページがあります。これに沿って進めていきます。
Unity| Androidでの開発を始める
 
以下のような手順で設定します。

 

Android Studio, JDKのインストール

 
必要なものはAndroid SDKだけですが、開発ツールであるAndroid Studioをインストールしてその中にあるSDKを使うこともできます。Android Studioを入れるとどうしてもHDの容量を食いますが、アプリ内のフォルダを見たりできるなどデバッグツールを使えるメリットもあります。
 
MacとWindowsではインストールが多少異なります。また、Java開発環境のJDKも合わせてインストールが必要です。
 
android-studio_01
 
WindowsにAndroid Studioをインストール

https://akira-watson.com/android/adt-windows.html

MacにAndroid Studioをインストール

https://akira-watson.com/android/adt-mac.html

 

Android端末のUSBドライバーを入れる

 
Android Studioの環境ができたところで、Android端末とPCをUSBケーブルで接続するためのドライバーを入れます。ドライバーは基本的には端末メーカーから提供されるものを使うことになりますが基本的なところは同じです。また同時に端末の開発者向けオプションを有効にします。
 
こちらのGoogleのNexus7での例を手本にドライバーを設定します。尚、Macの場合はこの作業は必要ありません。

https://akira-watson.com/android/nexus7-usb-driver.html

 

Android SDKのパスを設定

 
これ以降はUnityでの設定となります。先にAndroid Studioをインストールしていると自動的に設定される場合もありますが、確認しておくと後々助かります。
 
最初にAndroid SDKのパスを設定します。
Mac: メニューの「Edit」「Preferences…」を選択
 
adroid-build_02
 
Windows:「Edit」「Preferences…」
 
adroid-build_03
 
External ToolsのカテゴリーにSDKとJDKの欄があります。ここにパスがすでに入っていればそのままですが、無い場合は場合は自分で設定しないといけません。
 
adroid-build_04
 
Android Studioをインストールしていれば、Android StudioからからSDK Locationが分かります。
 
SDK:
Windows:
「File」「Settings…」「Appearance & Behavior」「System Settings」「Android SDK」
C:\Users\(your name)\AppData\Local\Android\sdk
 
Mac:
「Menu」「Preferences」「Appearance & Behavior」「System Settings」「Android SDK」
/Users/(your name)/Library/Android/sdk
 
adroid-build_08
 
JDK:
Windows:
例えばOracleのJDKを使ってJAVA_HOMEを設定している場合など
(注意) JDK8がサポートバージョンです。
C:\Program Files\Java\jdk1.8.XXX_XXX\

Android Studioは2.3あたりからOpenJDKを使うようになっていて、すでにAndroid StudioをインストールしてもそのPathが設定されていないかもしれません。
C:\Program Files\Android\Android Stuido\jre
これは環境をどうしているかなので自分で確認してください。例外的にPlugin等の関係でJAVA_HOMEを設定してOracleJDKを使う場合もあります。

Mac:
JDKは分かりにくいのですが、ターミナルを使って調べると概ね
/Library/Java/JavaVirtualMachines/jdk1.8.XXX_XXX/Contents/Home
のような場所にリンクがあります。(シンボリックリンク)
ただし、Android Studioでは以下に設定されています。今の所どちらでもビルドはできるようですが、そのうち変わるのでしょうね。
/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

 

BundleIDを設定

 
Unityから「File」「Build Settings」を選択
 adroid-build_05
 
SeanをAdd
Androidにswitch
 
adroid-build_06

  1. Add Open Scenesでシーンを追加(意外と忘れがち!)
  2. PlatformのAndroidを選択
  3. Switch Platformのボタンをクリックする
  4. Player Settingsを選ぶとInspectorが表れます
  5. Build System でGradleを設定する。あるいはGradleプロジェクトをexportする。詳しくは Android の Gradle

 
adroid-build_07b
 
Company Name と Product Nameを決めます
それに応じたBundleIDを設定します
例:
Company Name:hoge
Product Name:TestApp
とすると
Bundle Identifierは
com.hoge.TestApp
のようにします。
 
このInspectorの設定は、公開する時にはアイコンやその他の設定が必要です。とりあえず実機テストだけなのでここまでです。

 

Build And Run

 
Buildボタンをクリックします。
 
adroid-build_09
 
しばらくしてSuccessとなるのを確認します。
SDK, JDK, BundleIDの設定が正しくないとエラーになります。
 
adroid-build_10
 
「Build And Run」ボタンをクリックして実機で実行されます。
 
adroid-build_01
 

Android Sduio のemulatorで実行させる

 
emulatorでテストするにはapkファイを作成していますので、それをadbコマンドを使ってインストールします。
emulatorを単体で起動させます。他の実機などは切っておきます。
deviceを確認してからインストールです

この方法はemulatorだけではなく、実機にも使えます

 

Errors

 
AAPT2 Error:
AAPT2とは、Android Studioと Gradle Pluginがアプリをコンパイルしてパッケージ化するために、リソースを解析し、索引付けし、Androidプラットフォーム用に最適化されたバイナリ形式にコンパイルするものです。
Ref: AAPT2 | Android Developers
対策1)
最近デフォルトでenableになったので、使わないということもできるようです。
UnityからAndroidにExportして、Android Studioからimport、gradle.propatiesに以下を追加する

 
これでも解決しない場合は、Android Studioに展開できているので、Androidでの他のエラー関連記事を探して対応もできます。バージョンによって様々あるようです。
 
対策2)
Unityのビルドの設定でBuild SystemはGradleになっていた場合は、Internalに変更する。
 
adroid-build_06
 
対策3)
これはAndroid Studioで良く起きますが、前のバージョンは大丈夫だったけど新しいバージョンでエラーになる。例えばAndroidの開発環境にASCII以外のpathが入る。例えば日本語のフォルダあって読出しエラーになるとか。これは基本なのですが(エンジニアとして)ついついやってしまい、前まではたまたま大丈夫ということもあります。
 
Make sure the android sdk path iscorrect:

Unable to list target platforms.Please make sure the android sdk path is correct….

adroid-build_11
 
Windows環境のケースです。Android Studio 2.3以降SDKのtools構成が大幅に変更されたためビルドエラーとなるようです。
 
これはすでに修正されたようです。(Unity 2018.1.6f.1 :Mac/Windoowsで確認済)
ただ念のため残しておきます
 
対策:

  1. ExportしてAndroid Studioで調整してビルドする
    • Android Studioに慣れていればなんとかできますが、ちょっと面倒かも
  2. 古いAPI25のtoolsを個別にダウンロードして、Android SDK のtoolsフォルダと置き換える。あるいは別に作成する

古いバージョンのsdkが以下にあります。
dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip
 
解凍するとそれぞれ以下のファイルがあります。
tools_r25.2.3-windows.zip
 
SDKのパスからtoolsを探しフォルダを置き換えるか、あるいは別にリネームする等
 
これでビルドが通るようになります。
ただ、これはいずれ問題になるかもしれません。近々Android 8.0以降をサポートしないとリリースできなくなるようですので

2018 年 8 月: 新しいアプリで、ターゲット API レベル 26(Android 8.0)以降が必須になります。

Ref: 今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善について
 
その他:
Buildでエラーになる原因なんて山ほどありるし、大きいバグはとりあえず修正されるのですが、ある意味いつもあり得る問題に起因するものとしてバージョンです。
 
Androidは最近は早いうちから開発者に新しいplatform,あるいはSDKのPreViewを提供してバグ修正に貢献してもらおうとしています。
 
ただ、それがUnityなどサードパーティには困ることがあり、ついうっかり最新版ということでインストールしてしまうとエラーになることが多々あります。
 

  1. アプリをビルドしてandroid実機上でテストする
  2. アプリを公開する為の設定
  3. Developer Consoleに登録してGoogle Playで公開