하루에 0.01%라도 성장하자
반응형

Android 15

Android AD_ID permission targetSDKVersion 33

어느날 잘 동작하던 앱을 업데이트 해야 하는 상황이라 aab bundle로 말아서 배포하려고 앱을 검토하고 있었다. 구글 콘솔에 앱 심사를 올리려고 앱을 올렸는데 갑자기 AD_ID 이슈가 터졌다. 확인해 보니 targetSDKVersion 33 을 타겟하는 경우 내가 AD_ID를 직접 사용하지 않아도, 내가 사용하려고 하는 외부 SDK에 AD_ID를 사용하게 되면 이걸 명시해야 하는 정책이 생겼더라. 내가 사용하는 SDK중 어떤게 AD_ID를 사용하나 봤더니 애널리틱스... 이건 뺄 수 없는 SDK였기 때문에 해결방법을 찾아봤다. 해결방법 1. AndroidManifest.xml 에 권한 선언하기 2. 구글 콘솔에 앱 콘텐츠 정책 변경 이 방법들은 둘다 해야 하는 방법이 아닌, 둘중 하나만 하면 되는 방..

Develop/Android 2023.04.05

RecyclerView No layout manager attached; skipping layout

Android RecyclerView를 사용하는데, 정상적으로 아이템을 바인딩 했는데도 보이지 않는 이슈가 잇었다... 이때 아무래도 내가 Flow를 처음 도입해서 이렇게 어이없는 실수를 했을지도 .. (하! ) No layout manager attached; skipping layout Logcat에는 위와 같은 에러가 발생했고, 이 에러를 보는데는 생각보다 오래 걸렸다... 하 확인해 보니 내가 recyclerView에 레이아웃 매니저를 등록하지 않아서 발생하는 이슈였다.. 이렇게 꼭 레이아웃 매니저를 등록해야 에러가 발생하지 않는다.

Develop/Android 2023.01.02

Fragment Commit, CommitAllowingStateLoss 그리고 재현방법

이번에는 Fragment 중 Commit에 관한 내용을 작성한다. 서비스 중인 앱에서 아래와 같은 크래쉬 이력이 남았다. Can't access the Fragment View's LifecycleOwner when getView() is null i.e., before onCreateView() or after onDestroyView() 원인을 찾아보니 Activity 에서 onSaveInstanceState 가 호출된 후 Fragment 에서 commit 이 동작되서 발생한 문제였다. onSaveInstanceState의 호출 시점은 여기를 참고해 보면 좋겠다! 해결 방법으로는 commit 대신에 commitAllowingStateLoss 를 실행해주면 해결된다는 레퍼런스를 쉽게 찾을 수 있었다. ..

Develop/Android 2022.11.23

Android - USB 없이 Wifi로 디바이스로 디버깅 하는법

회사 vpn이 별로라서 ( USB 연결 해지 하면 VPN 끊김 ) USB를 연결하지 않고 디버깅 하는 법을 검색했다. 생각보다 많은 사람들이 쓰고 있었는데, 검색하면서 든 생각은 ' 아 생각보다 나는 adb와 친하지 않구나.. ' 싶었음. 각설하고 USB 없이 wifi 로 디바이스를 연결하여 디버깅 하는 법을 기록한다. * 기본적으로 adb 설치, 환경변수가 등록되어 있어야 편합니다. 1. 기기 USB 연결 ( 마지막 연결 ㅋ ) 2. cmd or terminal 열기 3. adb tcpip 5555 // 5555 포트 열기 4. USB 연결 해지 5. 와이파이 연결된 디바이스 아이피 확인 - 설정 -> 와이파이 -> 와이파이 상세 -> 아이피 확인 6. adb connect '확인된 ip ' - ex)..

Develop/Android 2021.02.15

Android - TYPE_STEP_COUNTER, TYPE_STEP_DETECTOR

SensorManager를 이용한 걸음 수 체크를 하는 앱을 개발하기 위해서 두가지 센서에 대한 특징 파악이 필요하다. TYPE_STEP_COUNTER 특징으로는 핸드폰이 켜진순간 부터 현재까지 누적된 카운트를 보여준다. 따라서 서비스(Service)를 이용한 백그라운드 앱실행을 하면서 센서 수치를 측정될 때마다 측정할 필요는 없다. 센서가 자동으로 누적되기 때문. 다른 특징으로는 핸드폰을 껐다가 다시 키면 수치가 0으로 초기화 된다. 다만 하루치의 걸음 수를 측정하려면 계산이 필요하다. 계산하는 법은 1. 앱이 실행되면 현재 센서 수치를 저장한다. ( previousStep ) 2. 00시나 23시 59분에 센서 수치를 한번 더 측정한다. ( currentStep ) 3. 현재수치에서 저장한 수치를 뺀..

Develop/Android 2020.12.27

Android - 날짜가 변경될 때 발생하는 이벤트.

