🙌

Flutterでの Play Asset Delivery

2023/08/06に公開

はじめに

作成しているアプリのAppBudleをplayストアに上げようとした際に、「初期インストールのサイズは 150 MB 以下である必要があります。」 と表示されてしまいあげられませんでした。

調べたところ、Play Asset Deliveryを使えばいいとのことで、今回のアプリのAssetサイズは1GB以下であるため install-time を使用します。
Flutterでパッケージが公開されていたのでflutter_play_asset_delivery こちらを使います。

やったこと

https://developer.android.com/guide/app-bundle/asset-delivery/build-native-java?hl=ja
上記ドキュメントとパッケージのexample通りに your_flutter_project/android/ ディレクトリ下にapp_asset_packディレクトリを作成(exampleで使われていた名前をそのまま採用)
さらにapp_asset_pack/下にbuild.gradleファイルを作成する

build.gradle
// In the asset pack’s build.gradle file:
apply plugin: 'com.android.asset-pack'

assetPack {
    packName = "app_asset_pack" // Directory name for the asset pack
    dynamicDelivery {
        deliveryType = "install-time" // 今回は`install-time`を指定
    }
}

そしたら次に プロジェクトのアプリyour_flutter_app/android/app/にあるbuild.gradleassePacksを追加する

your_flutter_app/android/app/build.gradle
// In the app build.gradle file:
android {
    ...
    assetPacks = [":app_asset_pack"]
}

最後にプロジェクトの直下your_flutter_app/android/にあるsettings.gradleincludeを追加してandroid側のファイル操作は終了

settings.gradle
// In the settings.gradle file:
include ':app'
include ':app_asset_pack'

あとはapp_asset_pack/src/main/assets/にassetを置くだけでflutterから呼び出せる

// app_asset_pack/src/main/assets/flutter.png を作成した場合の例 (packageのexampleより
import 'package:flutter_play_asset_delivery/flutter_play_asset_delivery.dart';
...
image = FlutterPlayAssetDelivery.getAssetFile("flutter.png");

Discussion