Study/Android 17

성공적인 안드로이드 앱 인수인계를 위한 체크리스트

사람이 바뀌어도 프로젝트는 계속되어야 한다.사람이 바뀌면 계정, 작업환경이 바뀐다그러기에 우리는 언제나 인수인계를 준비해야만 한다.사람이 바뀐다고 모든 계정을 갈아엎고 작업환경을 갈아엎는다면 시간을 많이 사용할 것이다.이번에 팀 프로젝트에 참여하게 되면서 알아두면 좋을 것들을 정리해 봤다. 구글 콘솔, 키파일 관련앱이 만약 플레이스토어에 배포되어 있다면 후임자는 이어받아서 배포를 해야 한다.먼저 앱의 배포 권한을 이전받는 과정을 알아보자.앱 이전받기앱을 이전받으려면 다음 프로세스를 거치면 된다.https://support.google.com/googleplay/android-developer/answer/6230247?hl=ko 다른 개발자 계정으로 앱 이전 - Play Console 고객센터도움이 되었..

Study/Android 2025.06.07

앱 현지화, 개별 앱 언어 변경 설정

저는 현재 하루를 기록하고 관리하는 Routiner라는 안드로이드 앱을 만들고 있습니다.기록알람, 반복 기록 저장과 같은 기능들을 추가하고 있습니다. 최근 들어서 앱에서 다른 언어도 지원하면 어떨까라는 생각을 하게 되었습니다.그렇게 된다면 한국 사용자뿐만 아니라 미국, 일본, 여러 나라에서도 저의 앱을 사용할 수 있어서 좋을 것 같다고 생각했습니다. 안드로이드의 경우 어떻게 적합한 리소스를 찾을까?https://developer.android.com/guide/topics/resources/providing-resources?hl=ko#BestMatch 앱 리소스 개요 | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 앱 리소스 개요 컬렉션..

Study/Android 2025.05.04

[Hilt] @Provides를 사용하는 경우 object 키워드로 클래스를 정의해야 하는 이유

Android의 DI 라이브러리인 Hilt 공식 문서를 살펴보면@Provides를 사용하여 인스턴스 삽입 케이스에서@Module 애노테이션을 부착한 클래스를 object 키워드로 설정했습니다.왜 class가 아닌 object 키워드를 사용한 지에 대해 알아보겠습니다.object 키워드란?Kotlin에서 object 키워드가 의미하는 바는 클래스를 정의함과 동시에 객체를 생성하는 것입니다.즉 사용자의 객체 생성 없이 해당 객체를 사용할 수 있음을 의미합니다.class 키워드 대신 object를 사용하면 해당 클래스의 객체는 싱글턴으로 생성됩니다. 그 외에 다른 용도로 object 키워드를 사용할 수가 있는데해당 글과는 맞지 않아 적지 않겠습니다. 오늘 글의 예시인 ApiModule입니다.ApiModule은..

Study/Android 2024.12.18

[Android] 멀티모듈 프로젝트 UI단에서 httpException을 처리하는 방법

서두 저는 최근 nexon open api를 이용하여 "메이플스토리" 게임의 캐릭터 정보를 검색하는 앱을 만들고 있습니다. 해당 글 또한 해당 앱을 만들면서 retrofit2.HttpException을 적절한 에러 메시지로 표시하는것을 설명한글입니다. 해당 앱에대해 더 궁금하시다면 아래 링크를 방문해주시면 감사하겠습니다. https://github.com/hegunhee/MapleFinder GitHub - hegunhee/MapleFinder Contribute to hegunhee/MapleFinder development by creating an account on GitHub. github.com 사전 설명 해당 앱은 현재 Multi Module로 구성되어있고 다음 그림과 같습니다(해당 글에 포..

Study/Android 2024.03.11

Moshi에서 kotlinx.serialization로 변경하게된 이유

서두 저는 최근 nexon open api를 이용하여 "메이플스토리" 게임의 캐릭터 정보를 검색하는 앱을 만들고 있습니다. 해당 글 또한 해당 앱을 만들면서 Json 직렬화/역직렬화 라이브러리를 변경하게된 이유를 설명한글입니다. 해당 앱에대해 더 궁금하시다면 아래 링크를 방문해주시면 감사하겠습니다. https://github.com/hegunhee/MapleFinder GitHub - hegunhee/MapleFinder Contribute to hegunhee/MapleFinder development by creating an account on GitHub. github.com Moshi에서 Serialization로 전환하게된 계기 (현 상황) 캐릭터의 장비 정보를 받기위해 api response..

Study/Android 2024.03.03

compileSdk vs targetSdk

