在本文中,我们将在Android中构建一个应用程序,以实现比android的默认Log类更好的日志记录实用程序类。为此,我们将使用Timber Library,这是一个具有可扩展API的小型记录器。作为Android开发人员,我们在项目中使用许多日志语句来生成输出,以在不同阶段测试我们的应用程序。日志有许多类型,例如详细,调试,警告,信息,错误。我们在应用程序中使用各种Log语句来查找错误和调试。准备好发布应用程序后,我们需要删除所有日志语句,以使生成的APK不包含任何其他应用程序数据。为了解决这个问题,我们有几种方法:
- 基于条件的日志记录
- 护卫队
- 木材
基于条件的日志记录
使用此方法,我们检查启用了记录器的级别,然后将消息记录到该级别。我们只需要在Application类中创建一个布尔变量即可检查日志记录。在应用程序中的每个日志语句之前和释放应用程序之前,请使用此布尔条件,将其更改为isDebug = false。下面是Application类的代码片段。
Java
import android.app.Application;
public class LogApplication extends Application {
public static boolean checkDebug;
@Override
public void onCreate() {
super.onCreate();
checkDebug = true;
}
}
Java
import android.app.Application;
import timber.log.Timber;
public class MyTimber extends Application {
@Override
public void onCreate() {
super.onCreate();
// initialize timber in application class
Timber.plant(new Timber.DebugTree());
}
}
XML
Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import timber.log.Timber;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Timber.i("Timber loggin is ready");
}
}
护卫队
ProGuard用于清除未使用的代码。在这里,我们可以使用它来删除发行版中的Log语句。在proguard-android-optimize.txt中添加要在发布版本中删除的日志方法。从Gradle脚本中打开此文件,并添加所有在发布时需要删除的日志语句。下面是代码片段
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int d(…);
public static int w(…);
public static int v(…);
public static int i(…);
}
木材
这是Timber Logging库进入的地方,它可以通过自动生成标签并随后从生成的APK中删除日志来减少繁琐的任务。让我们讨论将Timber集成到我们的Android项目中。
分步实施
步骤1:添加依赖项
Timber是Jake Wharton创建的开源库。要添加其依赖关系,请打开build.gradle文件并添加–
implementation ‘com.jakewharton.timber:timber:4.7.1’
并同步项目。
步骤2:建立应用程式类别
我们需要为应用程序创建一个单独的基类,以便Timber库可以在所有活动中使用。要在应用程序启动后尽快初始化木材,最好将其保留在应用程序类中。
Java
import android.app.Application;
import timber.log.Timber;
public class MyTimber extends Application {
@Override
public void onCreate() {
super.onCreate();
// initialize timber in application class
Timber.plant(new Timber.DebugTree());
}
}
创建应用程序类后,更改AndroiManifest.xml文件中的默认应用程序类
XML格式
步骤3:使用木材进行记录
现在,我们可以使用木材登录到我们的所有android活动。
Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import timber.log.Timber;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Timber.i("Timber loggin is ready");
}
}