Android 10

[안드로이드] 앱 배포 시 발견한 문제1개. 앱에서 광고 ID를 사용하나요? (광고 ID 선언이 불완전함) com.google.android.gms.permission.AD_ID

앱 배포를 진행하려는데 아래와 같은 이슈가 생겼다.어? 발견한 문제 1개..?    문제를 자세히 확인해보면, 정책 선언 업데이트를 하라고 나온다.    앱에서 광고 ID 를 사용하냐는 물음에 의아한 생각이 들었다.현재 배포 중인 앱은 광고 sdk 를 사용하지 않는데 왜 저런 이슈가 발생할까?그리고 매니페스트에 com.google.android.gms.permission.AD_ID 를 추가하지도 않았다. 일단 사용하지 않으니, 정책 선언 업데이트 시 아래오 같이 '아니오' 를 체킹했다.  그런데도.. 왜 동일하지?왜 발견한 문제1개 가 사라지지 않지?아래 이미지를 보면 앱 콘텐츠 조치된 선언에서 사용하지 않는다고 지정했다고 정책 업데이트를 했다고 나오는데왜.. 안되는거야?    그래서 고민했던건 현재 이..

Mobile App/Android 2024.10.20

[안드로이드] SMS Retriever API 내부앱공유에서 안되는 이유 (Debug Hash 값, Release Hash 값)

SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 Callback 받는 로직을 만든 적이 있다. https://devnuts.tistory.com/253 [안드로이드] SMS Retriever API 자동입력하는 방법은? (*Android Hash Key 가져오기 *KMC 등 본인확인 기관 SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 문자로 받은 인증번호를 Callback 받아 화면에 바로 노출시킬 수 있다. 아래 링크에 사용 방법이 잘 설명되어 있으니, 보면 좋을 것 같다. ht devnuts.tistory.com 위와 같이 만들었고, 테스트를 하려고 했는데 이상하게 내부 앱공유에서 수신문자 Text 가 콜백이 들어오질 않는다. 어? 왜그럴까?..

Mobile App/Android 2024.04.03

[안드로이드] by viewModels, LiveData Observing 이 안되는 이유

ViewModel 초기화 하는 방법 우리는 데이터 보존을 위해 ViewModel 를 초기화하여 View(Fragmet, Activity) 에서 사용한다. ViewModel 를 초기화 하는 방법은 대표적으로 두 가지로 나눌 수 있다. 1. ViewModelProvider. private val viewModel: MyViewModel by lazy { ViewModelProvider(getViewModelOwner())[MyViewModel::class.java] } 2. by viewModels private val viewModel by viewModels() 겪은 이슈 as-is > to-be 로 코드 리팩토링할 때 as-is 에서 작업했던 ViewModel 초기화 방식과 to-be 방식이 위 두 가..

Mobile App/Android 2024.02.04

[안드로이드] Fragment replace 이전 Fragment 버튼 리스너 동작 이슈

