【问题标题】:Change constant values when building a release edition构建发布版本时更改常量值
【发布时间】:2016-10-24 22:34:36
【问题描述】:

我正在 Eclipse 中使用 ADT for android 进行开发。
在我的应用程序中,我有一些常量可以帮助我轻松调试我的应用程序。
例如,我有:
public static final boolean DEBUG_TOAST_LOGS = true;
这有助于我在屏幕上烤一些日志。
每次我打算构建一个版本时,我都必须通过我的 常量并将它们的值设置为适合发行版的值,这有点痛苦。
现在我想要的是一种构建我的应用程序的方法,使用两种配置:一种用于调试模式,另一种用于发布模式发布模式 应该将我的常量设置为适当的值。我怎么不能这样做?你有什么建议?满足我需求的最佳方法是什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: android eclipse build-process release-mode debug-mode


    【解决方案1】:

    我不确定您是否使用Gradle 作为构建系统。如果这样做,您可以设置特定于构建类型的资源,例如布尔值 debug 将是 true 用于调试构建类型,而 false 用于发布构建类型。

    build.gradle

    android {
    
        defaultConfig {
            ...
            resValue "bool", "debug", "true"
        }
    
        buildTypes {
            release {
                ...
                resValue "bool", "debug", "false"
            }
        }
    
        ...
    }
    

    Application.java

    public class Application extends android.app.Application {
        @Override
        public void onCreate() {
            super.onCreate();
            if (getResources().getBoolean(R.bool.debug)) {
                ... // debug logic here
            }
            ...
        }
    }
    

    【讨论】:

      【解决方案2】:

      @hidro 的解决方案很好,但每次您想要访问该值时都需要一个不必要的getResources()... 调用。

      还有一种可能:

      build.gradle

      android {
        buildTypes {
          debug {
            buildConfigField "boolean", "DEBUG_TOAST_LOGS", "true"
          }
      
          release {
            buildConfigField "boolean", "DEBUG_TOAST_LOGS", "false"
          }
      }
      

      }

      然后,在你的代码中,你可以写:

      if (BuildConfig.DEBUG_TOAST_LOGS) {
        // ... enjoy your toasts ...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多