uiautomatorviewer Ошибка при синтаксическом анализе файла XML иерархии пользовательского интерфейса: неверный файл иерархии пользовательского интерфейса
Я могу захватить один экран приложения, а другой экран хорошо.
графический интерфейс говорит: Ошибка при разборе файла XML иерархии пользовательского интерфейса: неверный файл иерархии пользовательского интерфейса. Ошибка при синтаксическом анализе файла XML иерархии пользовательского интерфейса: неверный файл иерархии пользовательского интерфейса.
и лог терминала:
org.xml.sax.SAXParseException; systemId: file:/var/folders/vs/30nqjbc16kd21g3hc_5h7vg40000gn/T/uiautomatorviewer_1759068495088939262/dump_421507564099289174.uix; lineNumber: 1; columnNumber: 1; Premature end of file.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1437)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1019)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:328)
at com.android.uiautomator.tree.UiHierarchyXmlLoader.parseXml(UiHierarchyXmlLoader.java:130)
at com.android.uiautomator.UiAutomatorModel.<init>(UiAutomatorModel.java:51)
at com.android.uiautomator.UiAutomatorHelper.takeSnapshot(UiAutomatorHelper.java:155)
at com.android.uiautomator.actions.ScreenshotAction$1.run(ScreenshotAction.java:91)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
null rootnode after parsing.
Обновление: я меняю телефон, теперь все в порядке..
2 ответа
Привет, если вы используете Android 7.1.1 или выше, вам нужно настроить определенные параметры в настройках разработчика на вашем мобильном телефоне
1. Turn on USB DEBUGGING
2. Enable view attribute inspection
3. Select the debug app option and choose com.github.uiautomator
У меня была такая же проблема, и я нашел временное решение. Дело в том, что для UiAutomator есть два разных API. Один из них старый, устаревший и используется UiAutomatorViewer, а второй — новый и обычно используется тестами (которые обращаются к таким вещам, как UiObject2). Судя по тому, что я видел, эта проблема воспроизводится только с устаревшим API (то есть только при использовании UiAutomatorViewer). Мой обходной путь может показаться странным, но для меня он работает на 100%, просто когда вы устанавливаете приложение (например, зеленую кнопку в Android Studio), вам нужно перетащить свой эмулятор/устройство и просто что-то переместить. Например, продолжайте перемещать некоторую область прокрутки или что-то еще, и тогда, когда ваше приложение появится, вы сможете использовать UiAutomatorViewer без этой проблемы.
Да... Я знаю, что это очень странно и кажется совершенно не связанным, но я тестировал это несколько раз, и когда я перетаскиваю при установке приложения, UiAutomatorViewer работает нормально, но когда я этого не делаю, я получаю точно такая же ошибка. Что касается тестов, то не имело значения, делаю я это или нет, они всегда работали нормально (но, как я уже упоминал, они используют более новый API).