본문 바로가기
반응형

Android 개발/Debug, ADB, CrashLytics, LogCat14

GeneratedInjector could not be resolved 에러 대응 방법 # package name 아주 오래된 프로젝트를 다시 빌드해 보니, hilt 와 관련해서 아래와 같은 에러로그를 보게 되었습니다. Fragment 에서 발생한 에러였는데, Hilt 에 관련한 셋업은 문제가 없었고, @AndroidEntryPoint 를 붙이는 것과 같은 기본적인 사항도 문제가 없었습니다. public abstract static class FragmentC implements TestFragment_GeneratedInjector, ^ symbol: class TestFragment_GeneratedInjector location: class MyApplication_HiltComponents error: ComponentProcessingStep was unable to process 'com.exam.test.. 2023. 4. 15.
ktlint 린트툴 적용하는 방법 정리 # Android Lint 오늘은 KTLint 라는 라이브러리에 대해서 정리해 보도록 하겠습니다. KTLint 에 대해 알아보기전에, lint 툴에 대해서 간단히 알아보고 가겠습니다. 1. lint 린트나 린터라고도 불리는 데요. 이것은 코드에서 버그나 익셉션이 발생할 만한 곳을 표시해주는 툴을 가르킵니다. 다양한 라이브러리가 이러한 툴로 사용되는데요. 추가적으로 Typo(타이핑에러)나 코드 스타일까지도 일관되도록 체크를 해 줍니다. Android Studio에서는 사실 이미 이러한 lint를 제공해주고 있습니다. 코드 작성시에 안드로이드에서 Typo나 발생할 수 있는 문제들을 알려주고 있는 것은, lint 툴들이 동작하고 있기 때문입니다. 특정 파일을 정해서 체크할수도 있는데요. 네비게이션에서 체크를 할 파일을 선택하고, 오른쪽.. 2023. 3. 15.
Android Studio Java Runtime Version 에러 발생시 대응 방법 # Gradle 오늘은 Android Studio에서 라이브러리 설치 후에 Java Version에러 발생시 대응하는 방법에 대해서 정리해 보겠습니다. 1. Java Version 아래는 hilt 라이브러리를 dependency를 선언한 후 발생한 에러인데요. 현재 프로젝트에서 사용중인 Java버전인 52와 라이브러리의 플러그인에서 사용하는 버전인 55가 사용이 안된다는 말 입니다. 그럼 버전을 바꾸어 주어야 할 텐데요. 위에서 말하는 52버전은 Java8을 말하구요. 55버전은 Java11을 가르킵니다. 2022. 12. 10.
Crashlytics 구현해서 catch 한 Exception 로그 받기 # 에러 로깅 CrashLytics는 앱이 Crash가 났을경우에 알림을 주는 역할을 해 줍니다. 마켓에 앱을 출시했다면, 필수로 사용해야 한다고 할 수 있는데요. Crash를 알려주는 주 기능이외에도, 다양한 기능들이 있지만, 그중에서도 catch한 Exception에 대해서도 알림을 받는 것이 특히 유용합니다. 오늘은 이 방법에 대해서 정리해 보겠습니다. 만약 Firebase내에 현재 앱의 project가 생성되어 있지 않다면, 먼저 아래 링크를 참조해서 프로젝트를 생성해 주세요. (https://firebase.google.com/docs/android/setup) 1. CrashLytics 라이브러리 implementation 1-1. project level의 build.gradle 먼저 project 레벨 .. 2022. 11. 26.
자주 사용하는 ADB 명령어 정리 # logcat 오늘은 지난 ADB를 사용하는 방법에 대한 글에 이어서, 자주 사용하는 ADB명령어에 관해 정리해 보겠습니다. 참고로 지난 글은 아래 링크를 참조해 주세요. >> ADB(Android Debug Bridge)를 사용하는 방법 1. 앱 데이터 및 앱 삭제 1-1. 앱 데이터 삭제 앱 데이터 삭제는 아래명령어로 쉽게 할 수 있습니다. adb shell pm clear 1-2. 앱 삭제 adb uninstall 앱 데이터 삭제나 앱 삭제는 테스트를 위해서 자주 사용하는 명령어 인데요. 이렇게 삭제 함에도 불구하고, 안드로이드에서는 Cloud로 백업을 해서 SharedPreference값을 재설치해도 복원해서 사용하므로 데이터 값이 제거되지 않는 경우가 있습니다. 이럴 경우에는 Manifest에서 다음과 같이,.. 2021. 3. 9.
Kotlin Exception 처리 방법 # RunCatching 과 try, catch 오늘은 Kotlin에서의 Exception처리에 대해서 정리해 보도록 하겠습니다. Java에서는 Exception처리를 위해서 Try Catch문을 사용했었는데요. Kotlin에서는 Try Catch 뿐만이 아니라, RunCatching API를 제공해 주고 있습니다. 오늘은 Kotlin의 Exception처리방법들인, Try Catch와 RunCatching에 대해서 정리해 보도록 하고 있습니다. 1. Classic한 Try와 Catch 그리고 finally 아래 이미지는 Java시절부터 사용해왔던 기본적인 try, catch 그리고 finally구조입니다. Try는 Exception 발생할 수 있는 코드를 감싸는 블록이구요. Catch는 Exception이 발생된 후 이를 핸들링 해주는 블록입니다. .. 2020. 2. 13.
WindowManager$BadTokenException 대응하기 Firebase의 CrashLytics에서 BadTokenException리포트를 받은 적이 있는데요. 오늘은 해당 Exception에 대해서 분석하고 대응해 보도록 하겠습니다. 1. 실제로 받은 BadTokenException 실제로 받아보았던 BadTokenException은 아래와 같은데요. 먼저 가운데에 at android.os.Handler.dispatchMessage(Handler.java:102)를 통해서, Handler객체가 Toast를 보여줄려고 했었다는 것을 알 수 있습니다. Toast를 보여주려고 하면서, view를 윈도우매니저에 add 하려고 하는데요. setView를 viewRoot에 하려고 하다가 BadTokenException을 받게 된 것이지요. 힌트를 더욱 얻기 위해서, E.. 2020. 2. 6.
Android 디버깅 방법 및 Tip에 대한 정리 오늘은 안드로이드 스튜디오를 이용하여, Android를 디버깅 하는 방법과 이와 관련한 팁들을 정리해 보도록 하겠습니다. 1. 기본적인 디버깅 툴 아이콘 사용법 안드로이드에서 디버깅을 하기 위해서는 디버깅 포인트를 잡아주어야 하는데요. 아래 이미지와 같이 코드 창 왼쪽에 빨간 점이 표시된 공간을 클릭하면, 브레이크 포인트가 설정 됩니다. 다시한번 클릭하면 사라지게 되구요. 디버깅을 시작하기 위해서는 벌레 모양의 아이콘을 눌러주어야 하는데요. 안드로이드 스튜디오 최상단에서, 아래 이미지에서의 우측 끝에 있는 녹색 벌레 아이콘을 찾아서 클릭해주면 됩니다. 참고로 안드로이드 스튜디오는 아래 이미지의 우측 끝과 같이 벌레 아이콘과 우상향을 가르키는 방향 아이콘이 그려진 것을 고르면, 앱을 실행하는 중에도 바로 .. 2020. 1. 29.
Kotlin에서 try catch finally로 처리하는 Exception Kotlin에서도 Java에서처럼 try catch finally를 이용해서 Exception들을 처리할 수 있는데요. 오늘은 그 기본적인 방법에 대해서 정리해 보도록 하겠습니다. 1. Try, Catch 그리고 Finally Try는 Exception 발생이 예상되는 코드를 감싸는 블록이고, Catch는 Exception이 발생되었을 때 실행되는 블록입니다. Try블록에서 Exception이 발생하고 , Catch블록에서 해당 Exception처리를 해주면, 앱은 Crash하지 않고, 다음 코드를 실행시켜 줍니다. (물론 Catch에서 잡아주지 못한 Exception이 발생한다면 그 때는 Crash가 나겠지요. Try로 감싼다고 무조건 Crash를 막지는 못 합니다.) Finally는 Exception.. 2020. 1. 28.
ArrayIndexOutOfBoundsException과 ViewHolder의 getAdapterPosition사용 RecyclerView를 이용해서, list상의 아이템 중 하나를 유저가 클릭한 경우, 해당 View의 position을 알아오기 위해, ViewHolder에서 getAdapterPosition을 사용하는 경우가 있습니다. 이런 경우에 ArrayIndexOutOfBoundsException이 발생하는 경우가 있는데요. 오늘은 이것의 원인과 대응 방법을 정리해 보도록 하겠습니다. 1. ArrayIndexOutOfBoundsException의 원인 ViewHolder에서 getAdapterPostion()메소드를 호출 한 경우, 디폴트 값은 "RecyclerView.NO_POSITION"인데요. 이 값이 바로 "-1"입니다. getAdapterPosition메소드는, 아이템이 있을 경우에만 해당하는 posi.. 2019. 10. 18.
RxJava2의 Global Error Handler 대응 #UndeliverableException 오늘은 RxJava2의 Global Error Handler에 대해서 정리해 보도록 하겠습니다. 이 글은 UndeliverableException이 발생하는 케이스에 대응하는 방법이기도 한데요. 재현하기가 쉽지만은 않은 케이스입니다. 하지만, 프로덕트로 Playstore에 출시하게 되고, 다양한 기기와 상황에서에서는 언젠가는 마주치게 되는 Exceptoin이기도 합니다. 1. 문제 아래와 같이 이미 cancel되었거나 dispose되어서 consumer가 갈 곳이 없다고 나와있습니다. 무슨 Exception이길레, 해결할 방법에 대한 link까지 제공해 주고 있는 것일까요? 이것은 RxJava2로 업그레이드 하면서, 달라진 ErrorHandler를 적용하지 않아서 발생한 문제인데요. 이것이 무엇이고 왜 .. 2019. 10. 16.
APK 빌드 시 Lint found fatal errors 에러가 발생할 경우의 대응 테스트가 끝나고 Release빌드를 만들기 위해서, Signed APK를 빌드하다가 Lint found fatal errors를 만나는 경우가 있습니다. 오늘 글에서는 이 에러가 발생하는 경우의 대응 방법에 대해서 정리해 보도록 하겠습니다. 1. Lint Found Fatal Error 안드로이드 스튜디오는 Lint라는 코드 스캔 도구를 이용해서, 빌드시에 코드의 문제들을 찾아내 주는데요. 이 때 Fatal Error가 나는 경우가 있습니다. 이 때는 build리포트를 통해서 상세하게 해당내용을 알려주기 때문에 대응하기도 쉬운편인데요. 한가지 문제는 이 에러가 발생한 원인에 대한 Report를 어디서 찾느냐 인데요. 그것은 아래에서 보도록 하겠습니다. 2. Build Report 의 위치 lint가 찾아.. 2019. 10. 6.
ADB(Android Debug Bridge)를 맥 OS에서 사용하는 방법 맥에서 개발하면서 ADB를 사용하려고 하는데, 어떻게 접근하면 되는지 막막할 수 있는데요. 오늘은 손쉽게 adb를 설치하고 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 1. ADB(Android Debug Bridge) Android 디버그 브리지는 앱을 개발하면서 연결된 휴대폰이나 에뮬레이터와 통신할 수 있는 유용한 도구입니다. 예를 들면 저 같은 경우 알람앱을 만들고 얼마나 많은 알람이 휴대폰에 등록되었는지 등을 확인하는데 사용하였는데요. 이에도 활용용도가 매우 많아서 디버깅 하는데 많은 도움이 됩니다. 2. ADB가 설치된 위치 ADB는 어디에 있는걸까요? adb 도구는 android_sdk/platform-tools/ 폴더에 위치하고 있습니다. 그럼 android_sdk폴더는 어디에 위치해 .. 2019. 9. 1.
Firebase의 CrashLytics를 Slack과 연동해서 알림받기 Crash가 발생할 때 가장 중요한 것은 빠르게 알림을 받는 것인데요. 이메일을 통해서도 알람을 받지만, Slack과 같은 메신저를 통해서 하나의 채널에서만 모아서 받는 다면, 관리하기도 더욱 좋아질텐데요. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 참고로 CrashLytics가 Fabric에서 Firebase로 이사가게 됩니다. 2020년초까지는 계속 Fabric으로 지원을 한다고 하지만, 지금부터 만드는 앱에서는 Firebase기준으로 하는 것이 좋겠지요. 이 글도, Firebase의 CrashLytics를 Slack과 연동하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Firebase 콘솔에서 설정 Firebase의 콘솔에서 좌측상단의 설정> 통합에 들어가면 아래와 같이 Slack과 연.. 2019. 5. 23.