[AndroidRoadMap] Android 디버깅

봄박뱅·2024년 1월 29일
0

참고자료: https://tv.naver.com/v/15354345?playlistNo=629240

에뮬레이터 기능

  • PC에서 클립보드 복사하여 복붙가능: 초기 에뮬엔 한글 없는데 한글 복붙하기 편함
  • 지도 위치 정보 기반 시뮬레이팅 가능: KML 기반 좌표 추적을 설명하시는데 KML이 뭔지는 추가확인 필요
  • 여러 디바이스 dpi별 동시확인 가능: 폴더블 포함. 접히고 펴지는것도 확인가능
  • 에뮬 카메라를 웹캠으로 연결가능: 초기 생성시만 설정에서 세팅가능
  • 스냅샷 가능: 앱 DB 마이그레이션 테스트시 용이. 앱의 업데이트 버전 전후로 의도대로 안되면 복구 등
  • 스크린 레코딩: 부드럽게 잘 됨
  • 전화: 잘 됨
  • 녹음: Virtual sensor 활성화 해야 됨
  • Virtual sensor: 기기 돌리며 테스트
  • x86, x64 실기기 구하기 어려운데 테스트로 활용가능

테스트폰 개발자 옵션

  • USB Debugging: ON
    • 당연한거. QR코드 통한 무선연결 디버깅도 가능.
  • Stay Awake: ON
    • 충전 연결되어 있으면 안 꺼짐
  • Enable view attribute inspection: ON
    - Debugging 시 Layout Inspector에 특정 속성이 숨겨지고 아니고가 달라질 수 있음
  • Show taps: ON
    • 터치 위치 확인가능
  • Strict mode enabled: ON
    • 메인쓰레드에서 과도한 작업하면 빨간색으로 번쩍거림
  • Always show crash dialog: ON
    • 문제가 발생하면 알아차려야 하니 켜두기
    • 같은 이유로 background ANR, notification channel 모두 ON

성능체크

  • LeakCanary
    • Activity 생명주기 기반. 디버그시에만 추가되니 유용하나 부족한 부분이 존재하긴함
  • Memory Profiler in AS
    • Heap Dump > Activity/Fragment Leaks 체크해서 확인
  • 그 외 Systrace, Lint 추가 탐구해두면 좋음
  • Thread Dump: 프로세스 안에서 ANR 분석해나갈때 도움될 수 있음
  • Fill RAM memory 앱: LowMemory 상태에서 어떻게 동작하는지 강제로 만들어서 테스트 가능
  • Fill Device Disk 앱: 스토리지 부족 상태에서 어떻게 동작하는지 강제로 만들어서 테스트 가능

Framework 이해

  • SystemService에 연결된 것들이 어떻게 동작하는지 탐구 필요(ex: Context.getSystemService()
  • SystemService는 주로 SystemServer 프로세스에 포함되어 있음
  • Application의 경우에는 XXX Manager, SystemSevice의 경우에는 XXX Manager Service형태로 네이밍 되어있음
  • 둘은 또 각각 Proxy / Stub 이라는 이름으로 AIDL(Android Interface Definition Language)를 통해 Binder IPC 통신을 함 = 일종의 전처리 코드
  • 프레임워크 소스: https://android.googlesource.com/platform/frameworks/base
  • dumpsys 명령어를 통해 서비스 상태를 확인할 수 있는 이유: Service 클래스들이 기본적으로 dump 메소드를 충실히 구현하고 있기 때문
  • 안드로이드 특정 버전들에 문제있는지 확인하는곳: https://source.android.com/setup/contribute/report-bugs

다른앱 분석

  • Dexplorer 앱: Manifest 파일들 바로 확인
  • Apk Extractor 앱: 디바이스에 설치된 APK 파일을 외부저장소에 복사해줌
  • Apk Analyser(in AS): 바로 APK 올려서 확인 클래스들 분석 가능
  • 디컴파일: APK Tool, Dex2Jar, JD-GUI
  • Network Connections 앱: 앱별로 연결된 네트워크 물리적 위치/권한 등 확인
  • Developer Assistant 앱: 현재 화면에 보여지는 앱의 레이아웃 확인. 화면구조/속성/ResId/속한 액티비티. 유료.
  • Native Libs Monitor 앱: 네이티브 개발시
profile
Best Ongoing Man, BOM. 최선의 자세로 살아 가고자 합니다. 모두의 마음에 봄의 씨앗이 자라길

0개의 댓글