android 宏替换_android 模拟宏定义,实现Debug amp; Release 模式-一团网
以前在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 模式-一团网相关推荐
- android 宏替换_Android.mk常用宏定义
常用变量定义 为了方便模块编译,Build系统还设置了很多编译环境.单独编译一个模块时,需要配置变量后才能执行编译: 变量 作用 LOCAL_SRC_FILES 当前模块包含的所有源代码文件 LOCA ...
- android 字符串替换_Android开发之旅:android架构
第一次观看我文章的朋友,可以关注.点赞.转发一下,每天分享各种干货技术和程序猿趣事 目录 1.架构图直观 2.架构详解 2.1.Linux Kernel 2.1.Android Runtime 2.3 ...
- Android Studio 使用教程(三十)之 获取debug和release版本的SHA1和MD5
Android项目开发过程中常常需要知道测试版本和发布版本的SHA1和MD5 比如高德地图API AndroidStudio 1.获取debug 版本 打开CMD,输入: cd .android ke ...
- c语言宏定义替换字符串,C语言中,宏替换的替换规则
匿名用户 1级 2011-10-25 回答 简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种. 复杂的请看下面,讲的很全.下面的带参宏定义,多行 ...
- c语言宏替换作用,C语言中,宏替换的替换规则
简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种.复杂的请看下面,讲的很全. 下面的带参宏定义,多行宏定义,在Linux内核源码中很多.另外si ...
- Android安卓签名打包原理,步骤详细讲解(debug,release区别.V1,V2区别)
所有的Android应用程序都要求开发人员用一个证书进行数字签名,Android系统不会安装没有进行签名的应用程序. 在应用程序开发期间,由于是以Debug调试模式编译的,因此IDE(ADT)根据会自 ...
- C语言宏定义、宏替换
1.宏替换的格式 #define 名字 替换文本 后续所有出现名字的地方都将被替换为替换文本. 替换文本可以是任意的,例如 #define forever for(;;) //无限循环 该语句为无限循 ...
- python 宏替换_宏定义与宏替换
一. c /c++语言中使用宏的主要目的主要有 3 个: 1. 提高代码的可读性: 把用到的常量定义成有意义的名字: 2. 无需函数调用,运行效率高: 对于一些简单的操作,无需调用函数,虽然编程是强调 ...
- python宏替换_#和##在宏替换中的作用
#include #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s/n" ...
最新文章
- 前端之css引入方式/长度及颜色单位/常用样式
- OneAPM挂牌新三板,资本市场一片看好!
- asp.net中DropDownList的SelectedIndexChanged触发问题
- 将windows 客户机加入msits.com域环境中
- 网站安全之nginx的配置创建访问网站密码认证
- Android中AppWidget的分析与应用:AppWidgetProvider .
- ndarray 求和_numpy不同阶数张量相加问题(broadcast)
- [翻译] GiFHUD
- java用swing日历标记节日_如何用JavaSwing作一个日历控制程序?
- Nutch1.2二次开发详细攻略(一)【图文】------Windows平台下Cygwin环境的搭建
- python文件系统监控_简单了解Python下用于监视文件系统的pyinotify包
- linux nslookup 解析不到dns_内网智能DNS搭建
- 森林老是显示连接服务器超时,乌鸦森林之谜3:卡赫拉之影无法连接服务器是什么原因...
- HDU6069 欧拉筛法+约数定理+计算技巧。
- yum下载软件包报错 you could try using --skip-broken to work aroundthe problem you should tyr running: rpm
- python from __future__ import
- 腾讯安全ApkPecker上线DEX-VMP自动化脱壳服务
- python基于PHP+MySQL的大学生二手闲置商品交易系统
- 现实就是一个女生会变得越来越物质
- 英雄联盟Mac中文版(lol mac美服汉化版)
热门文章
- Android系列之Fragment(二)----Fragment的生命周期和返回栈
- 问题清空easyui required=true的提示信息所在位置不对。乱跑的解决办法
- 解決yum [Errno -1] Metadata file does not match checksum
- 手把手教你创建自己的Altium Designer集成元件库
- PHP学习之没有权限修改hosts文件
- GEO数据下载及处理详细过程
- 大数据算法:排位问题(2)
- php之判断点在多边形内的api
- React路上遇到的Bug
- GridView中TextBox 有内容,选中当前行CheckBox