えんじにあ雑記!

開発していて学んだことをまとめていきます!

UnityでAndroidアプリを作る時のいろいろ(備忘録)

f:id:flat-M_M:20200407231225j:plain

Unityでスマホゲームを作るなら、iOS/Android両対応がいいですよね!!

僕は最近やっとAndroidの実機を買ったのですが、インストールの方法やら色々最初は何度もググってた!

そんな、UnityでのAndroidアプリ開発で引っ掛かりそうなところのまとめです!

実機で検証する方法

adbコマンドを使って下記の手順でインストールできます。

  1. USBでandroid実機とPCを接続する
  2. スマホ側で諸々のアクセスを許可する
  3. ターミナル上で、apkファイルがあるディレクトリに移動する
  4. adb install <ファイル名>.apk

でインストールできます。

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パターンの解決方法があります。