今回は Google Play Console で2019年8月1日以降に公開する方法をご紹介いたします。今現在、第3弾の新しいアプリの公開準備をしておりますが、久々の公開という事もあり、様々な変更点がありましたので覚え書きしたいと思います。
前提条件 ・Windows10 Pro 64Bit 1803 ・Visual Studio 2017 Community v15.8 ・Xamarin 4.11.0.776 (NuGet Xamarin.Forms 2.4.0.282)
1.ターゲットフレームワーク
これは皆さんご存知だと思いますが、2018年以降毎年ターゲットフレームワークは上げていくのがマストとなっています。今年は2019年8月以降に新規公開をするアプリについては Android 9.0 Pie に設定する必要があります。 ※既存のアプリに関しては2019年11月まで猶予があります。 ※最小 Android バージョンについては任意のバージョンのままで大丈夫です。
2.Android9対応
ターゲットフレームワークを変更したことにより、Android9ユーザーのエラーが急増しました。以下のようなエラーが Google Play Console で検出しました。これはForegroundService (Android7 以前の BackgroundService から移行されました)にパーミッションが必要になったようです。
java.lang.RuntimeException: at android.app.ActivityThread.handleCreateService (ActivityThread.java:3621) at android.app.ActivityThread.access$1500 (ActivityThread.java:201) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1702) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:193) at android.app.ActivityThread.main (ActivityThread.java:6801) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by: java.lang.SecurityException: at android.os.Parcel.createException (Parcel.java:1950) at android.os.Parcel.readException (Parcel.java:1918) at android.os.Parcel.readException (Parcel.java:1868) at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:5174) at android.app.Service.startForeground (Service.java:695) at com.CompanyName.AppName.BackgroundService.n_onCreate (Native Method) at com.CompanyName.AppName.BackgroundService.onCreate (BackgroundService.java:40) at android.app.ActivityThread.handleCreateService (ActivityThread.java:3609)
Caused by: android.os.RemoteException: at com.android.server.am.ActivityManagerService.enforcePermission (ActivityManagerService.java:9376) at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked (ActiveServices.java:1199) at com.android.server.am.ActiveServices.setServiceForegroundLocked (ActiveServices.java:880) at com.android.server.am.ActivityManagerService.setServiceForeground (ActivityManagerService.java:20697) at android.app.IActivityManager$Stub.onTransact$setServiceForeground$ (IActivityManager.java:10466)