디버깅에 꼭 필요한 로그 확인, 어떻게 하나요?
스스로에게 물어보고 싶습니다. 모바일 개발자가 아니기에 앱을 만들고 테스트를 하는 와중에 앱이 접속만 하면 강제종료가 되는 현상이 일어났습니다. 애뮬레이터에서는 별 문제가 없었는데 flutter build apk –release하고 스마트폰으로 확인을 하려고 앱을 실행하니 종료가 되었습니다. 왜 팅기는지 문제조차 모르기에 로깅을 보거나 디버깅을 해야 하는데 할 줄 모르니 답답하였습니다.
안드로이드 앱 개발 중 예상치 못한 버그나 동작 오류를 확인하려면 로그 시스템을 활용하는 것이 필수입니다. 로그는 코드의 흐름을 추적하고 에러의 원인을 파악하는 데 매우 효과적인 도구입니다. 안드로이드 앱의 로그를 실시간으로 확인하고 분석하는 방법을 알아보겠습니다.
디버깅을 위한 필수 조건: 기기 연결
스마트폰과 노트북을 USB로 연결해야 로그 확인이 가능합니다. 이때 스마트폰에서는 개발자 옵션을 활성화하고, USB 디버깅을 허용해야 합니다. 설정 방법은 다음과 같습니다.
단계 | 설명 |
---|---|
1단계 | 스마트폰에서 ‘설정 > 휴대전화 정보’로 이동 |
2단계 | ‘빌드 번호’를 7번 누르면 개발자 모드 활성화 |
3단계 | ‘개발자 옵션 > USB 디버깅’을 켜기 |
4단계 | USB 케이블로 노트북과 스마트폰 연결 후 신뢰 승인 |
연결이 정상적으로 완료되면 Android Studio의 Logcat에서 실기기 로그 확인이 가능합니다.
로그캣(Logcat)의 기본 개념 이해하기
안드로이드 로그 시스템은 Logcat이라는 툴을 중심으로 동작합니다. Logcat은 앱 실행 중 발생하는 로그 메시지를 실시간으로 출력해주는 콘솔입니다. 로그의 종류는 다음과 같이 구분되며, 목적에 따라 활용됩니다.
로그 레벨 | 설명 |
---|---|
VERBOSE | 가장 상세한 정보 출력, 모든 로그를 포함 |
DEBUG | 개발 중 디버깅용 메시지 |
INFO | 일반적인 정보 로그 |
WARN | 경고 메시지, 주의가 필요한 경우 |
ERROR | 에러 발생 시 출력되는 메시지 |
안드로이드 스튜디오에서 로그 확인하는 방법
가장 기본적인 방법은 Android Studio의 Logcat 창을 이용하는 것입니다. 앱을 실행하면 하단 Logcat 패널에서 로그가 실시간 출력됩니다. 앱을 실행하면 하단 Logcat 패널에서 로그가 실시간 출력됩니다. View ⮕ Tool Windows ⮕ Logcat을 클릭해도 됩니다.

로그로 버그 잡기
“화면 전환 시 앱이 강제 종료된다”는 현상이 발생했다고 가정해봅니다. Logcat에서 ERROR 로그를 확인하니 다음과 같은 메시지가 출력됩니다.

하단 Logcat 패널 좌측 상단에서 연결된 스마트폰을 선택해주시고 오른쪽에는 package:(패키지명)을 입력해줍니다. 앱에서 버그가 일어난 부분을 재연해줍니다. 에러메시지가 많이도 나왔습니다. 확인을 해보니 lay-services-ads:24.2.0 사용 중 Kotlin 1.9.0 기반의 빌드에서, Ads SDK는 Kotlin 2.1.0 이상에서컴파일된내부클래스를포함하고 있어 불일치가 발생하였습니다. 어쩐지 flutter build apk –release 빌드를 할 때
“java.com.google.android.gms.libs.filecompliance.proto_file_access_api_type_kt_proto_lite.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.9.0.”
와 같은 에러가 계속 났는데 빌드가 되길레 무시했었는데 그러면 안 되는 것이였읍니다. ㅠㅠ
결국 문제는 버전 호환이였습니다. 코틀린 버전, gradle 버전, implementation버전, google_mobile_ads 버전 등등 끼리의 버전이 맞지 않아서 발생하는 에러였습니다. 코틀린 버전 변경도 해보고 gradle 버전 변경도 해보고 정말 많은 오류를 만나서 삽질끝에 일단락 된 듯 합니다.
두 가지 오류를 만났습니다.
java.lang.VerifyError: com.google.android.gms.internal.ads.vO 클래스가 손상되었거나, 완전하게 로드되지 못해서 발생하며, 그로 인해 이를 상속하는 RN 클래스도 거부되는 상황입니다.
java.lang.NoSuchMethodError:라이브러리(여기선 Google Mobile Ads SDK)의 특정 메서드가 런타임에 존재하지 않아서 발생하는 오류입니다.
# 해결 방법
android ⮕ app ⮕ build.gradle
dependencies {
implementation 'com.google.android.gms:play-services-ads:22.6.0' - 24.2.0 ⮕ 22.6.0 버전 변경
}
pubspec.yaml
google_mobile_ads: ^4.0.0 - 6.0.0 ⮕ 4.0.0 버전 변경
adb 명령어를 이용한 외부 로그 확인
개발 환경이 아닌 곳에서도 로그를 확인할 수 있도록 adb(Android Debug Bridge)를 활용할 수 있습니다. 터미널에서 다음 명령어를 실행하면 실시간 로그 확인이 가능하다고 합니다.
안드로이드 앱 개발 과정에서 로그는 단순한 출력이 아니라 문제 해결의 실마리를 제공하는 핵심 도구입니다. Logcat 활용부터 실기기 연결, adb 명령어까지 모든 과정은 개발자의 실력을 더욱 체계적으로 다져주는 필수 과정입니다. 마트폰과 노트북의 연결, 그리고 정확한 로그 분석이 앱 품질을 좌우합니다. 이제 로그를 단순히 흘려보내지 말고, 능동적으로 활용해보세요. 디버깅이 쉬워지고, 개발 속도도 확실히 달라질 것입니다. “잘 쓴 로그 하나, 버그 열 개 이긴다” 는 말을 실감하게 될 날이 머지않았습니다.