Fragment 간 이동 할 때 add, replace, remove, addToBackStack 등 다양한 방법으로 Fragment 를 다룰 수 있다. 내가 겪은 이슈는 A -> B 로 Fragment 를 이동할 시 replace 를 이용하면 기존 stack 에 쌓인 Fragment(A) 는 사라지고, replace 로 대체되는 Fragment(B) 만 남아 있어야 한다. 하지만, 그렇지 않았다. 그래서 Fragment(A) 에 있는 버튼 리스너 들이 Fragment(B) View 에서 눌리게 된다... 일단 나는 아래와 같이 코드를 작성해서, 범용적으로 Fragment 를 사용하려고 했다. replace, add, remove, popBackStack fun Activity?.moveFragment(..

Mobile App/Android 2023.09.25

[안드로이드] 이 앱은 이전 버전의 Android 를 위해 만들어진 것이기 때문에 현 기기에서 사용할 수 없습니다. (sdk 33 대응)

기간이 지나 Google store 에 앱이 보이지 않고, OS 13 대응하고 내부테스트로 앱을 말아도 "이 앱은 이전 버전의 Android를 위해 만들어진 것이기 때문에 현 기기에서 사용할 수 없습니다." 또는 "이 기기 버전과 호환되지 않습니다" 설치 버튼은 안보이고 왜? 저 두 문구가 보일까? 회사에서 이번에 Android OS 13 대응 건 때문에 서브 앱 하나를 버전 업데이트를 하게됐다. https://developer.android.com/google/play/requirements/target-sdk?hl=ko Google Play의 대상 API 수준 요구사항 충족하기 | Android Developers Google Play의 대상 API 수준 요구사항 충족하기 컬렉션을 사용해 정리하기 내..

Mobile App/Android 2023.09.18

[안드로이드] 커스텀 Switch (thumb 이미지 넣기, track 사이즈 조정)

이번 회사 개발과제에서 Switch 를 커스텀해서 만들어야 하는데 원하는대로 만들어지지 않아 고생한 걸 기록할 생각이다. Switch 는, 클릭시 Flag (true/false) 를 이용하여 on/off 를 할 수 있는 뷰다. Switch 는 Custom 을 하지 않을 경우는 아래와 같다. 내가 구현해야 할 디자이너가 만들어준 Switch 는 아래와 같다. 위와 같이 Custom Switch 를 만들기 위해서 필요한 파일은 아래와 같다. 일단, track 이랑 thumb 개념은 알고 있을 것이다. track 은 스위치에 길다란 부분이다. 그리고 돌출된 원형이 thumb 이다. shape_switch_thumb_off.xml => Vector 이미지 (디자이너가 만든 이미지를 svg 로 Import) sh..

Mobile App/Android 2023.08.31

[안드로이드] Error. You need to use a Theme.AppCompat theme (or descendant) with this activity.

커뮤니케이션 문제가 발생했었다. QA 프리징 기간에 코드를 수정하여 develop 브랜치에 push 를 했는데, 정기배포에 해당 커밋내용이 빠져버렸다. 역시나 이슈가 발생했다. 그래서 수정한 코드를 재반영한 긴급배포를 진행하고, Crashlitics 을 통해 모니터링하는 도중에 위와 같은 Crash 가 발생했다. You need to use a Theme.AppCompat theme (or descendant) with this activity. 위 에러는 말 그대로 M Theme.AppCompat 으로 해당 Activity 를 변경해서 사용하라는 말이다. 'You need to use a Theme.AppCompat theme (or descendant) with this activity.' Activ..

Mobile App/Android 2023.08.31

[안드로이드] org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered

위 에러는 Android API 26(android 8.0 오레오 버전) 미만 에서 java.time 패키지를 사용할 떄 발생하는 오류다. 안드로이드 버전마다 지원 범위가 다를 수 있으므로, 사용하려는 기기의 안드로이드 버전에 따라 지원 여부를 확인하는 것이 중요하다. https://developer.android.com/reference/java/time/package-summary java.time | Android Developers developer.android.com 위 document 를 확인해보면 Added in API level 26 이라고 적혀있다. 즉, API 26 이상부터 java.time 패키지를 이용할 수 있다는 말이다. 그렇다면? 26 이전 버전은 못 사용할까? 아니다. 두 가..

Mobile App/Android 2023.08.18

[안드로이드] room cannot verify the data integrity. looks like you've changed schema but forgot to update the version number

[Error 발생] 신규 기능 추가 개발 중에 겪었던 Error 이다. 신규 기능을 추가하면서 로컬 DB로만 이루어진 기능이다보니, 신중하게 DB 설계를 하고를 개발을 했지만, 테이블 스키마가 변경되고, 테이블이 추가되는 상황이 왔고, 위 에러를 만나게 됐다. [확인 해야할 사항] 사실 보통 App 배포 후, 스키마가 변경되거나, 테이블 구조가 바뀌게 되면 Room Version 을 올리며 마이그레이션 코드를 추가하여 룸 데이터를 보존하며 작업을 한다. 하지만, 현재 개발기에서 개발 중에, 무의미한 더미데이터가 있을 경우 삭제 후, 다시 생성하면서 기능 개발을 하면 되는데 계속해서 위와 같은 에러가 발생했다. Androidmanifest.xml allowBackup = false 위 코드로 자동백업을 막..

Mobile App/Android 2023.08.13

[안드로이드] FragmentArgs, FragmentDirections 가 인식 안됨

문제 발생 구글 예제코드로 공부를 했을 때, FragmentArgs 가 인식이 안돼서 코드를 작업할 수 없었습니다. FragmentArgs 와 FragmentDirections 가 인식이 안돼서 빨간 글씨가 되는 경우 해결 방법 다른 블로그를 찾아보면, 필요한 의존성 주입을 하고, 데이터를 받는 Fragment 쪽에 태그를 생성하면 됩니다. 보통 이렇게만 하면 됩니다. 저는 구글에서 제공한 코드라 builde 쪽 코드를 믿고 필요한 부분이 있는지만 체크한 게 실책이였습니다. navigation version 도 확인이 필요했습니다. 안되는 알파버전에서 되는 공개버전으로 버전을 변경하니, 정상적으로 인식이 됐습니다. classpath "android.arch.navigation:navigation-safe..

Mobile App/Android 2022.12.03