Android/문제해결

⛔ 문제사항 구글 배포를 하려고 aab 파일을 등록해놓고 보니 광고를 사용하지 않음에도 이러한 에러가 나왔다. 분명 우리 Manifest 파일에는 광고 권한을 기재하지 않았는데도 '예'로 응답하라고 한다!✅ 해결방안 Firebase crashlytics를 앱에 연동했거나, analytics를 연동했다면 광고 권한이 자동으로 들어간다고 한다. 우리는 Firebase를 적극적으로 활용한 경우이기 때문에 아무래도 광고 권한이 들어간 모양이다. '예'로 응답하고 아래 체크박스에서 애널리틱스로 체크해준 뒤 심사에 맡기면 된다. ❗출처참고 사이트 : https://minchanyoun.tistory.com/170 [Android] com.google.android.gms.permission.AD_ID 이슈 해결안녕..
⛔ 문제사항 Firebase Google Login을 통해 회원가입하는 로직을 구현했으니 이제는 회원탈퇴를 구현하던 때였다. 회원탈퇴 로직을 모두 만들고 테스트할 땐 잘 되다가 다음날 회원탈퇴 버튼을 누르니 제대로 동작하지 않으며Supplied auth credential is incorrect, malformed or has expired 이와 같은 에러가 발생했다. 나의 단짝친구 Gemini에게도 물어보고 Firebase 공식문서도 참고한 결과, 회원 정보를 삭제하는 것과 같이 민감한 정보를 다룰 때에는 재인증이 필요하다는 것이었다. 로그인 한지 5분이 지나면 이 시간이 경과하여 재인증을 무조건 해야하는 상황이 발생한다.✅ 해결방안우선 재인증 하는 로직을 구현한다.fun reAuthenticateWi..
⛔ 문제사항Firebase Google Login을 연동하던 중의 연장선이다. 힘겹게 Google Login 로직을 다 작성하고 이제 성공하나! 싶었는데 무엇 하나 쉽게 되지 않는다더니 정말로 에러가 발생해버렸다. com.google.android.gms.common.api.ApiException: 10 이런 에러가 발생했는데, 내 소중한 짝꿍 Gemini에게 물어보니 다양한 원인이 있다고 친절하게 설명해줬다. 내가 추측한 문제로는 단연 SHA-1 키의 불일치 문제였다. Firebase Console에서 우리 프로젝트의 SHA 인증서 지문에서는 SHA 키가 2개 등록 되어있었기 때문이다. 밑에 노란색으로 경고 표시가 뜬 SHA-1 키가 내가 구글 로그인을 연동하며 추가한 것이고, 위에 멀쩡한 키는 팀장 ..
⛔ 문제사항  여행 채널 추천 카테고리를 보면 5개 밖에 출력되지 않은 현상을 볼 수 있다. 내가 의도한 것은 총 6개의 채널이 추천되며 그리드뷰가 꽉 채워지는 것이었는데 다른 화면을 이동하거나, 앱을 재실행하여 해당 Fragment가 다시 그려질 때마다 채널이 2개부터 6개까지 그려지는 개수가 그때그때 다르다는 것이었다. 그러나 아래 스크린샷과 같이 로그캣을 찍어보면 itemList의 총 개수는 6개로 잘 넘어오는 것을 알 수 있었다. 당시 코드다. channelList는 LiveData로 관리하고 있고, channel을 가져오는 api는 async await을 통해 비동기적으로 받아오고 있었다.class HomeViewModel( private val channelRepository: Chann..
⛔ 문제사항RecyclerView로 표현하고 있던 Item들 중에서 하나를 remove 하는 로직을 동작하자 이러한 에러가 나타났다.✅ 해결방안이는 Apapter에서 관리하는 데이터와 ViewHolder게 그리는 View가 일치하지 않아 발생하는 문제다.그냥 notifyDataSetChanged() 해주면 쉽게 해결되는 문제였다! 하지만 구글링을 좀 더 하다보면 스크롤을 빠르게 내린다거나 둥, 스크롤 관련된 문제로 많이 나타나는 것처럼 보였는데 대부분 LinearLayoutManager를 Wrapper로 감싸주는 방법을 많이 사용했다. 나 같은 경우엔 단순히 데이터가 바뀌었다고 notify 해주기만 하면 됐기 때문에 손쉽게 해결할 수 있었다.
⛔ 문제사항레트로핏을 연습하는 과정에서 BuildConfig를 찾을 수 없다는 에러가 나타났다.✅ 해결방안해결방법은 비교적 간단한데, build.gradle 파일에서 buildConfig 값을 true로 지정해주고android { namespace = "com.example.myApplication" compileSdk = 34 ... 중략 buildFeatures{ buildConfig = true //여기 viewBinding = true }} gradle.protperties 파일에 값을 또 하나 추가해주면 된다.android.defaults.buildfeatures.buildconfig=true 이렇게 추가해도 안 된다? 안드로이드 스튜디오를 한..
⛔ 문제사항코틀린으로 함수형 프로그래밍을 해보자! 라는 과제에 맞추어 기존에 진행 했던 프로젝트를 리팩토링 하는 겸, 함수로 분리할 수 있는 것들을 최대한 분리하는 과정에서 마주친 문제다.// 달력 다이얼로그 출력private fun dialogCalendar(dateText: String) { val calendar = Calendar.getInstance() val year = calendar.get(Calendar.YEAR) val month = calendar.get(Calendar.MONTH) val day = calendar.get(Calendar.DAY_OF_MONTH) val listener = DatePickerDialog.OnDateSetListener { _..
⛔ 문제사항xml내부에 재사용되는 UI를 include하여 코드를 작성하고 있는데 자꾸 이런 에러가 발생했다.✅ 해결방안원인은 include한 코드와 include 내부 xml 코드의 id값이 달라서 발생하는 문제였다.이렇게 include한 바깥 Activity xml과 내부 Layout xml의 id값을 맞춰주면 해당 에러는 사라지게 된다.그런데, 나는 한 가지 더 문제가 있었는데 바로 include한 TabLayout에서는 id값을 맞춰주어도 에러가 발생한다는 것이었다.원인은 바로 tabItem에 id값을 주어서였는데, tabItem은 원칙적으로 id값을 주지 못하는 게 원인으로 보인다. (버그일수도)id를 사용해서 tabItem값에 접근할 수 없기 때문에 아래 코드처럼 getTabAt 메소드에 in..
⛔ 문제사항fakeDataList.forEachIndexed { idx, itm -> if (idx == position) { fakeDataList.removeAt(idx) mainAdapter.notifyItemChanged(idx) }}forEachIndexed를 통해 List 안의 값을 삭제하려고 했는데, 이 코드가 동작하기만 하면 앱이 강제 종료 되며 java.util.ConcurrentModificationException 과 같은 에러가 나타났다.✅ 해결방안원인은 List나 Map과 같은 컬렉션을 수정하는 도중에 다른 스레드에서 동시에 컬렉션을 수정하려고 해서 그러는 것인데, 쉽게 말하자면 List는 수정되었는데 수정되기 이전의 List에서 forEach가 계속 수행 되고 있기 때문이다...
⛔ 문제사항이 Warning 문구는 단순히 텍스트를 하드코딩하지 말란 이야기인데, 단순히 TextView에서만 이러는 건 아니고 Button 등 텍스트가 들어가는 모든 위젯에서는 이러는 것 같다. 전부터 이 거슬리는 워닝을 해결하고 싶었는데 드디어 해결 방법을 알게 되었다!✅ 해결방안res/values/strings.xml 파일 내부에 텍스트를 직접 선언해주고, 다시 파일로 돌아와 내가 하드코딩 했었던 텍스트를 지우고 key 값을 넣어주면 끝이다! 안드로이드가 이렇게 하드코딩을 막는 이유는 다국어지원을 위해서라고 한다. 쉽고 유익한 해결방법...
⛔ 문제사항강의를 들으며 모든 코드를 따라친다 해도 에러가 발생하기 마련인데, 그래도 놓친 부분이 없이 Run을 누르자마자 이러한 에러가 발생하며 앱이 이유없이 꺼졌다. ✅ 해결방안앱이 꺼진 이유는 바로 TODO 를 삭제하지 않았기 때문이다. 주석으로 되어있는 TODO가 아니라서 그런 것 같다... 앞으로 잘 삭제하고 코드를 실행하자.❗출처참고 사이트 : https://wise-99.tistory.com/43 [코틀린] kotlin.NotImplementedError: An operation is not implemented: Not yet implemented코틀린으로 앱을 만들면서 발생한 오류다. 오류가 발생한 부분은 32번 라인이다. 파이어베이스에 연동해서 데이터를 가져오려고 onDataChang..
깨비도
'Android/문제해결' 카테고리의 글 목록