AndroidStudio 使用Gradle 控制Log 日志输出

news/2024/5/20 2:51:28 标签: gradle

我们在开发APP的时候,在测试的时候需要打Debug 包,在正式发布的时候打 Release 包;但是在正式发布的时候我们需要把在研发阶段的Log日志打印给取消掉,设置用户不可见,研发可见。过多的打印Log日志也是会影响APP的性能的,所以我们就以此做区分!
1、常规的操作我们是创建Log管理类来管理Log日志打印
2、通过 配置gradle buildConfigField("boolean", "enableLog", "false")来进行管理
第一种方法就不在演示了。在这里只做下第二种效果的设置,在此之前简单的了解下buildConfigField 属性

/**
*@param type   类型
*@param name   指定的常量字段
*@param value  常量字段值(如果是字符串的话,这时候就需要对其字符串进行转义了"/" 进行转义处理即可)
*/
buildConfigField(String type,String name,String value);

编译Gradle 在 BuildConfig 类中自动生成 常量字段与常量值。为此我们可以使用该方法进行常量的储存,如appkey,等等!

打开 项目所在gradle 配置下相关属性,使用Gradle 的自定义BuildConfig字段 设置如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.wangly.java"
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        // 控制日志Log 输出打印
        buildConfigField("boolean", "enableLog", "true")
    }
    buildTypes {
        release {
           // 控制日志Log 输出打印
            buildConfigField("boolean", "enableLog", "false")
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
}

编译Gradle 查看 BuildConfig.java 增加了相关字段

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.wangly.java";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Fields from default config.
  public static final boolean enableLog= true;  //控制Log日志的打印
}

测试用例:

    public void outLogClick(View view) {
        Log.d("wangly", "得到的 Boolean 类型值:" + BuildConfig.enableLog);
        if (BuildConfig.enableLog) {  // 获取配置的字段
            LogHelper.e("wangly", "--------");
        }

        LogHelper.e("wangly","--------");
    }
}

打印结果:
这里写图片描述
Release 的就不在上传了!空白的控制台!

这样我们在打包的时候 就可以直接直接打包,而无需在配置一些常量 true/false 字段以区分 Debug或者 Release 包了!
由此可见Gradle的强大!······


http://www.niftyadmin.cn/n/1096464.html

相关文章

EBS 各模块数据传送至总帐 需要运行的请求

销售订单传送应收帐款的接口需要运行的请求,如下: 应收帐款传送到总帐系统 应付帐款传送到总帐系统 所有库存操作必须运行成本管理器后,才会出现会计分录,下图 库存模块数据传送至总帐系统 转载于:https://www.cnblogs.com/quanwe…

[转]Ubuntu 下禁用触摸板的方法

from :http://blog.csdn.net/hunanchenxingyu/article/details/39214677 通过xinput可以来启用和禁用输入设备,以此来达到我需要的功能----禁用触摸板。 查看设备列表 通过xinput先查看一些都有哪些设备 xinput #或者 xinput list 显示结果如下 dddddd:~$ xinpu…

UVA 311 Packets

贪心&#xff0c;用到了许多小技巧&#xff0c;向下取整等。 CODE&#xff1a; #include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>using namespace std;int u[4] {0, 5, 3, 1}; //以三的剩余个数进行分类 int main(){int …

Android 延时执行某个任务

我们有时候需要我们的某个函数&#xff0c;或者是界面的跳转&#xff1b;在延时 几秒之后再执行这个函数或者是界面的startActivity();这时候我们就需要做下延时处理以让用户看到某个操作效果&#xff0c;或者是隐含的操作&#xff01; 实现的方式有以下几种&#xff1a; 第一…

图片传输的小结

今天在公司要实现一个同步微博的功能&#xff0c;调用微博的时候需要传递二进制的图片1、先用根据url地址将图片抓起变成二进制 WebResponse response null; System.IO.Stream stream null; HttpWebRequest request (HttpWebRequest)WebRequest.Create(Url); response requ…

在AndroidStudio上使用GitHub

对于版本控制的管理工具&#xff0c;我也不在过多的赘述了&#xff0c;当然在使用GitHub 的时候&#xff0c;同样需要安装Git 管理工具&#xff0c;具体的安装和关联可以参考这个: 。当然如果你熟知使用Dos命令行来进行关联本地项目的话&#xff0c;(“高大上”)你也可以使用&…

Qml 写的弹出层控件

QML弹出窗口组件&#xff0c;灯箱效果、动画效果&#xff0c;可拖拽 核心思路&#xff1a;一个mask层&#xff0c;一个最顶层&#xff0c;都用rectangle&#xff0c;禁止事件穿透 使用 Popup { id: popup width: 200; height: 300 x: 200; y:100 z: 101 opacity: 0.8 visible: …

数据库操作语法示例

语法一&#xff1a; private static void CreateCommand(string queryString,string connectionString){using (SqlConnection connection new SqlConnection(connectionString)){SqlCommand command new SqlCommand(queryString, connection);command.Connection.Open();com…