아티클

Android 접근성 트리 디버깅 3부: UIAutomator viewer 활용하기

2021-04-19 16:32:54

안녕하세요, 엔비전스입니다.

Android 접근성 트리 디버깅 2부에서는 ADB를 이용하여 명령 프롬프트에서 접근성 트리를 디버깅하는 방법에 대해 다루었습니다.

본 아티클에서는 UIAutomatorViewer를 통해서 접근성 트리를 디버깅하는 또 다른 방법을 소개하려고 합니다.

UIAutomatorViewer란

UIAutomatorViewer는 Android Studio를 설치했을 때 기본적으로 설치되는 개발 도구 프로그램으로 특정 앱의 UI 트리를 확인할 때 사용합니다. 따라서 접근성 진단 시에 지난 아티클에서 소개한 adb logcat을 활용한 방법 외에도 해당 프로그램을 이용하여 특정 화면의 뷰 구조를 확인해볼 수 있습니다. UIAutomatorViewer의 장단점은 다음과 같습니다.

  1. Windows의 GUI 응용 프로그램 기반이기 때문에 터미널 사용에 익숙하지 않은 사용자도 충분히 이용할 수 있습니다.
  2. Adb logcat을 활용한 디버깅은 결과 값이 단순한 텍스트 형태로만 출력되기 때문에 보기 불편한 반면 UIAutomatorViewer는 결과 값을 트리 구조로 보여주기 때문에 훨씬 구조 파악이 쉽습니다.
  3. 접근성을 진단하는 시각장애인 사용자도 약간의 트릭을 통해 충분히 사용이 가능합니다.
  4. Talkback에서의 디버깅을 위한 환경 설정 및 제스처 설정 등이 필요 없습니다.
  5. Android Studio로 개발을 하지 않더라도 본 프로그램을 사용하기 위해서는 반드시 Android Studio 프로그램을 설치해야 합니다.
  6. Jre 8 버전이 반드시 설치되어 있어야 합니다.
  7. 각 뷰의 트리 구조를 보여주는 프로그램이기 때문에 접근성 이벤트를 캐치하여 출력하지는 않습니다.

Jre 및 Android Studio 설치

  1. Jre 8 다운로드 페이지에서 사용자의 운영체제에 맞는 프로그램을 다운로드해 설치합니다. 9.0 버전 이상의 높은 버전을 설치하면 해당 툴이 작동하지 않으므로 반드시 8 버전을 설치합니다. 설치를 위해서는 오라클 사이트에 회원가입이 되어 있어야 합니다. 설치 후에 터미널이나 명령 프롬프트 같은 명령 줄 도구에서 java -version을 입력했을 때 ‘java version 1.8.0_261’과 같이 출력된다면 설치가 정상적으로 된 것입니다.
  2. Android Studio 다운로드 페이지에서 최신 Android Studio를 다운로드하고 설치합니다. Android Studio 설치는 기본 프로그램 설치와 각 Android 버전별 SDK를 설치하는 두 가지 과정을 거치게 되는데, 반드시 SDK까지 다 설치해 주어야 합니다. Android Studio 설치 후 프로그램을 처음 실행하면 SDK 설치를 진행할 수 있습니다. SDK 설치 시 설치 폴더는 특별한 이유가 있지 않는 한 디폴트로 둡니다.

UIAutomatorViewer 실행하기

Android SDK 폴더를 기본값으로 설치했다면

  1. Windows:
    1. Windows 로고(시작) 키와 R을 입력하면 실행 대화상자가 출력됩니다.
    2. Appdata 입력 후 엔터를 누릅니다. AppData 경로로 탐색기가 열립니다.
    3. Local > android > Sdk > tools > bin 폴더로 진입합니다.
    4. 파일 탐색기의 보기 옵션이 파일명 오름차 순으로 되어 있다면, UIAutomatorViewer 파일을 맨 아래에서 찾을 수 있으며 필요에 따라 바탕화면 바로 가기 등을 만들어 편리하게 사용할 수 있습니다.
  2. macOS: 사용자 계정 폴더 안에 library > android > sdk > tools > bin 폴더로 진입합니다. 그러면 UIAutomatorViewer 파일을 찾을 수 있습니다.
    1. 사용자 이름 하위의 library 폴더는 기본적으로 숨겨져 있기 때문에 Finder의 바로 가기 메뉴의 폴더 이동을 찾아 ~/Library 입력 후 Enter를 누르면 해당 폴더로 이동됩니다.
    2. 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 접근성 트리 디버깅에 대해 살펴보았습니다. 본 아티클이 접근성 진단에 조금이나마 도움이 되었으면 합니다.

댓글 0
댓글을 작성하려면 해주세요.