Android 접근성 트리 디버깅 3부: UIAutomator viewer 활용하기
안녕하세요, 엔비전스입니다.
Android 접근성 트리 디버깅 2부에서는 ADB를 이용하여 명령 프롬프트에서 접근성 트리를 디버깅하는 방법에 대해 다루었습니다.
본 아티클에서는 UIAutomatorViewer를 통해서 접근성 트리를 디버깅하는 또 다른 방법을 소개하려고 합니다.
UIAutomatorViewer란
UIAutomatorViewer는 Android Studio를 설치했을 때 기본적으로 설치되는 개발 도구 프로그램으로 특정 앱의 UI 트리를 확인할 때 사용합니다. 따라서 접근성 진단 시에 지난 아티클에서 소개한 adb logcat을 활용한 방법 외에도 해당 프로그램을 이용하여 특정 화면의 뷰 구조를 확인해볼 수 있습니다. UIAutomatorViewer의 장단점은 다음과 같습니다.
- Windows의 GUI 응용 프로그램 기반이기 때문에 터미널 사용에 익숙하지 않은 사용자도 충분히 이용할 수 있습니다.
- Adb logcat을 활용한 디버깅은 결과 값이 단순한 텍스트 형태로만 출력되기 때문에 보기 불편한 반면 UIAutomatorViewer는 결과 값을 트리 구조로 보여주기 때문에 훨씬 구조 파악이 쉽습니다.
- 접근성을 진단하는 시각장애인 사용자도 약간의 트릭을 통해 충분히 사용이 가능합니다.
- Talkback에서의 디버깅을 위한 환경 설정 및 제스처 설정 등이 필요 없습니다.
- Android Studio로 개발을 하지 않더라도 본 프로그램을 사용하기 위해서는 반드시 Android Studio 프로그램을 설치해야 합니다.
- Jre 8 버전이 반드시 설치되어 있어야 합니다.
- 각 뷰의 트리 구조를 보여주는 프로그램이기 때문에 접근성 이벤트를 캐치하여 출력하지는 않습니다.
Jre 및 Android Studio 설치
- Jre 8 다운로드 페이지에서 사용자의 운영체제에 맞는 프로그램을 다운로드해 설치합니다. 9.0 버전 이상의 높은 버전을 설치하면 해당 툴이 작동하지 않으므로 반드시 8 버전을 설치합니다. 설치를 위해서는 오라클 사이트에 회원가입이 되어 있어야 합니다. 설치 후에 터미널이나 명령 프롬프트 같은 명령 줄 도구에서 java -version을 입력했을 때 ‘java version 1.8.0_261’과 같이 출력된다면 설치가 정상적으로 된 것입니다.
- Android Studio 다운로드 페이지에서 최신 Android Studio를 다운로드하고 설치합니다. Android Studio 설치는 기본 프로그램 설치와 각 Android 버전별 SDK를 설치하는 두 가지 과정을 거치게 되는데, 반드시 SDK까지 다 설치해 주어야 합니다. Android Studio 설치 후 프로그램을 처음 실행하면 SDK 설치를 진행할 수 있습니다. SDK 설치 시 설치 폴더는 특별한 이유가 있지 않는 한 디폴트로 둡니다.
UIAutomatorViewer 실행하기
Android SDK 폴더를 기본값으로 설치했다면
- Windows:
- Windows 로고(시작) 키와 R을 입력하면 실행 대화상자가 출력됩니다.
- Appdata 입력 후 엔터를 누릅니다. AppData 경로로 탐색기가 열립니다.
- Local > android > Sdk > tools > bin 폴더로 진입합니다.
- 파일 탐색기의 보기 옵션이 파일명 오름차 순으로 되어 있다면, UIAutomatorViewer 파일을 맨 아래에서 찾을 수 있으며 필요에 따라 바탕화면 바로 가기 등을 만들어 편리하게 사용할 수 있습니다.
- macOS: 사용자 계정 폴더 안에 library > android > sdk > tools > bin 폴더로 진입합니다. 그러면 UIAutomatorViewer 파일을 찾을 수 있습니다.
- 사용자 이름 하위의 library 폴더는 기본적으로 숨겨져 있기 때문에 Finder의 바로 가기 메뉴의 폴더 이동을 찾아 ~/Library 입력 후 Enter를 누르면 해당 폴더로 이동됩니다.
- Finder로 손쉽게 접근하려면 Command+Shift + .(마침표)를 누르면 Finder 상에서 숨겨진 폴더를 표시할지를 전환할 수 있습니다.
참고: 위의 폴더 위치는 앞에서 설명한 바와 같이 SDK 설치 경로를 변경하지 않았을 때를 기준으로 한 것이며 설치 위치를 변경하였다면 Android Studio 내의 환경설정에서 해당 경로를 확인할 수 있습니다.
UIAutomatorViewer 사용하기
우선 해당 프로그램을 사용하려면 반드시 스마트폰의 USB 디버깅을 사용하도록 설정해야 합니다. 스마트폰 설정 > 개발자 설정에서 반드시 USB 디버깅을 허용으로 설정하고 컴퓨터에 연결하여 해당 컴퓨터에서의 USB 디버깅을 허용해 주어야 디버깅이 올바르게 실행됩니다.
UIAutomatorViewer를 실행했을 때 특별한 이상이 없다면 device screenshot, open, save와 같은 버튼들이 표시되며 스크린샷을 누르면 현재 모바일에 출력된 화면의 UI를 캡처하여 트리뷰 형태로 표시합니다.
만약 스크린샷 버튼을 눌렀을 때 ‘Error obtaining UI hierarchy’ 에러 창이 뜨면 java 버전이 호환되지 않아 발생하는 오류로 하위 JRE 9 보다 낮은 버전을 설치해 보시기 바랍니다.
해당 프로그램 사용은 매우 간단합니다. 앞에서 설명한 것처럼 스마트폰에서 접근성 트리를 확인하고 싶은 화면에 들어간 다음 screenshot 버튼을 누르면 끝입니다. 화면 캡처는 덤프까지 다 캡처하는 전체 캡처와 트리를 압축하여 캡처하는 compressed hierarchy 캡처로 나누어지는데 compressed hierarchy 캡처를 사용하는 것이 불필요한 뷰들이 많이 표시되지 않아 보기에 더 간결할 수 있습니다.
트리뷰를 사용해서 각 뷰의 구조를 파악할 수 있고 뷰에 포커스 하면 뷰의 아이디, 대체 텍스트, 체크/선택 가능 여부, 포커스 가능 여부 등 세부정보 확인이 가능합니다.
키보드를 이용하여 결과 트리뷰, 결과 중에서 특정 텍스트를 검색할 수 있는 편집창, 특정 뷰의 자세한 정보를 표시하는 리스트 영역에는 포커스 및 조작이 가능하지만 스크린샷 버튼에는 키보드 초점이 이동되지 않으므로 윈도 스크린 리더 사용자는 NVDA 등을 이용하여 객체 탐색으로 툴바 하위의 스크린샷 버튼을 실행하여 이용할 수 있습니다.
해당 프로그램을 통한 접근성 트리 디버깅 역시 모든 뷰가 개발자가 마크업한 뷰 그대로 표시되지는 않으며 접근성 트리에서 인식된 뷰로 표시됩니다. 예를 들어 TabLayout은 HorrizontolScrollview로, TextView이지만 AccessibilityNodeInfo 정보를 변경하여 클래스 네임을 라디오 버튼으로 변경하였다면 실제의 트리에서는 라디오 버튼으로 표시되는 것 등입니다.
지금까지 UIAutomatorViewer를 통한 Android 접근성 트리 디버깅에 대해 살펴보았습니다. 본 아티클이 접근성 진단에 조금이나마 도움이 되었으면 합니다.