Android11がリリースされてから結構時間が経ってしまっていますが、
最近ようやくAndroid11対応を行いました。
今週1週間はほぼAndroid11対応に時間を割いてしまったので、今後の為に遭遇したエラーや、対処法などについてメモしておきたいと思います。
Android11端末でアプリの挙動がおかしくなったとの報告が多数あがった
最近になって僕が仕事で開発しているアプリで、Android11にアップデートした端末で、おかしい挙動になっているアプリが多く出ているという報告を受けました。
最近はAndroidのメジャーアップデート時に、そこまで不具合が多発するということはなかったので、Android11も大丈夫だと思ってましたが、
今回は挙動のおかしいアプリが多く、ヤバいと思ったので、本腰を入れて対応を行うことにしました。
Android11端末がなかったのでPixel5を購入
手元にAndroid11端末がなかったので急遽Pixel5を購入しました。
久しぶりにAndroid端末を購入しましたが、Androidの進化がエグいなと感じました。
ちょっと前までは、iOS端末しか欲しくない・Android端末は仕事で使うから仕方なく購入していたのですが、
今回のPixcel5(Android11)は操作性やUIなどが、もうiOS端末に引けを取らないレベルまで進化している気がしました。
ここ数年の間に登場している新型iPhoneは、カメラ性能はすごいけど、進化・革新的な部分をあまり感じなくなってきているので、
そういった意味でも、Pixcel5はもうプライベートでも使いたくなるAndroid端末だなと思いました。
すみません。ちょっと話がそれました。
【Unity】Android11対応中に遭遇したエラー1
ということでAndroid11端末をゲットしたので、アプリをインストール・起動してAndroid Studioでログを出力してみたところ、以下のようなエラーを吐いていました。
java.lang.IllegalArgumentException: Service not registered: lx@beaaac4
at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1757)
at android.app.ContextImpl.unbindService(ContextImpl.java:1874)
at android.content.ContextWrapper.unbindService(ContextWrapper.java:792)
at ci.b(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):1)
at ci.a(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):6)
at ly.A(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):10)
at li.a(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):2)
at ec.run(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):3)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at jb.run(:com.google.android.gms.dynamite_measurementdynamite@203915097@20.39.15 (150400-0):6)
Service関連のエラーっぽいのですが、自分ではServiceは組み込んでいないし、「gms.dynamite_measurementdynamite」でエラーが出ているので、広告SDKや、Firebase Analyticsなどの計測SDKからGoogleサービスを呼び出されている可能性が高そうです。
上記に関して色々調べたのですが、 「端末を再起動したら直った」とか、「Serviceの呼び出し方が間違っている」などの結果が多く、今の所解決策はわかってません。
ただ、こちらのエラーに関してはエラーが出てはいるものの、クラッシュには至っていないので、とりあえずアプリの動作には影響がないと判断しました。
【Unity】Android11対応中に遭遇したエラー2
2つ目は、エラーというかアプリ起動時の画面から次の画面へ遷移しない現象に遭遇しました。
こちらに関しては、なぜかエラーログも吐かず、クラッシュログも出ず、ただ画面が固まった状態になるという厄介な状態になりました。
このアプリは100MB以上のアプリだったので、apkとobbファイルを生成するものだったのですが、こちらに関してはUnityからAndroid端末にアプリを直でインストールしようとした事が原因だったと思われます。
まだ調査中の段階ですが、Android11ではストレージへのアクセスが制限されたことにより、UnityからAndroid端末にapkとobbファイルのインストールしようとしても弾かれてしまっていると思われます。
apkとobbファイルを分割せず、1つのapkとしてUnityからAndroid端末にインストールしたら成功しました。
なので、apkとobbファイルでの動作確認を行うにはGoogle Playにアップロードしないと今後もしかしたらできなくなるのかな?と思いました。(間違っているかもですが)
【Unity】Android11対応中に遭遇したエラー3
次に遭遇したのは、以下のエラーでした。
App/Temp/gradleOut/launcher/build/intermediates/merged_manifests/release/AndroidManifest.xml:32: AAPT: error: unexpected element <queries> found in <manifest>.
こちらに関しては、gradleがelementを認識できないことによるエラーっぽいです。
こちらに関しては、下記を参考にGradleのPluginバージョンを最適なものに変更することで解決できました。
android-developers.googleblog.com
僕の環境の場合、Pluginバージョンが3.4.0だったのですが、3.4.3にアップデートすることでエラーが解消されました。
あとは、Android11端末でアプリ起動時にクラッシュする問題が発生した時は、UnityAdsのSDKが古かったようで、SDKをアップデートしてビルドし直したら解消されました。似たようなエラーが発生した場合は同様の対応を行うようにしたいと思います。以下を参考にしました。
とりあえずは今の所、上記にあげたもので全部ですが、まだAndroid11対応が全て終わっている訳ではないので、他に遭遇したエラーがあったら追記したいと思います。