让那个被Layout Inspector 替代的 Android Device Monitor回归!

本文作者

作者: HiDhl

链接:

https://juejin.im/post/5c556ff7f265da2dbe02ba3c

本文由作者授权发布。

1

概述

Android Studio 在3.2 版本就去除了对Android Device Monitor的支持,如果想使用Android Device Monitor 就只能从 SDK 的目录下找到 monitor 启动 DDMS 了。

Google 这么做的目的,主要还是推出了新的Layout Inspector 工具,用于替代 Device Monitor。

但是 Layout Inspector 功能虽然强大,但是一个非常明显的比不过 Device Monitor 的地方就是,不能够查看非 debug 状态的 app,比如我想看下某个市面上 app 的效果:

每次从命令行去打开 Android Device Monitor 也不是太方便。

遂写个插件,让它重新回归 Android Studio。

让两兄弟呆在一起了,这样双剑合璧...天下...

2

如何安装

Github地址:

https://github.com/hi-dhl/DeviceMonitorPlugin

插件下载地址:

https://github.com/hidhl/DeviceMonitorPlugin/releases/download/1.0/DeviceMonitorPlugin.jar

安装方式:

  1. 打开 AndroidStudio

  2. 选择 Preference -> Plugins-> install plugin from disk

  3. 选择下载好的插件 [DeviceMonitorPlugin.jar] -> 重启 AndroidStudio

鸿洋注:大多数情况下,你把这个 jar 直接拖进 AS 就自动安装了。

3

插件的核心代码

当然我们并不是去写一个支持这样能力的插件,而是写一个插件可以方便我们点击启动这个在 SDK 目录下的程序。

这样一来,这个插件就很简单了,也很适合大家练手,来了解插件编写的大致步骤。

关于如何编写一个插件,可以参考:

自己编写Android Studio插件 别停留在用的程度了

public class Monitor extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {

        try {

            Project project = anActionEvent.getData(PlatformDataKeys.PROJECT);

            String os = AndroidUtils.getPlatformName();
            String sdkPath = AndroidUtils.getApkLocalProperties(project);
            if (os.toLowerCase().startsWith("win")) {
                sdkPath += File.separator + "tools" + File.separator + "monitor.bat";
            } else {
                sdkPath += File.separator + "tools" + File.separator + "monitor";
            }

            Runtime.getRuntime().exec(sdkPath);
        } catch (Exception e) {

        }

    }
}
/**
 * 动态获取本地Android SDK的路径
 *
 * @param project
 * @return
 */
public static String getApkLocalProperties(Project project) {

    String sdkPath = "";

    try {

        String path = project.getBasePath() + File.separator + "local.properties";

        Properties properties = new Properties();
        InputStream inputStream = new FileInputStream(path);
        properties.load(inputStream);

        sdkPath = properties.getProperty("sdk.dir");
    } catch (Exception e) {

    }
    return sdkPath;
}

开源地址:

https://github.com/hi-dhl/DeviceMonitorPlugin

鸿洋注:部分因为 JDK 版本导致 Monitor 打开无法用的情况,本插件无能为力。

推荐阅读

起飞!

Android UI 渲染机制的演进,你需要了解什么?

这交互炸了系列: 仿微信键盘弹出体验

扫一扫  关注我的公众号

如果你想要跟大家分享你的文章,欢迎投稿~

┏(^0^)┛明天见!

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章