web-dev-qa-db-ja.com

ProguardでFlutterアプリを縮小する方法は?

私はすでにFlutterアプリを作成しました。リリースapkは約14MBです。私はこれを縮小する方法を検索し、これを見つけました: https://flutter.io/Android-release/#enabling-proguard

しかし、私の質問は、ステップ1で使用したすべての追加ライブラリをどのように知ることができるかということです。それらを知るためのコマンドはありますか、それとも私がpubspec.yamlに追加したすべての依存関係ですか?

どのようにこのファイルにそれらを実装する必要がありますか/Android/app/proguard-rules.pro

5
Jan D.M.

まず、ビルドファイルで縮小と難読化を有効にします。 build.gradleフォルダ内にある/Android/app/ファイルを見つけて、太字の行を追加します

Android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.debug     

            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro' 

        }
    }
}

次に、Flutterラッパーコード全体を保持する構成を作成します。 /Android/app/proguard-rules.proファイルを作成し、その中に挿入します。

#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
2

Firebaseを使用している場合は、 Firebase Auth でProGuardを使用するとFlutterビルドがクラッシュするをご覧ください。

次に、pubspec.yamlの依存関係を考慮する必要があります。純粋なDartパッケージはすぐに無視できます。プラグインを探しているだけです。これらのプラグインのうち、既存のライブラリを利用するプラグインに関心があります。これらをgradleに追加した可能性があります。これらは、名前の短縮から保護する必要があるものです。

最も簡単なアプローチは、それを試して、どのパッケージ名がNoClassDefFoundErrorにポップアップするかを確認し、それらを繰り返し追加し続けることです。

レミが言うように、あなたの利益は最小限になるので、それは本当に面倒な価値があります。今後のリリースでは、APKサイズにいくつかの改善が見られるはずです。

0
Richard Heap