什么是“BuildConfig.DEBUG条件检查”?

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

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

如何修改以下示例代码?

 Context ctx = getContext(); assert (ctx instanceof FragmentActivity); fragment_manager = ((FragmentActivity) ctx).getSupportFragmentManager(); 

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

如果(BuildConfig.DEBUG)

assert(ctx instanceof FragmentActivity);

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

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

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

  if(BuildConfig.DEBUG && !(ctx instanceof FragmentActivity)) throw new RuntimeException(); 

而不是断言。

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

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