执行
flutter build apk --release
打包 apk 后,安装到手机,打开直接闪退
问题排查
1、检查权限
开始以为是权限没有配置,增加了很多可能需要用到的权限,无效
2、配置打包架构
应该是这个是最不会出错误的,我还是手动设置了一下android/app/build.gradle,无效
defaultConfig {
...
ndk {
abiFilters "arm64-v8a","armeabi-v7a"
}
}3、打包混淆
先关闭混淆,再打包试试,同样再文件 android/app/build.gradle 中修改
buildTypes {
release {
shrinkResources false
minifyEnabled false
}
}重新打包,安装后成功打开 app
确定是 混淆 的问题,找 AI 要了一份过滤的文件 proguard-rules.pro ,放到 android/app/ 目录下,内容如下
############################################
## Flutter 基础
############################################
# 保留 Flutter 核心类和插件
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.embedding.** { *; }
-keep class io.flutter.embedding.engine.** { *; }
-keep class io.flutter.embedding.android.** { *; }
-keep class io.flutter.plugins.** { *; }
# 保留 Dart JNI 相关
-keep class io.flutter.** { *; }
# 不要警告 Flutter
-dontwarn io.flutter.**
############################################
## Google / AndroidX 常见库
############################################
-dontwarn androidx.**
-dontwarn com.google.**
# 保留反射用到的类
-keepattributes *Annotation*
-keepattributes InnerClasses
############################################
## 常见 Flutter 插件
############################################
# device_info_plus
-keep class dev.fluttercommunity.plus.device_info.** { *; }
# path_provider
-keep class io.flutter.plugins.pathprovider.** { *; }
# shared_preferences
-keep class io.flutter.plugins.sharedpreferences.** { *; }
# sqflite
-keep class com.tekartik.sqflite.** { *; }
# webview_flutter
-keep class io.flutter.plugins.webviewflutter.** { *; }
-keep class android.webkit.** { *; }
# image_picker
-keep class io.flutter.plugins.imagepicker.** { *; }
############################################
## 其他通用配置
############################################
# 保留本地方法
-keepclasseswithmembernames class * {
native <methods>;
}
############################################
## Baidu Map SDK
############################################
-keep class com.baidu.** { *; }
-dontwarn com.baidu.**我用到了百度地图的插件,根据就自己插件情况自己增减
最后配置 android/app/build.gradle
buildTypes {
release {
...
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}打包搞定😄