场景
在做Android软件开发的时候,查看实时Log是有效的debug方式之一,如果软件只关联到一部手机,那使用IDE的log查看工具或者adb log都行。但如果要同时查看多部手机上的实时log,总不能搞多个笔记本在那边adb log看吧?接下来我来介绍一个可以有效解决这个问题的工具Lolly。
Lolly
Lolly是一个开源的Android lib库,它的主要功能就是在手机上显示一个类似终端的窗口,然后显示本应用的所有log,并且可以根据log的优先级和tag来过滤log,下面就来认识一下Lolly。
动图如下:
下面看看如何在自己的工程中使用Lolly。
首先在build.gradle加入对应依赖:
dependencies {
...
compile 'com.zql.android:lolly:1.1'
}
接着在AndroidManifest.xml中注册Lolly
<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查看器。
添加完组件后别忘了加上相应的权限:
<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对外提供的几个接口:
public static void showLolly(android.app.Activity activity,
java.lang.String[] tags)
显示Lolly窗口,其中tags是你需要过滤的tag数组,可以为空。
public static void hideLolly(@NotNull android.app.Activity activity)
移除Lolly窗口。
public static void saveLog(@NotNull android.app.Activity activity)
保存当前日志到本地的lolly目录。
上面三个接口就是Lolly对外的全部接口了,下面看一下LollyViewer的使用方法,当使用Lolly的saveLog保存完log后,在文件管理器中点击此文件,选择包含了LollyViewer打开就行了,界面如下:
源码
自然,这也是一款开源库,github地址如下:
希望Lolly能给大家带来一种新的log查看体验。