Unityを用いたAndroid開発でビルドやインストールができない時に疑うべき項目とTIPS
はじめに
この記事を
- Androidネイティブ開発の知識は皆無
- Unityを用いたAndroid開発の経験は1年半ほど
という状態で開発をしていて困ったことが多々あったので、確認したほうが良いと思う項目を書き出してみました。
ここで挙げている項目は全て必須だと思っているのですが、全てについて検証しているわけではないので間違っていたらすみません。指摘していただけますと幸いです。
それぞれの項目については、ググれば丁寧に説明してくれている記事が出てくるかと思います。補足的な事項については小項目としてメモしてあります。
Unityでapkを書き出すために必要な項目
- Unityインストール時のコンポーネント選択時に「Android Build Support」にチェックを入れる
- JDKのインストール
- デフォルトの設定であればおそらくUnity側の設定が不要(Androidビルド時に自動的に設定されていました。)
- Android SDKのインストール
- Android Studioに内包されていますが、こちらは必須ではありません。
- こちらの記事が参考になります。ディスクを節約したAndroid SDKの環境構築 - Yahoo!知恵袋
- keystoreの生成
- Unityの[Player Setting]>[Setting for Android]>[Publishing Setting]より設定可能。
- keystoreを未選択、AliasをUnsigned(debug)でも書き出しは可能。
- AndroidManifestを記述によっては不可(?)。
apkのインストールに必要な項目
PCと端末の接続に必要な項目
機種やバージョンに依存する項目が含まれます。
- 開発者向けオプションを有効にする
- [設定]>[端末情報]>[ビルド番号]を7回タップで表示されるようになります。
- USBデバッグを有効にする
- [開発者向けオプション]>[USBデバッグ]で設定します。
- 設定画面では有効になっていても内部的に有効になっていない場合があります。ON/OFFを切り替えると有効になります。
- 有効になっている場合、通知一覧に表示されます。
- USB等で物理的に繋ぐ
- 端末上部のアイコンで確認をしてください。
- 接続モードに切り替え
- PCとファイル転送等を行う場合、通常MTP(Media Transfer Protocol)を選択します。
- 一部端末(Nexus 5Xで確認)では、表示上でMTPになっていても、内部的にMTPとなっていない場合があります。再度MTPを選択することで設定されます。
- 通知一覧に表示されます。
- 特定のPCからのUSBデバッグを許可する
- 4.2.2以降のバージョンでは接続時(書き込み時?)に、端末上のポップアップで許可が求められます。
- [開発者向けオプション]>[USBデバッグの許可の取り消し]にて、許可のし直す必要がある場合があります。
- PCに機種固有のドライバーが正常にインストールされている
- Windowsの場合、デバイスマネージャーにてステータスを確認可能です。
- 手動で最新版のドライバを参照する必要がある場合があります(XPERIAで確認)。
- Windowsの場合、デバイスマネージャーにてステータスを確認可能です。
インストール方法
以下のいずれかになるかと思います。
- Unityの[Build Setting]>[Build And Run]
- 接続中のAndroidにインストールを行います。
- ビルドが成功してもインストールが失敗した場合、apkは書き出されません。
- ファイラー(Macの場合AndroidFileTransfer等)でapkファイルを端末に転送し、端末上でファイルマネージャーアプリを使ってインストール
- adbコマンド
インストールに必要な項目
- AndroidManifestが適切に記述されている
- ネイティブプラグインを使用する場合などに必要になります。
- 複数のネイティブプラグインを使用している場合等に、手動でマージする必要がある場合があります。
- 必要な空き容量がある
- 互換性が異なるバージョンが競合していない
- Unityの[Player Setting]>[Setting for Android]>[Other Setting]>[Bundle Identifier]によって区別されます。
- 基本的に上書きが可能。
- 対象のAPI Level(SDK Version)を下げた場合などに、一度アプリを削除する必要があります。
- アプリで設定されている最小のAPI Level(SDK Version)を満たしている。
- Unityの[Player Setting]>[Setting for Android]>[Other Setting]>[Minimum API Level]より設定可能。
- AndroidManifestにminSdkVersionの記述がある場合、そちらが優先されます。
UnityでAndroidのデバッグをする時に便利だったツール
UnityのみでAndroid開発をする人にとってAndroid Studioは機能が多すぎると思いました。
- android-sdk-macosx/tools/monitor(Macの場合)
- 接続中のAndroid端末のログを確認できます。
- DeployGateのリモートLogCat
- DeployGateアカウントで紐づけられたアプリのログがリモートで取得できます。
- 導入はこちらのアセットが役に経ちました。anchan828/deploygate-with-unity:UnityでDeployGateを使うためのアセット