Flutter发行发行版时会删除调试模式代码吗?

时间:2018-11-09 12:03:08

标签: debugging dart flutter assert production

我想知道将密码直接放入Dart代码中是否安全,如下所示。 Flutter编译发布代码时会删除代码吗?当然,我想确保代码不能反编译,以便可以提取用户名和密码。

bool get isInDebugMode {
  bool inDebugMode = false;
  assert(inDebugMode = true);
  return inDebugMode;
}

if(inDebugMode){
  emailController.text = 'random@email.com';
  passwordController.text = 'secret';
}

2 个答案:

答案 0 :(得分:3)

inDebugMode是const值时,摇树会删除该代码。

“安全”是一个很强的词,尽管即使摇晃也可以删除代码。
您可能会犯一个错误,导致摇树保留代码。
您可能会将代码提交给CVS存储库。
...

您可以使用

  • 一个常量值
const bool isProduction = bool.fromEnvironment('dart.vm.product');
if(isProduction) {
  ...
}
  • 具有lib/main.dart的不同flutter run -t lib/debug_main.dart文件

  • 或上述的assert方法(另请参见How to exclude debug code

答案 1 :(得分:3)

您提供的代码不会摇摇欲坠。由于isInDebugMode不是常数。

相反,您可以通过以下方式使用assert

assert(() {
  emailController.text = 'random@email.com';
  passwordController.text = 'secret';
  return true;
}());