이번 프로젝트에서 날짜가 변경될 때 이벤트를 전달 받아 특정한 코드를 실행시켜야 하는 업무가 주어졌다. 날짜가 변경되었을 때 발생하는 이벤트는 아래와 같다. android:name="{.receiverClassName}" android:enabled="true" android:exported="true" > receiverClassName 영역에 상속받은 receiver를 등록해주거나, 아니면 생성해서 registerReceiver를 이용해 등록해주면 된다. 여기서 주목해야 하는 점은 이부분인데, 이 action이 device 기반으로 날짜가 변경되면 발생하는 이벤트이며, receiver에 이것을 등록해주므로써 이 이벤트를 받아 특정한 코드를 실행 시킬 수 있다. 다만! 제일 크리티컬한 이슈는 수동으로 ..

Develop/Android 2020.12.15

Android - Bluetooth 는 위치권한이 필요하다.

프로젝트를 진행하다가 Bluetooth를 연결해야 하는 상황이 있었다. 다른 프로젝트에서 사용한 샘플코드를 전달 받았고, 해당 코드에는 블루투스 스캔을 시작하기 전에 위치권한을 요청하여 받았다. 다른 프로젝트에서 사용된 블루투스는 블루투스를 이용하여 위치적으로 어떠한 서비스를 하는 줄 알았고, 나는 이를 내 프로젝트에 적용하면서 위치권한 요청을 뺐다. 그랬더니 스캔이 안돼... 한 3시간 정도 삽질하다가 확인해 보니 블루투스를 사용하려면 위치권한을 요청해야 한다는 것을 알게되었다.. 그리고 나와 같이 생각하는 사람이 많은것 같았다. 블루투스를 사용하는데 왜 위치권한이 필요한거야? 그리고 찾은 글. 이글을 보고 '필요할 수도 있겠다' 라는 생각이 들었다. ( 이글도 읽어보면 이해가 된다. ) 글의 내용을 ..

Develop/Android 2020.12.14

Android App to App 통신에 관하여 - scheme

안드로이드 앱개발을 하면서 앱투앱 통신을 해야할 때가 있습니다. 예를 들면 A앱에서 B앱을 통해 인증을 받고 다시 A앱으로 돌아오는 로직을 갖는 ( KT PASS 같은.. ) 절차에서 사용됩니다. 이때 안드로이드에서 사용할 수 있는 선택지는 꽤 많습니다. 1. ContentProvider 2. BroadCastReceiver 3. Intent 4. Scheme 이 중에서 Scheme에 대한 내용을 작성하고자 합니다. 앱투앱 통신에 대한 설명이다 보니 두가지 앱이 존재합니다. 따라서 편하게 아래와 같이 명시하고 진행하겠습니다. A앱 : 호출 하는 앱 B앱 : 호출 당하는 앱 ex ) A앱이 B앱을 호출하였... scheme의 형태 scheme은 스킴, 스키마 등으로 명칭되고 있습니다. scheme://ac..

Develop/Android 2020.08.05

Android - TextView Default Padding 조절. includeFontPadding

안드로이드 앱에 폰트를 적용하면 폰트에 따라서 아래와 같은 상황이 발생한다. 먼저 위의 레이아웃 배치를 보자. 위의 레이아웃은 TextView를 vertical 형태로 적용하였다. TextView 사이에 별도의 margin 처리를 하지 않았다. 그런데 실제로 폰트를 적용하면 아래와 같은 형태로 노출된다. 해당 폰트는 NotoSansCJKKR_Black이다. TextView 사이에 margin이 없는데도 불구하고 실제로 데이터를 받아 적용하면 저렇게 margin 처럼 노출이 되는문제가 발생하였다. 이것은 폰트가 가지고 있는 TextView가 자체적으로 가지고 있는 padding 값으로 폰트가 변경되면서 눈에 띄게 padding이 적용되었고, 이전 포스팅에서 언급한 lineSpacingExtra 같은 값으로..

Develop/Android 2019.12.27

Android - Glide Radius (feat. ImageView radius error! )

ImageView를 사용하는 많은 프로그래머들이 디자이너의 요청으로, 혹은 개인의 취향으로 이미지에 radius 처리를 많이 한다. 그 대표적인 예가 SNS에 노출되는 프로필 이미지 라던가, RecyclerView 에 노출되는 List 형태의 itemView에 ImageView가 있다면 radius 처리를 해주는 것이 보기 좋다는게 이유이다. 위 이미지처럼 모서리 부분에 radius 처리를 하는 경우도 있고 아예 Circle 형태의 이미지를 만들기도 한다. Google 검색을 하면 대부분 아래와 같은 솔루션을 준다. //1. radius xml파일을 만든다. //2.ImageView에 적용해준다. GradientDrawable drawable= (GradientDrawable) context.getDra..

Develop/Android 2019.12.23
반응형