什么是"BuildConfig.DEBUG条件检查"?

Rém*_*émi 24 android

Android Lint抱怨assert()使用,并建议使用BuildConfig.DEBUG条件检查.

我完全理解为什么断言在android上使用是不安全的,但究竟什么是"BuildConfig.DEBUG条件检查"?

如何修改以下示例代码?

Context ctx = getContext();
assert (ctx instanceof FragmentActivity);
fragment_manager = ((FragmentActivity) ctx).getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)

nan*_*esh 27

我认为lint试图说的是为assert语句添加BuildConfig.DEBUG的检查

如果(BuildConfig.DEBUG)

assert(ctx instanceof FragmentActivity);

这样断言只有在你测试应用程序时才有效,但是在发布版本中,断言不会被调用

导出发布版本时,BuildConfig.DEBUG将为false.

编辑:看起来你应该做类似下面的事情,而不是使用断言

 if(BuildConfig.DEBUG && !(ctx instanceof FragmentActivity))
      throw new RuntimeException();
Run Code Online (Sandbox Code Playgroud)

而不是断言.

来源:http://tools.android.com/recent/androidstudio045released

一些新的lint检查,特别是一个标记assertion关键字使用的检查.这在设备上无法可靠地运行,您应该使用BuildConfig.DEBUG来进行条件检查.