shuhelohelo’s blog

Xamarin.Forms多めです.

Xamarin.Forms : アプリのターゲットをAndroid10にする

devblogs.microsoft.com

Android 10への対応を行わなければならないということ.そうだったのか...

developer.android.com

  • 2020/8/3以降 : 新規アプリはAndroid 10(API 29)以上を対象とする必要がある.
  • 2020/11/2以降 : すべてのアプリのアップデートはAndroid 10(API 29)以上を対象とする必要がある.

なるほど.

コンパイルターゲットを変更する

ソリューションエクスプローラAndroidプロジェクトで右クリックしてコンテキストメニューからプロパティを開いて,Applicationで以下のようにCompile using Android version: (Target Framework)Android 10.0 (Q)にする.

f:id:shuhelohelo:20200708094244p:plain

ターゲットAPIを変更する

引き続きAndroidプロジェクトのプロパティでAndroid ManifestTarget Android version:という項目があるので,それをAndroid 10.0 (API Level 29 - Qにする.

f:id:shuhelohelo:20200708094745p:plain

ビルドしたらエラーが出た

f:id:shuhelohelo:20200708122838p:plain

利用しているライブラリがXamarin.Android.Support.CompatXamarin.Android.v7.AppCompatを必要だけど見つからない,ということなのでインストールする.

(20200715追記)
どうやらこれはSyncfusionのライブラリがこれら必要としているため.

パッケージはAndroidプロジェクトだけにインストールすれば良いようだ.

Xamarin.Forms 4.5以降のアプリはここまででいいのかな?

Android Xに移行する

(注:Xamarin.Forms 4.7以降はAndroidXに対応しているので,特にすることはない)

docs.microsoft.com

devblogs.microsoft.com

James Montemagnoさんによると, Android10をターゲットにするならAndroidXライブラリへの移行も検討すべき,とのこと.

AndroidXライブラリは古いAndroidサポートライブラリを置き換えるもので,ターゲットをAndroid10にすると,Xamarin.FormsもXamarin.EssentialsもAndroidXを使うようになっている,とのこと.

何か作業する必要はあるのだろうか詳しくはこちら.

devblogs.microsoft.com

移行ツールを使う

Visual Studio 2019 Preview 16.5以上であること.

Visual StudioTools > Optionsを開く.

次にAndroid Settingsを検索する.

その中でEnable AndroidX Migrator(Experimental)とあるので,チェックをつけて有効にする.Okボタンを押す.

ソリューションエクスプローラAndroidプロジェクトを右クリックすると,コンテキストメニューMigrate to AndroidXという項目があるので,それをクリックする.

f:id:shuhelohelo:20200708100224p:plain

以下のような確認ダイアログが表示される.

f:id:shuhelohelo:20200708100333p:plain

「移行処理はキャンセルできないし,やり直しもできないけどいい?」

バックアップをとるなり,gitでコミットしておくなりして,対策してからYesを押す.