Android Lint抱怨正在使用assert()
,并建议使用 BuildConfig.DEBUG条件检查。
我完全理解为什么断言在Android上使用不安全,但完全是什么“BuildConfig.DEBUG条件检查”?
如何修改以下示例代码?
Context ctx = getContext();
assert (ctx instanceof FragmentActivity);
fragment_manager = ((FragmentActivity) ctx).getSupportFragmentManager();
答案 0 :(得分:27)
我认为lint试图说的是为assert语句添加BuildConfig.DEBUG检查
if(BuildConfig.DEBUG)
断言(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来进行条件检查。