Appium - 3. Android UI Automator Viewer 실행하기

박재현·2024년 11월 5일
post-thumbnail

Android 단말의 화면 정보를 보다 편하게 확인하기 위한 툴이 바로 UI Automator Viewer다.

UI Automator Viewer의 경우 Android/sdk/tools/bin/ 경로에 위치해있고 SDK를 어디에 다운로드했는지 찾아보고 해당 파일을 실행하면 될것같다.

윈도우의 경우 .bat 형식으로 된것으로 기억하고, 맥의경우 터미널에서 실행하면 된다.

하지만 나의경우 M1 맥북이고 벤츄라OS를 사용중인데, 정상적으로 실행이 되지 않았다.

조금만 구글에 찾아봐도 M1을 사용하는 사람들은 다들 이러한 문제가 발생하는것으로 보인다.

사실 단순히 실행하고자 하는 어플리케이션의 package이름과 activity이름의 경우는 adb 명령어를 통해서 간단히 확인할수는 있다.

adb shell dumpsys window | grep mCurrentFocus
adb shell am start -W [package name]/[activity name]

간혹 splash와 main app의 package, activity 이름이 다른경우가 있는데 dumpsys window를 통해서 확인한 정보를 am start 명령어를 통해서 정상적으로 실행이 되는지 확인이 필요하다.

즉, 단순히 앱을 실행시키기 위해서는 package name, activity name만 알면 되고 텍스트의 경우는 눈에 보이는 그대로를 사용하면 되기에 문제는 없다.

다만 텍스트가 아닌 아이콘으로 되어있는 버튼들을 터치해야할 일이 생기기 마련인데, 가령 검색을 위해 돋보기 아이콘을 눌러야 한다거나 디테일한 메뉴를 들어가기 위해 ㆔ 이런 아이콘을 눌러야할 경우가 생길거라고 예상했다.

이럴경우 adb uiautomator dump 명령어를 통해서 xml파일을 저장하고 pull을 통해서 열어서 확인해볼 수 있지만 매번 저렇게 해야한다면 너무나 비효율적이다.

관련해서 2시간 이상 삽질하면서 해결한 내용을 기록해두려 한다!


크게 2가지 문제를 해결해야 한다.
1. Java 버전 다운그레이드
2. swt 파일 다운로드

1. Java 재설치

UI Automator Viewer의 경우 Java 8 버전을 사용한다고 하는데, 환경 변수로 등록된 자바 버전이 이와 달라서 문제가 된다.

나의경우 환경변수를 확인해보니 19버전을 사용중이었고 이를 개선하기 위해 이전 포스팅에서 언급한것 처럼 Android Studio를 통해 Java 1.8 버전을 다운로드했다.

이후 vi대신 VSC를 사용해 환경변수를 변경해주었다.

$ code ~/.zshrc ==> 환경변수 수정할때 사용
$ source ~/.zshrc ==> 환경변수 수정 후 사용

위 명령어를 통해 아래와 같이 환경변수를 기존 19버전에서 새로 다운로드한 1.8 버전으로 수정했다.

#JAVA_HOME
export JAVA_HOME=/Users/parkjaehyeon/Library/Java/JavaVirtualMachines/corretto-1.8.0_432/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

이후 환경변수를 정상적으로 저장하고 터미널에 java -version 명령어를 통해 제대로 변경이 되었는지 확인을 해야한다.

swt.jar 파일 다운로드

결과적으로swt-4.19-cocoa-macosx-arm64을 다운로드 받아야한다. Android sdk에 설치된 swt 버전이 낮아서 aarch64를 지원하지 않아 발생한 문제라고 한다.

또한 꼭 4.19 버전이어야 하고, 아래와 같이 해결할 수 있다.

  1. https://archive.eclipse.org/eclipse/downloads/drops4/R-4.19-202103031800/download.php?dropFile=swt-4.19-cocoa-macosx-arm64.zip 이곳을 통해 해당 파일을 다운로드 한다.

  2. 압축을 해제하고 swt.jar 파일을 확보해둔다.

  3. SDK가 설치된 경로로 이동을 해야하는데 자세한 경로는 아래와 같다.

/Users/유저이름/Library/Android/sdk/tools/lib/

  1. 해당 경로로 이동 후 ls 명령어를 입력해 확인해보면 x86x86_64 두개의 폴더를 확인할 수 있다.

  2. 각각의 폴더에 swt.jar가 이미 존재하는데, 2번 단계에서 새로 다운로드한 swt.jar 파일을 swt2.jar로 이름을 변경해 x86x86_64 폴더에 복사한다.

  3. 이후 /Users/유저이름/Library/Android/sdk/tools/lib/ 경로로 다시 돌아와 x86, x86_64와 동일한 path에 aarch64 라는 이름의 폴더를 새로 생성한다.

  4. x86 폴더에 위치해있는 swt.jar, swt2.jar 2개 파일을 복사해 새롭게 생성한 aarch64 폴더에 복사한다.

3. UI Automator Viewer 실행

위의 1, 2단계를 모두 마쳤다면 UI Automator Viewer를 실행시키기 위해 /Users/유저이름/Library/Android/sdk/tools/bin/ 경로로 이동한 다음 uiautomatorviewer를 실행시킨다.

이후 Android Studio를 실행시켜 Emulator를 실행하면 Viewer를 통해 단말의 화면을 볼 수 있다.

이때 좌측 상단의 2번째 아이콘인 안드로이드 이미지가 있는 폰 화면 버튼을 누르면 아래와 같이 현재 에뮬레이터 화면의 정보를 확인할 수 있다.


도움이 되지 않았던 뻘짓

mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64') in Flutter 이런 에러가 발생해서 구글을 열심히 찾아 아래와 같이 해결할 수 있다고 하길래 시도해봤지만 전혀 도움이 되지 않았다.

$ arch -arm64 brew install llvm

$ sudo gem install ffi

이 경우 swt.jar 파일을 새로 다운로드받아 복사하니 해결되었다.

또한 swt.jar 관련해 아래 이슈를 통해 4.20-x86_64 버전으로 먼저 시도했지만 결과적으로 해결되지 않았다.

https://github.com/android/android-test/issues/911

따라서 위에 적어둔 링크를 통해서 4.19버전의 arm64 swt.jar를 다운로드해야 해결되었다.


참고

profile
기술만 좋은 S급이 아니라, 태도가 좋은 A급이 되자

0개의 댓글