Android Studio java 模块 打印日志

实现思路

打印类(JavaLogUtil)设置是否打印标记。

创建一个打印的java模块(libjavalog),包含印工具类(JavaLogUtil),需要打印的java模块引用libjavalog模块,,app模块也引入libjavalog, 在Application设置

JavaLogUtil.debug = BuildConfig.DEBUG

依赖模块的方法

app模块和java模块添加的方法一样,build.gradle文件dependencies中添加依赖,举例java模块

plugins {
    id 'java-library'
    id 'kotlin'
}
java {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
}
//增加模块依赖
dependencies {  
    implementation project(path: ':libjavalog')
}

JavaLogUtil源码

注意:为了防止字符拼接或字符拼接中调用了更耗时的操作,kotlin使用了内联函数, 参考 这可能是最好的 Android/Kotlin日志输出方法

object JavaLogUtil {

    /**
     * Application中配置是否是开发模式
     */
    var debug = false

    /**
     * 在java中调用, 在kotlin 中也可以使用,但是确保生成message的性能
     */
    fun logd(tag: String, vararg message: Any?) {
        if (debug) {
            val res = "$tag ${message.joinToString()}"
            println(res)
        }
    }

    /**
     * 在java中调用 在kotlin 中也可以使用,但是确保生成message的性能
     */
    fun loge(tag: String, vararg message: Any?) {
        if (debug) {
            val res = "$tag ${message.joinToString()}"
            System.err.println(res)
        }
    }

    /**
     * 在kotlin中调用, java因为无法inline处理, 会生成实例
     */
    inline fun logd(tag: String, lazyMessage: () -> Any?) {
        if (debug) {
            val res = "$tag ${lazyMessage().toString()}"
            println(res)
        }
    }

 	/**
     * 在kotlin中调用, java因为无法inline处理, 会生成实例
     */
    inline fun loge(tag: String, lazyMessage: () -> Any?) {
        if (debug) {
            val res = "$tag ${lazyMessage().toString()}"
            System.err.println(res)
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值