FlutterでAndroid App Bundleを試してみる


Android App Bundle とはなにか

ユーザの端末に最適な apk を提供するための新しい仕組みです。

  • デベロッパーはAndroid App Bundle の形式のファイルをGoogle Playにアップする
  • Android App Bundle の形式のファイルの拡張子は .aab
  • aab にはアプリのバイナリやリソースが全て含まれている
  • Google Playはaabをもとに、ユーザー毎に最適なapkを作成(ビルド)し配信してくれる

aabファイルは「全部入り」になっていて、Google Playはそこから必要なリソースだけピックアップしてapkを再構築してくれます。ユーザの手元には必要なリソースだけが含まれたapkが配信される、という塩梅。

必要なリソースだけが含まれるのでapkサイズの削減につながります。

ちなみに Android App Bundle を利用するためには Google Play App Signing を使う必要があります。Google Play側でapkの再構築と署名を行うため、アプリ署名鍵がGoogle Play側にないとダメなんですね。

Flutter と Android App Bundle

FlutterはFlutter runtimeなどのネイティブコードを内包しています。Google Playが64bit対応必須になったため、1つのapkで済ませようとすると armeabi-v7a (32bit) と arm64-v8a (64bit) の両方を内包した大きなバイナリになってしまいます。

Flutterはバイナリサイズの大きさが弱点のひとつなのでこれはよろしくない。

ということで、Flutterは1.7でAndroid App Bundleに対応しています。

32bit用と64bit用の2つのapkを作ってもいいのですが、aabにすれば1つだけアップロードすればあとはGoogle Playが良しなにやってくれて便利、という感じですね。

実際どうやるの?

> flutter build apk

> flutter build appbundle

に変えるだけです。

参考URL




関連(するかもしれない)記事


おススメ