FlutterFlutter

Flutter 编译模式debug和release判断

2019-10-18  本文已影响0人  calary

一、前言

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

二、运行模式

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

三、运行模式区分


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

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

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

第二种、通过编译常数识别
通过断言只能写出debug模式下运行的代码,通过Dart提供的编译常数,我们还可以写出只在Release下执行的代码。Dart提供了一个布尔常量kReleaseMode,可用来判断是否Release模式

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

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

四、具体使用

自由发挥吧。。。

参考链接:

上一篇 下一篇

猜你喜欢

热点阅读