최근에 플레이스토어에 올려놨던 앱의 새 버전을 올려놓으려 구글 콘솔에 aab파일을 올려놨지만 targetSdk를 설정하지 않았다는 이유로 누락이 되었습니다. 찾아보니 build-logic 작업을 하던도중 compileSdk만 설정되어있고 targetSdk를 누락시켜서 해당 상황이 만들어졌던것이었습니다. 그때 궁금했던점이 targetSdk와 compileSdk의 차이는 무엇일까 하면서 정보를 찾아보고 유튜브 영상도 보게되었습니다. https://www.youtube.com/watch?v=nXXvWXgXEYs 평소에 자주 보는 Android 영상입니다. CompileSdk (컴파일타임) compileSdk는 앱을 컴파일 하는데 사용할 SDK버전을 말합니다. compileSdk를 최신으로 설정하면 최신 API..

Study/Android 2024.02.21

BindingAdapter 적용

지금 현재 진행하고있는 프로젝트에서 BindingAdapter를 사용해서 쉽게 RecyclerView의 데이터를 변경하려했지만 실패했다. 결국 state Pattern을 사용해서 viewmodel의 LiveData를 옵저빙해서 사용하긴했지만 BindingAdapter를 사용하지못했다는 아쉬움은 계속 남았습니다. 그리고 현재 공부를 다시해 공부용 앱에다가는 BindingAdatper를 성공시켰습니다. ObservableArrayList가 아닌 LiveData를 사용하였습니다. 그리고 ObservableArrayList를 사용하는방법은 잘못된 방법같습니다.. 그리고 버튼이 눌릴경우 데이터가 추가되는 방향으로했지만 버튼이 눌렸을때의 로직을 작성하고 ArrayList의 데이터는 변경되었지만 BindingAdap..

Study/Android 2022.04.13

Android의 Context

Application, Setvice, Activity 모두 Context를 상속하고 있습니다. 공식 문서에 나와있는 Context의 설명을 확인해보면 애플리케이션 환경에 대한 전역 정보가 Context로 연결됩니다. Context는 구현이 Android 시스템에 의해 제공되는 추상 클래스입니다. 애플리케이션 별로 리소스 및 클래스에 대한 접근은 물론 Activity의 실행, 브로드캐스팅 및 Intent 수신과 같은 애플리케이션 레벨에 대한 호출을 허용합니다. 쉽게 설명해보자면 Context를 이용하면 getResource(), startActivity(), startSetvice(), getSystemService()와 같이 시스템 레벨의 정보를 얻을 수 있는 메소드를 사용할 수 있습니다. 또한 Con..

Study/Android 2022.04.04

안드로이드 데이터 바인딩

Databinding이란? xml파일에 Data를 연결(binding)해서 사용할 수 있게 도와주며 Android JetPack라이브러리의 하나의 기능 입니다. data binding은 왜 사용할까? 데이터 바인딩을 사용하면 데이터를 UI 요소에 연결하기 위해 필요한 코드를 최소화할 수 있습니다. data binding을 사용했을 때, 당장 가시적으로 보이는 장점들을 꼽자면 다음과 같습니다. findViewId() 를 호출하지 않아도, 자동으로 xml에 있는 View 들을 만들어줍니다. RecyclerView에 각각의 item을 set 해주는 작업도 자동으로 진행됩니다. data가 바뀌면 자동으로 View를 변경하게 할 수 있습니다. xml 리소스만 보고도 View에 어떤 데이터가 들어가는지 파악 가능합..

Study/Android 2022.01.17

콘텐츠 프로바이더

지난 글중에 액티비티 생명주기에대해 정리한것이 있지만 책을 보고 복습 겸 다시한번 정리하겠습니다. 위 글은 Do it! 깡쌤의 안드로이드 앱 프로그래밍 with 코틀린(강성윤 지음)을 보고 정리한 내용입니다. 콘텐츠 프로바이더는 앱끼리 데이터를 연동하는 컴포넌트 입니다. 앱을 개발하면서 다른 앱의 데이터를 사용할 때 콘텐츠 프로바이더를 이용합니다. 이때 데이터는 대상 앱의 데이터베이스나 파일 또는 앱에 할당된 메모리에 있습니다. 콘텐츠 프로바이더를 이용하면 이런 저장소에 있는 데이터를 가져오거나 수정할 수 있습니다. 어떤 앱의 데이터를 다른 앱에서 이용할 수 있게 하려면 콘텐츠 프로바이더를 이용해야 합니다. 내가 만든 앱의 데이터를 외부에 공개하려면 내 앱에 콘텐츠 프로바이더를 만들고 접근하는 방법을 제..

Study/Android 2022.01.04