您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Flutter 编译模式debug和release判断

Flutter 编译模式debug和release判断

来源:二三四教育网

一、前言

Flutter 支持 3 种运行模式,包括 Debug、Release 和Profile,我们在开发中希望debug模式下展示尽可能多的信息给我们,方便排查问题等,但是在release模式下编译的目的是最终的线上版本,给客户使用,这些信息是不需要展示的,这个时候对我们最重要的是代码尽可能快、稳定的运行,所以在release模式下我们会选择关闭打印信息等。

二、运行模式

Flutter 支持 3 种运行模式,包括 Debug、Release 和Profile,我们一般使用的是Debug和Release

  • Debug模式对应Dart的JIT模式,该模式会打开所有的断言(assert),调试信息等,并支持Hot reload(热重载),但是并没有优化代码执行速度、二进制包大小和部署,所以在debug模式下我们会感觉到卡顿,不流畅等问题
  • Release模式对应Dart的AOT模式,该模式会关闭所有断言,尽可能多的调试信息。此外还优化了应用快速启动,代码快速执行,以及二进制包的大小,所以在release模式下,才是Flutter真正的实力,非常流畅。

三、运行模式区分

  • 1、通过断言识别
  • 2、通过编译常数识别

第一种、通过断言识别
根据模式的介绍,可以知道Release模式关闭了所有的断言,因此我们可以借助断言,写出只在Debug模式下生效的代码

 assert((){
     // Do something for debug
     print('这是asset下的输出内容');
     return true;
 }());

需要注意的是,匿名函数声明调用结束时追加了小括号(),这是因为断言只能检查布尔值,这里使用括号强制执行这个始终返回true的匿名函数,以保证函数里的代码被执行

import 'package:flutter/foundation.dart';
if (kReleaseMode){ // 
      //release
}else {
     //debug
}

注意,assert的代码在打包时不会打包到二进制包中,而常数识别,debug代码虽然不会执行,但会打进二进制包中,增大包的体积

四、具体使用

  • 打印信息(print)的是否打印控制
  • 开发环境和生存环境的配置信息自动切换

自由发挥吧。。。

参考链接:

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务