如果您正在阅读本文,那么您就是一名 Android 开发人员,或者您正在激励自己成为一名开发人员。在这篇文章中,我们将讨论使用最广泛的库之一,Timber for Android。Timber用于更好地登录 Android。作为一名 Android 开发者,我们在项目中使用了大量的Log语句来生成输出,我们可以使用它来检查所需的输出是否在终端中打印出来。
日志属于 VERBOSE、DEBUG、WARN、INFO、ERROR 等类型,我们应该只限制在开发(暂存)构建而不是生产构建中使用日志。这是因为我们可能会面临暴露某种敏感信息的威胁。现在,让我们看看如何在 Android 项目中使用 Log 的几种方法。
object LogUtil {
fun DEBUG(key: String, message: String) {
if (BuildConfig.DEBUG)
Log.d(key, message)
}
}
这里,LogUtil 是一个 Singleton 类。它包含一个函数 DEBUG(),它只会在应用程序处于调试模式时运行。
要在 Activity 文件中运行它,
class MainActivity : AppCompatActivity() {
val TAG = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//It will only run in debug mode
LogUtil.DEBUG(TAG,"We are in MainActivity")
}
}
这是在我们的项目中使用 Log 的一种方式。
class MainActivity : AppCompatActivity() {
val TAG = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d(TAG,"We are in MainActivity")
}
}
在这个代码片段中,我们直接使用了 Log 并确保我们不在生产中使用它,我们使用 proguard-rules 将其删除,
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
public static *** e(...);
}
在这里,我们使用 proguard-rules 删除 Log.d、Log.e 和 Log.e。
从 Release 构建中隐藏 Log 的最后一种方法,手动删除所有 Log 语句。
这可能是一项乏味的任务,对吧?让我花点时间,让我向您介绍Timber。Timber是由 Jake Wharton 制作的开源库。它简化了记录语句的过程。它会自动处理您的调试/发布问题。让我们讨论集成和使用 Timber。在 build.gradle 中添加以下内容:
implementation 'com.jakewharton.timber:timber:4.7.1'
现在,在您的应用程序类中,我们必须初始化木材,
class App : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
}
}
我们也可以通过扩展Timber.Tree创建自己的树
现在,在您的视图文件中,将您的日志语句替换为,
Timber.e("Your Error Message")
Timber.d("Your Debug Message")
在这里,您可以看到我们没有像上面的示例那样传递TAG,因为 Timber 会自动为您检测类名称。现在,让我们考虑一个示例,我们不想将类名称作为标签传递,而是想要一个自定义标签名称.为此,我们可以使用,
Timber.tag("Mindorks Tag").e("Error Caught By Mindorks");
就是这样,我们如何使用 Timber 来提高我们的Timber 技能。