以前在C/C++ 开发中,我们可以宏定义,Debug模式下,输出日志,方便测试。Release模式下,无日志输出。

使用Java时,Java 是解释语言,无法编译。就无模式之分了。有没有办法实现,Debug、Release版?

debug 输出日志、调试信息。

release 发布版本,无输出日志、调试信息。

办法是人想出来的。

下面说说我的解决方案:

1 模拟C宏定义。

[java]

package cn.eben.hpc.define;

public final class BuildConfig {

public final static boolean isDebug = true;// 通过改变isDebug,实现Debug、Release版

}

2 重定义日志输出类

[java]

package cn.eben.hpc.define;

import java.lang.reflect.Method;

import android.util.Log;

public class Trace {

public final static void e(String tag, String msg, Throwable tr) {

if (BuildConfig.isDebug)

Log.e(tag, msg, tr);

}

public final static void e(String tag, String msg) {

if (BuildConfig.isDebug)

Log.e(tag, msg);

}

public final static void e(String msg) {

if (BuildConfig.isDebug)

Log.e("", msg);

}

public final static void e(Throwable tr) {

if (BuildConfig.isDebug)

Log.e("", "", tr);

}

public final static void d(String tag, String msg) {

if (BuildConfig.isDebug)

Log.d(tag, msg);

}

public final static void d(String msg) {

if (BuildConfig.isDebug)

Log.d("", msg);

}

public final static void d(Throwable tr) {

if (BuildConfig.isDebug)

Log.d("", "", tr);

}

}

3 我们工程中使用:

原来使用

Log.i, Log.d, log.e ...

Log.i(TAG,“log”);

使用重定义的日志

Trace.i, Trace.d Trace.e...

Trace.i(“”, “”);

发布版本时,我们只需要将isDebug = false.即可。Release版就干干净净。无日志信息。

安毕。

是不是很简单呀! :)

android 宏替换_android 模拟宏定义,实现Debug amp; Release 模式-一团网相关推荐

  1. android 宏替换_Android.mk常用宏定义

    常用变量定义 为了方便模块编译,Build系统还设置了很多编译环境.单独编译一个模块时,需要配置变量后才能执行编译: 变量 作用 LOCAL_SRC_FILES 当前模块包含的所有源代码文件 LOCA ...

  2. android 字符串替换_Android开发之旅:android架构

    第一次观看我文章的朋友,可以关注.点赞.转发一下,每天分享各种干货技术和程序猿趣事 目录 1.架构图直观 2.架构详解 2.1.Linux Kernel 2.1.Android Runtime 2.3 ...

  3. Android Studio 使用教程(三十)之 获取debug和release版本的SHA1和MD5

    Android项目开发过程中常常需要知道测试版本和发布版本的SHA1和MD5 比如高德地图API AndroidStudio 1.获取debug 版本 打开CMD,输入: cd .android ke ...

  4. c语言宏定义替换字符串,C语言中,宏替换的替换规则

    匿名用户 1级 2011-10-25 回答 简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种. 复杂的请看下面,讲的很全.下面的带参宏定义,多行 ...

  5. c语言宏替换作用,C语言中,宏替换的替换规则

    简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种.复杂的请看下面,讲的很全. 下面的带参宏定义,多行宏定义,在Linux内核源码中很多.另外si ...

  6. Android安卓签名打包原理,步骤详细讲解(debug,release区别.V1,V2区别)

    所有的Android应用程序都要求开发人员用一个证书进行数字签名,Android系统不会安装没有进行签名的应用程序. 在应用程序开发期间,由于是以Debug调试模式编译的,因此IDE(ADT)根据会自 ...

  7. C语言宏定义、宏替换

    1.宏替换的格式 #define 名字 替换文本 后续所有出现名字的地方都将被替换为替换文本. 替换文本可以是任意的,例如 #define forever for(;;) //无限循环 该语句为无限循 ...

  8. python 宏替换_宏定义与宏替换

    一. c /c++语言中使用宏的主要目的主要有 3 个: 1. 提高代码的可读性: 把用到的常量定义成有意义的名字: 2. 无需函数调用,运行效率高: 对于一些简单的操作,无需调用函数,虽然编程是强调 ...

  9. python宏替换_#和##在宏替换中的作用

    #include #define f(a,b) a##b #define g(a)  #a #define h(a) g(a) int main() { printf("%s/n" ...

最新文章

  1. 前端之css引入方式/长度及颜色单位/常用样式
  2. OneAPM挂牌新三板,资本市场一片看好!
  3. asp.net中DropDownList的SelectedIndexChanged触发问题
  4. 将windows 客户机加入msits.com域环境中
  5. 网站安全之nginx的配置创建访问网站密码认证
  6. Android中AppWidget的分析与应用:AppWidgetProvider .
  7. ndarray 求和_numpy不同阶数张量相加问题(broadcast)
  8. [翻译] GiFHUD
  9. java用swing日历标记节日_如何用JavaSwing作一个日历控制程序?
  10. Nutch1.2二次开发详细攻略(一)【图文】------Windows平台下Cygwin环境的搭建
  11. python文件系统监控_简单了解Python下用于监视文件系统的pyinotify包
  12. linux nslookup 解析不到dns_内网智能DNS搭建
  13. 森林老是显示连接服务器超时,乌鸦森林之谜3:卡赫拉之影无法连接服务器是什么原因...
  14. HDU6069 欧拉筛法+约数定理+计算技巧。
  15. yum下载软件包报错 you could try using --skip-broken to work aroundthe problem you should tyr running: rpm
  16. python from __future__ import
  17. 腾讯安全ApkPecker上线DEX-VMP自动化脱壳服务
  18. python基于PHP+MySQL的大学生二手闲置商品交易系统
  19. 现实就是一个女生会变得越来越物质
  20. 英雄联盟Mac中文版(lol mac美服汉化版)

热门文章

  1. Android系列之Fragment(二)----Fragment的生命周期和返回栈
  2. 问题清空easyui required=true的提示信息所在位置不对。乱跑的解决办法
  3. 解決yum [Errno -1] Metadata file does not match checksum
  4. 手把手教你创建自己的Altium Designer集成元件库
  5. PHP学习之没有权限修改hosts文件
  6. GEO数据下载及处理详细过程
  7. 大数据算法:排位问题(2)
  8. php之判断点在多边形内的api
  9. React路上遇到的Bug
  10. GridView中TextBox 有内容,选中当前行CheckBox