实现思路
打印类(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)
}
}
}