Unityでスマホゲームを作るなら、iOS/Android両対応がいいですよね!!
僕は最近やっとAndroidの実機を買ったのですが、インストールの方法やら色々最初は何度もググってた!
そんな、UnityでのAndroidアプリ開発で引っ掛かりそうなところのまとめです!
- 実機で検証する方法
- obbファイルの転送方法
- アクセス権限のリクエスト
- AndroidManifestを独自のものにする
- 出力されたAndroidManifestファイルを確認する
- HTTP通信が失敗する
実機で検証する方法
adbコマンドを使って下記の手順でインストールできます。
でインストールできます。
obbファイルの転送方法
apkファイルは100MBまでというルールがあるために、obbファイルを作成する場合があります。Unityでobbファイルを出力した場合、実機で確認する際にファイルを転送してあげないとシーン遷移できなかったりするバグが発生します。(これでかなり時間費やした…😭)
obbファイルの転送方法は下記の通りです。
$ adb push android.main.obb /storage/emulated/0/Android/obb/<パッケージ名>/main.<ビルド番号>.<パッケージ名>.obb
必要な部分だけ書き換えていただければ転送できます。
アクセス権限のリクエスト
位置情報機能のアクセスや、カメラのアクセスなどをユーザに許可して欲しい場合の実装方法です。
iOSの場合、位置情報へアクセスする場合公式ドキュメントのコードを参考にすればリクエストを表示してくれたのですが、androidの場合だとアクセス権限をリクエストしてくれませんでした。(ここはバージョンの関係などもあるかもしれません)
そのため、明示的に権限をリクエストする方法をとりました。
#if UNITY_ANDROID Permission.RequestUserPermission(Permission.FineLocation); #else // TODO: 他プラットフォームでの対応 #endif
というように実装することで位置情報機能にアクセスする権限をリクエストするダイアログを表示することができます。
他にリクエスト可能なPermissionについては、こちらの公式ドキュメントを参考にしてください。
なお、UnityEngine.androidの名前空間を利用するため、android以外のプラットフォーム選択時でのビルドでエラーを吐く場合があるかもしれません。(ここは検証してません)その場合はC#のプリプロセッサディレクティブを使ってプラットフォームで分けてあげれば大丈夫だと思います。
AndroidManifestを独自のものにする
Assets/Plugins/Android/<ここ>
にmanifestファイルをおけばビルド時にマージしてビルドしてくれます。
出力されたAndroidManifestファイルを確認する
ここにあります。
/Temp/gradleOut/build/intermediates/ merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml
HTTP通信が失敗する
AndroidでHTTP通信が失敗するを参考にしていただければと思います。
- サーバをHTTPS対応にする
- HTTP通信を許可する
の2パターンの解決方法があります。