以前玩 PC 最近刚搞 app 测试,费好大劲环境装好,高兴的点击 uiautomatorviewer.bat 想去抓取页面元素,尴尬的是首页就直接报错。

Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist! >

百度发现按照 Q 博士大神的提供的方法可以解决 ### @DoctorQ 博客地址.原理就是调用 UiDevice.dumpWindowHierarchy() 方法去获取 dumpxml。
现把完整解决全过程贴一下,方便像我一样这样小白复制粘贴。
1,建一个测试工程

工程结构如上图,代码极其简单,我这是顺便把页面截图也搞定了。
代码贴出,方便需要的朋友复制粘贴。

package com.lvmama.uidump;
import java.io.File;
import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class DumpXml extends UiAutomatorTestCase {
public void testRun() throws Exception {
UiDevice uiDevice = getUiDevice();
File pic = new File("/data/local/tmp/uishot.png");
uiDevice.takeScreenshot(pic,1.0f,100);
uiDevice.dumpWindowHierarchy("uidump.xml");

}
}
这里说一下更改工程为 uitest-project 的方法
1,打开 Cmd,进入 SDK 的 tools 目录如我的 D:\android\android-sdk-windows\tools>
执行命令:android create uitest-project -n LvmamaXmlKit -t 1 -p D:\my_java\LvmamaXmlKit
执行完后工程即为 uitest-project 工程

2,打开 build.xml,把改成
---打开工程下面的 build.xml,改 default 的值改成"build"
3,run as Ant build
---工程下,右键点击 build.xml,run as Ant build

jar 即打包成功了。
2,执行 push 命令推送 jar 包到手机中

3,验证截图是否成功
打命令:adb shell uiautomator runtest LvmamaXmlKit.jar -c com.lvmama.uidump.DumpXml

去手机里看看截图是否生成。

完事后修改一下 uiautomatorviewer 源码,调用自己的 jar,截图抓 xml 很爽的!


↙↙↙阅读原文可查看相关链接,并与作者交流