Skip to content

licheedev/RemoteLogcatViewer

 
 

Repository files navigation

RemoteLogcatViewer

在浏览器上远程查看logcat日志。

用法

//compile project(':remotelogcat')

allprojects {
  repositories {
    ...
    mavenCentral()
  }
}

  dependencies {
        implementation 'com.licheedev:remotelogcatviewer:1.0.0'
}
//start

//LogcatRunner.getInstance().config(LogcatRunner.LogConfig.builder().write2File(true)).start();

try {
    LogcatRunner.getInstance()
        .config(
            LogConfig.builder()
                .port(11229)
                .setWebsocketPrefix("/logcat")
                .setWsCanReceiveMsg(false)
                .write2File(true)
                .setLogFileDir(
                    getExternalFilesDir("logcat")!!.absolutePath
                )
        )
        .with(applicationContext, false)
        .start()
} catch (e: IOException) {
    Log.e("LogcatRunner", e.message, e)
}
...
//stop
LogcatRunner.getInstance().stop();

然后在浏览器中打开index.html 输入对应局域网ip和端口ws://ip:port/logcat 即可(注:logcat别名可以修改)。

因为一些安全原因,chrome禁止了部分不安全的请求地址ws,可以允许加载不安全脚本继续使用或者下载index.html 文件本地打开也可以。

如果不希望修改现有项目,可以新建一个其他的项目依赖本库,然后通过配置相同的 android:sharedUserId="" 和签名相同, 可以在新app运行时中读取所有sharedUserId相同的 log。

实现原理

原理非常简单,在内部使用Runtime.getRuntime().exec("logcat"); 执行命令去获取logcat输出流,然后逐行读取后通过websocket输出要远端,为了尽可能节省性能,只会维护一个客户端输出。
注意只能输出自己包下的log日志,当然相同sharedUserId和签名的也可以,多进程情况下建议在常驻后台的Service中启动本监听。

作用

某些Android设备没有调试接口,比如电视或者各种盒子终端,没法连接usb调试当然也不能查看logcat日志了,这个项目是在浏览器上远程显示和保存logcat输出,帮助调试开发使用。

功能

目前可以完整的查看、过滤、保存logcat信息。 支持日志文件写入、下载。
后期会加入shell支持。

License

Apache License 2.0

About

websocket实现的远程查看android logcat

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 78.3%
  • HTML 21.2%
  • AIDL 0.5%