Android/트러블슈팅

    [Android/트러블슈팅] NetworkOnMainThreadException 발생으로 살펴보는 Thread

    들어가기 전MockWebServer로 API 테스트를 하면서 NewtworkOnMainThreadException이 발생하였다.이번 포스팅에서 Android Thread에 대해 살펴보면서, NetworkOnMainThreadException가 무엇인지, 왜 발생한 것인지 등 새롭게 알게된 내용들을 정리하도록 하겠다.NetworkOnMainThreadException 이란?android.os.NetworkOnMainThreadException해당 Exception은 Network 작업을 Main Thread에서 실행했을 때 발생하는 Exception이다.그렇다면 안드로이드에서는 왜 Network 작업을 Main Thread에서 해서는 안될까?질문에 답을 하기 위해서 Thread의 개념부터 Android의 ..

    [Android/트러블슈팅] Kotlin 1.9.0 & Hilt Version Error

    들어가기 전kotlin 1.9.0 을 사용하는 프로젝트에서 Hilt를 적용하려고 하니error: [Hilt] Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is >= 1.0 at dagger.internal.codegen.kotlin.KotlinMetadata.metadataOf(KotlinMetadata.java:206) at dagger.internal.codegen.kotlin.KotlinMetadata.from(KotlinMetadata.java:18..

    [Android] WorkManager를 활용해 주기적인 백그라운드 작업 실행하기 (15min ver)

    지속적인 디버깅 탐지 (15min ver)WorkManager의 이슈 발생Workmanager의 주기를 15분으로 설정했으나 15분보다 더 짧은 시간에 work 발생앱 실행시 동시다발적으로 여러개의 work 발생문제상황 인식 및 분석1. MainActivity에 생성한 detectDebug WorkManager의 WorkInfo의 state를 살펴봄⇒ 여러개의 work가 한번에 enqueue되고, doWork()가 실행되는 것을 볼 수 있었음.2. Application에 등록한 createWorkManager가 여러번 실행되는 것인가? 라고 생각 함⇒ Application의 onCreate(), createWorkManager()의 함수 호출을 확인해 봄15분보다는 짧은 시간에 수행되어서 장점이라고 생각..

    [Android/트러블슈팅] 구글 플레이스토어 키스토어 분실 재설정 방법

    들어가기 전 엄빠도어렸다 업데이트를 위해 bundle을 추출하는 과정에서 키스토어가 분실된 사실을 알게되었다. 파일을 정리하면서 지워버린 것이다.. jks 파일이 없으면 bundle 추출이 불가능하기 때문에 이를 재설정해야했다. 따라서 이번에 플레이스토어에 올린 앱의 키스토어를 재설정하는 방법을 포스팅 하고자한다. 1. 새로운 keystore 생성 안드로이드 스튜디오에서 Build > Generate Signed Bundle or APK 로 들어가 apk 또는 bundle을 선택한다. [사진 1]과 같이 뜬다면 Create new ... 를 누른다. Key Store path : 새로운 키스토어와 jks 파일이 저장되는 위치이다. Password : 새롭게 지정 할 키스토어의 비밀번호를 설정하면 된다. ..

    [Android/트러블슈팅] 앱을 삭제했는데 데이터가 남아있다고요?

    들어가기 전 릴리즈 apk로 테스트를 하다가 처음 앱을 설치하고 실행하면 로그인 및 다른 기능들이 정말 잘 작동되는데, 앱을 삭제했다가 다시 깔아서 테스트를 하면 앱이 터지는 문제가 발생하였다. 이 과정에서 겪은 트러블 슈팅과 해결 방법을 작성해보도록 하겠다. 엄빠도 어렸다 릴리즈를 준비하면서 릴리즈 apk로 테스트를 계속 진행했는데, 첫 설치 후 앱을 실행하면 정말 잘 작동하였다. 문제였던 카카로 로그인도 잘 되고, 여러 기능들에 문제가 없었다. 그러나 앱을 삭제하고 다시 깔아보니 실행과 동시에 앱이 터지는 문제가 발생했다. 무엇이 문제일까? 1. 디버그 apk 에서는 괜찮았으니까, 코드 중에 buildConfig.DEBUG로 설정 한 부분이 있어서, 해당 부분이 릴리즈 apk에서 작동하지 못해서 생긴..

    [Android/트러블슈팅] Keystore 정보 확인하는 법

    들어가기 전 릴리즈 apk 를 뽑을 때 keystore를 사용하게되는데, 내 keystore에 별칭을 까먹는 경우가 있었다. 이 때 내 keystore에 정보를 알 수 있는 방법을 알아보자. cmd에 keytool -list -v -keystore 'jks 파일 경로' 를 입력하고 비밀번호를 입력하면 keystore 정보가 다 나온다. 이 때 경로를 입력하려면 " " 를 지워야지 정보가 나온다. 지우지 않으면 아래와 같은 에러가 뜬다. keytool error: java.lang.Exception: Keystore file does not exist:

    [Android/트러블 슈팅] Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. / 안드로이드 스튜디오 자동완성 에러 안뜨는 오류

    들어가기 전 kakao login api 문제로 키해시를 뽑다가 환경변수를 전부 날리는 실수를 저질렀다. 안드로이드 java home이나 gradle을 담은 환경변수가 날라갔고 그 이후로 안드로이드 스튜디오에 자동완성 및 에러가 안뜨는 문제가 발생하였다. 이를 해결하기 위한 과정과 방법에 대한 내용을 포스팅하고자 한다. Error 내용 Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. 라고 Notification에 떴다. 만약 해당 에러 없이 안드로이드 스튜디오 자동완성과 에러가 안뜬다면 Power Save Mode가 켜져있는지 확인해야한다. power save mode가..

    [Android/트러블슈팅] Kakao Login API Apk 추출 시 로그인 안되는 문제/KeyHash 오류

    들어가기 전 '엄빠도 어렸다'라는 서비스를 만들면서 겪은 kakao login api 트러블 슈팅에 대해 포스팅하고자 한다. 문제 설명 우리 팀은 릴리즈를 앞두고 안드로이드 디버그 apk와 릴리즈 apk를 추출했다. 이 apk 파일을 설치 후 어플에 접속 했을 때 애뮬레이터에서는 잘 돌아가던 kakao login이 안되는 문제가 발생하였다. error description을 보면 401 auth error, 즉 kakao 키해시 등록이 안 된 키해시가 들어왔다는 의미이다. 키해시 확인 error descption을 바탕으로 알맞는 키해시를 찾기 위해 노력했다. https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-h..

    [Android 오류] Button Style 적용 안됨/색상변경 안됨

    Button Style 적용 안됨/색상변경 안됨 문제 style xml을 만들어 적용해도 만든 style로 적용되지 않는 문제가 발생했다. 해결 themes.xml에서 parent = "Theme.AppCompat.Light"으로 변경한다.

    [Android 오류] JAVA.LANG.CLASSCASTEXCEPTION 에러 발생

    JAVA.LANG.CLASSCASTEXCEPTION - 클래스 형 변환 연산을 잘못 할 경우 발생하는 예외이다. 트러블슈팅 val value = etValue.text.toString() setFragmentResult("requestKey", bundleOf("bundleKey" to value)) 원인 - value부분을 etValue.text로 설정 후 받는쪽 Activity에서 String으로 받아 JAVA.LANG.CLASSCASTEXCEPTION 이 발생하였다. 해결 - .toString() 으로 String 자료형으로 바꾸니 해결되었다.