为什么制作Release包之后启动app崩溃或者部分功能异常?

报错信息类似如下:

原因:

flutter在制作release包时会默认开启混淆/压缩,如果不显示关闭或者配置混淆规则,plugin中的类和资源会混淆或者被优化调,导致无法加载plugin需要的相关类和资源。

解决方案:

方案一:关闭混淆

在android/app/build.gradle的builgTypes的release里里增加如下配置:

minifyEnabled false//删除无用代码
shrinkResources false//删除无用资源

示例:

buildTypes {
        release {
                signingConfigsigningConfigs.releaseminifyEnabledfalse //删除无用代码
                shrinkResourcesfalse //删除无用资源
        }
}

方案二:修改混淆配置

在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.**  { *; }
#高德地图SDK配置
-keep   class com.amap.api.maps.**{*;}
-keep   class com.autonavi.**{*;}
-keep   class com.amap.api.trace.**{*;}
#高德等位SDK配置
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.loc.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}

然后在android/app/build.gradle文件的builgTypes的release里指定混淆文件。示例:

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

如以上内容仍未解决您的问题,请创建工单
新用户
福利
示例
中心
常见
问题
智能
客服