先日のFlutter Meetup TokyoでLT*1した通り、WebviewCheckerアプリ*2をaabで配信していたところ、次のようなメールが届きました。
2019 年 8 月 1 日より、ネイティブ コードを使用するすべてのアプリにおいて、アップデートを公開するには 32 ビット版に加えて 64 ビット版を提供することが必須となります。本年 1 月にもお知らせいたしましたとおり、今後は 64 ビット用コードのみをサポートする Android デバイスへの移行が進むと予想されており、今回の 64 ビット必須化はこうしたイノベーションに対応するための措置となります。 弊社にて状況を確認しましたところ、お客様のアプリ* で 64 ビット版がまだ提供されていないものが見つかりました。期限が近づいておりますので、ご確認のうえご対応をお願いいたします。
この方針については アプリが 64 ビットデバイスをサポートしていることを確認する | Android Developers をご確認ください。 JavaとかKotlinのみのプロジェクトだと問題がないので、気にならない人は気にならない系の問題ですね。
どうすれば良さそう?
flutter build appbundle
コマンドに対応が入ったので、そちらを使ってみるのが良さそうです。
2019年5月27日9時現在では、master/devブランチに対応コミットが入っています。 beta/stableブランチはv1.5.1の状態なので、まだ対応が取り込まれていません。
apkコマンドに関しては下記issueがありますが、flutterコマンドだけでどうにかなるところまでは至っていないように見えました。
今後は appbundle
コマンドがメインになりそうなので、DeployGateなどのテスト配信で一工夫必要になるかも……🤔
[追記]
apkは、armeabi-v7aとarm64-v8aを別々にファイルを作れるので、Play Storeには両方ともアップすればOKです。
— najeira (@najeira) 2019年5月27日
najeiraさんに補足いただきました! 2つ作って両方アップロードすることで対応できるそうです。
[追記 2019.03.05]
AppBundleで作成したアプリがクラッシュする原因の特定に成功したとのことで、v1.7.0から対応が入ったようです。
余談
aabビルドの発表の時に「aabビルドしてもそんなに小さくならなかった、soファイルの削減するものが特にないからかな。」と言っていたけれど、これってapkもaabも32bit用のsoだけ入っていたからなんじゃないかという気が。 恥ずかしいので穴掘って埋まってきます。
*1:こちらのブログです dr1009.hatenablog.com