How to minify a Flutter app with Proguard?

后端 未结 2 1591
迷失自我
迷失自我 2021-02-04 09:19

I already made a Flutter app. The release apk is about 14MB. I searched methods to minify this and found this ons: https://flutter.io/android-release/#enabling-proguard

相关标签:
2条回答
  • 2021-02-04 10:02

    First, we will enable shrinking and obfuscation in the build file. Find build.gradle file which sits inside /android/app/ folder and add lines in bold

    android {
    
        ...
    
        buildTypes {
    
            release {
    
                signingConfig signingConfigs.debug     
    
                minifyEnabled true
                useProguard true
    
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    
            }
        }
    }
    

    Next we will create a configuration which will preserve entire Flutter wrapper code. Create /android/app/proguard-rules.pro file and insert inside:

    #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.**  { *; }
    
    0 讨论(0)
  • 2021-02-04 10:18

    If you are using firebase, see Flutter build crashes using ProGuard with Firebase Auth

    Next, you need to consider the dependencies in pubspec.yaml You can immediately ignore any pure Dart packages - you are just looking for plugins. Of these plugins, you are just interested in ones that make use of existing libraries. You will likely have added these to gradle. Those are the ones you need to protect from name shortening.

    The simplest approach may just be to try it and see what package names pop up in the NoClassDefFoundError and keep iteratively adding them.

    As Remi says, your gain will be minimal, so is it really worth the hassle. You should see some improvements in APK sizes over the coming releases.

    0 讨论(0)
提交回复
热议问题