切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
Flutter打包release APK闪退百分百解决方法
作者:ych
### Flutter打包release APK闪退 在DEBUG模式下没有任何问题,但在打包release时却一直闪退。 跟着官方的步骤:https://flutterchina.club/android-release/ 走到: 使用命令行: `cd`( 为您的工程目录). 运行`flutter build apk` (flutter build 默认会包含 --release选项). 打包好的发布APK位于`/build/app/outputs/apk/app-release.apk`。然后把包在 手机上安装后一直闪退,就是打不开。 尝试切换命令: ``` flutter build apk --target-platform android-arm64 ``` 打出来的包小了,但依然闪退。 ``` flutter build apk --target-platform android-arm ``` 依然闪退。 ### 寻找闪退解决办法 全网搜索到的贴子基本两种 >1.缺少so库文件,或so引用冲突造成,检查并修正可解决 2.切换上面提到的命令后可解决 3.`abiFilter`s配置缺失,补充或修改可解决 但是,我检查了上面几种,我的项目均不存在,于是才有了这篇小记。那么要如何解决呢?送鱼不如授渔。 ### Flutter打包闪退百分百解决的方法 DEBUG没问题,release有问题的不同点在于DEBUG有可视的错误,但release你看不到,这就无法定位问题,只能盲人摸象?不,有方法: #### adb logcat 命令行工具 Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用中使用 Log 类写入的消息。 命令行语法 要通过 adb shell 运行 Logcat,一般用法是: ``` [adb] logcat [
] ... [
] ... ``` 您可以将`logcat`作为 adb 命令运行,也可以直接在模拟器或关联设备的 Shell 提示中运行它。要使用 adb 查看日志输出,请转到您的 `SDK platform-tools/`目录并执行: ``` adb logcat ``` ### 过滤日志输出 日志消息的标记是一个简短的字符串,指示消息所源自的系统组件(例如,“View”表示视图系统)。 优先级是以下字符值之一(按照从最低到最高优先级的顺序排列): >V:详细(最低优先级) D:调试 I:信息 W:警告 E:错误 F:严重 S:静默(最高优先级,未曾输出过任何内容) 继续讲正题,那么到底如何使用它并解决闪退问题?跟着这个步骤来: 使用:`flutter doctor`检查你的环境是否有问题,没有继续 USB连接手机,确保USB调试,文件传输模式 cd到项目根目录下:`flutter run --release` 命令行运行:`adb logcat` 使用应用的包名通过logcat命令来过滤某个应用的日志?`adb logcat | grep "xxx"`, xxx是包名 点击你的release,查看命令行输出的报告,这时候你会看到错误信息,根据错误信息提示即可解决闪退。现在就跟DEBUG模式差不多了。 查看指定应用的日志 以查看包名为`com.test`的应用日志为例 使用`adb shell ps`查询得到应用进程号`PID`为 16180。如果进程过多,可以使用`adb shell ps | grep com.test`直接过滤出结果 ``` $ adb shell ps USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 2052 860 SyS_epoll_ 00000000 S /init root 2 0 0 0 kthreadd 00000000 S kthreadd root 3 2 0 0 smpboot_th 00000000 S ksoftirqd/0 root 5 2 0 0 worker_thr 00000000 S kworker/0:0H root 6 2 0 0 msm_mpm_wo 00000000 D kworker/u8:0 u0_a327 16180 563 1303504 139472 SyS_epoll_ 00000000 S com.test ``` 使用`adb logcat | grep 16180`过滤出该应用的日志 ### 其它常用命令 adb命令查看列出手机装的所有`app`的包名: ``` adb shell pm list packages ``` 列出系统应用的所有包名: ``` adb shell pm list packages -s ``` 列出除了系统应用的第三方应用包名: ``` adb shell pm list packages -3 ``` 推测一个包中可能带有的关键字: ``` adb shell dumpsys activity | findstr mFocusedActivity ``` 清除应用数据与缓存 ``` adb shell pm clear 应用包名 ``` ### 参考 https://juejin.im/post/5ce09ab6f265da1b6720dcf4 https://developer.android.com/studio/command-line/logcat?hl=zh-cn https://my.oschina.net/u/4339899/blog/3434602
相关推荐
Flutter ListView嵌套Listview问题和Column嵌套ListView问题
flutter How to solve SocketException: Failed host lookup
flutter fluttertoast弹窗工具的使用和封装
Flutter报错汇总
flutter网络请求框架dio基本使用
js加密处理实战
Flutter的数据转换及读取和解析
Flutter 获取文件缓存及清理缓存工具类库
Flutter基础组件
Flutter单一子元素组件
Flutter shared_preferences数据存储工具类库
flutter报错 Error: Connection refused
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1