android – 为什么BuildConfig类使用Boolean.parseBoolean()而不是文字值?

在查看由 Android Studio和Gradle插件生成的BuildConfig类时,可以看到使用Boolean.parseBoolean(String)调用初始化BuildConfig.DEBUG字段,而不是使用其中一个布尔文字true或false.

当我使用Gradle添加自定义构建属性时,我会这样做:

android {
    buildTypes.debug.buildConfigField 'boolean','SOME_SETTING','true'
}

但是看看生成的BuildConfig告诉我谷歌采用了与DEBUG标志不同的方法

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");

  // more fields here

  // Fields from build type: debug
  public static final boolean SOME_SETTING = true;
}

使用Boolean.parseBoolean(String)而不是文字有什么好处?

解决方法

BuildConfig类中的布尔文字代码中使用时会产生IDE警告(至少在Android Studio中).例如,当在布尔表达式中使用它时,Android Studio会(错误地)建议简化布尔表达式,因为常量值总是相同的(对于当前的构建变体).

此警告仅仅是因为Android Studio不知道BuildConfig.soME_SETTING中的最终值可能与其他构建变体不同.

为了保持代码干净且没有警告,您可以通过添加如下IDE注释来告诉Android Studio忽略此特定警告:

但这又会给代码增加一些噪音并降低可读性.通过使用Boolean.parseBoolean(String)方法初始化常量字段,您实际上会欺骗Android Studio,它将无法再完全分析您的布尔表达式,从而不再生成警告.

这种方法非常有用,因为它可以保持代码的清洁和可读性,而无需关闭重要的代码分析和生成警告.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...