Unityで開発したアプリをUSBを用いてAndroid端末に転送する場合、何カ所かキーになる設定があり、誤ると以降に示すエラーダイアログあるいはConsoleにエラーメッセージを出力します。なお、使用している各アプリ/ドライバのバージョンを次に示します。
- Unity ver4.5
- SAMSUNG USB Driver for Mobile Phones V1.5.43
- AndroidSDK(ADT 23) installer_r23.0.2-windows
Unity ver5を使用する場合は、「32ビットWindows7上でUnity 5によるAndroid用のビルド」を参考にしてください。
USBドライバが見つからない
Unityでは、正常にUSBドライバがインストールされていないと次のような表示がされます。
Android端末ごとにドライバーは異なるため、新しいデバイスをPCと接続する場合は、ドライバのインストールが必要になります。 端末が認識されない場合は、デバイスマネージャーから、USB接続が有効になっているか確認してみます。 「!マーク」が付いている場合は、正常に認識されていません。
正常にドライバがインストールされていると次のように表示されます。
また、Android SDKに付属して配布されている開発ツールADB(Android Debug Bridge)を使用します。ADBは、パソコンをADBサーバー、Android端末をADBクライアントとして動作させる構造になっていて、端末へのプログラムのインストール/アンインストール、ファイルの転送/取得、デバッグ情報の通信、Android端末のシェル起動など、デバッグに必要な様々な機能を持っています。ドライバーが正常に動作していれば、次のように端末リストが表示されるでしょう。
C:\android-sdk\platform-tools>adb devices List of devices attached 100044aa3721 device
zipalign.exeが見つからない
zipalign.exeは、.apk 内のイメージや生のファイルといった未圧縮データを 4 バイトバウンダリに整列させるようにします。その結果、アプリケーション実行時の RAM の総使用量を減らすことができます。これをBuild時に呼び出していて、ダイアログは出力されずに、次のエラーメッセージがConsoleに表示される。
Error building Player: Win32Exception: ApplicationName='C:/Program iles/Android/android-dk\tools\zipalign.exe', CommandLine='4 "C:\Users\Documents\New Unity roject\Temp/StagingArea Package_unaligned.apk" "C:\Users\Documents\New Unity roject\Temp/StagingArea/Package.apk"',CurrentDirectory='Temp/StagingArea'
原因は、最新のSDKフォルダ内のbuild-tools\android-4.4Wにzipalign.exe が移動したためで、対策として、移動したフォルダから/Android/android-sdk\tools\に持ってくるのが一番早そうです。
Minimum API Levelの誤り
次に示すエラーダイアログとエラーメッセージは、アンドロイド端末のバージョンとUnityに指定されている最低バージョンの条件があわない場合出力されます。
Consoleへのエラーメッセージ
Installation failed with the following output: pkg: /data/local/tmp/Package.apk Failure [INSTALL_FAILED_OLDER_SDK] 1252 KB/s (8403965 bytes in 6.550s)
原因は、「BuildSettings >Player Settings… > Other Settings > Minimum API Level」での設定ミスでした。次のように設定し直します。
- 誤 実機 = Android 2.3 Minimum API Level = Android 3.0
- 正 実機 = Android 2.3 Minimum API Level = Android 2.3.1