Android软件开发实时查看log的正确姿势

场景

在做Android软件开发的时候,查看实时Log是有效的debug方式之一,如果软件只关联到一部手机,那使用IDE的log查看工具或者adb log都行。但如果要同时查看多部手机上的实时log,总不能搞多个笔记本在那边adb log看吧?接下来我来介绍一个可以有效解决这个问题的工具Lolly

Lolly

Lolly是一个开源的Android lib库,它的主要功能就是在手机上显示一个类似终端的窗口,然后显示本应用的所有log,并且可以根据log的优先级和tag来过滤log,下面就来认识一下Lolly。

动图如下:

下面看看如何在自己的工程中使用Lolly。

首先在build.gradle加入对应依赖:

1
2
3
4
dependencies {
...
compile 'com.zql.android:lolly:1.1'
}

接着在AndroidManifest.xml中注册Lolly

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<service
android:name="com.zqlite.android.lolly.Lolly"
android:enabled="true"
android:exported="false"
android:process=":remote" />


<activity android:name="com.zqlite.android.lolly.LollyViewer">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />

<action android:name="android.intent.action.VIEW" />

<data android:scheme="file" />
<data android:scheme="content" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>

其中Lolly是一个后台服务,用于抓取log并在窗口中显示。LollyViewer是一个简单的log查看器。

添加完组件后别忘了加上相应的权限:

1
2
3
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

上诉几个权限在Android6.0及以上需要动态申请,这个就不赘述了,不清楚的稍后看源码。下面看看Lolly对外提供的几个接口:

1
2
public static void showLolly(android.app.Activity activity,
java.lang.String[] tags)

显示Lolly窗口,其中tags是你需要过滤的tag数组,可以为空。

1
public static void hideLolly(@NotNull android.app.Activity activity)

移除Lolly窗口。

1
public static void saveLog(@NotNull android.app.Activity activity)

保存当前日志到本地的lolly目录。

上面三个接口就是Lolly对外的全部接口了,下面看一下LollyViewer的使用方法,当使用Lolly的saveLog保存完log后,在文件管理器中点击此文件,选择包含了LollyViewer打开就行了,界面如下:

源码

自然,这也是一款开源库,github地址如下:

LollyDemo

希望Lolly能给大家带来一种新的log查看体验。

如文章对您有所帮助,可以请作者喝杯 🍵