Android 30

[Android] 가볍게 시작하는 Android Task

이전에 fragment Manager에 대해 알아보면서 간단하게 백 스택 구조에 대해 알아본 적이 있다. https://androidhelper.tistory.com/28 [Android] Fragment Manager, Basic 편일반적으로 운영 애플리케이션 담당 업무를 하게 되면,페이지 이동 같은 작업은 기존에 설계되어 있는 방식 따르면 되었기 때문에이 부분에 대해 신경을 잘 쓰지 않게 되었고, 따로 공부할 계기androidhelper.tistory.com 이때 간단하게 백 스택에 대해 알아보았는데, 오늘 이 백 스택과 일부 관련된 Task에 대해 한번 가볍게 더 알아보기로 하였다.ㅎㅎ 사실 담당하는 프로젝트가 다중 task를 생성하는데 이 부분이 꼬인 버그가 발견된 게 계기가 되었.. Task ..

Android/학습 2026.05.30

[Git] Git tag란, 만약 tag된 commit이 merge 된다면?

Git Tag는 특정 commit에 붙는 이름표다.더 정확히는 commit의 SHA 해시를 가리키는 ref(reference)[혹은, Git object를 가리키는 ref]로,한 번 붙으면 그 commit에 고정된다. 즉, Tag는 Commit 기준으로 붙는 것이다.브랜치는 새 commit이 쌓이면 포인터가 자연스럽게 이동하지만, tag는 같은 commit을 계속 가리키는 점이 다르다. 이 차이 때문에 tag는 주로 릴리스 시점을 표시하는 용도로 쓰인다.v1.0.0을 찍은 시점의 코드는 시간이 지나도 그대로 보존되고, 언제든 그 시점으로 돌아갈 수 있다. Git Tag에 대해서..Tag는 commit의 SHA를 가리키는 ref다. 브랜치와 같은 ref지만 자동으로 이동하지 않는다.Lightweight와 ..

Android/학습 2026.05.05

[Android] 실전 예제로 보는 MVP Pattern의 장단점

회사에서 프로젝트 팀이 병합됐다.그리고 병합된 프로젝트는 Android 역사를 함께하며, MVP의 Presenter와 ViewModel이 공존하였다.신생 프로젝트에서 MVI로 Compose를 갈기던 입장에서 위기감을 느끼고 안드로이드 역사 공부를 다시 하기로 했다. MVP(Model-View-Presenter) Android 앱을 개발하다 보면 “UI 코드와 비즈니스 로직이 뒤섞이는 문제”를 자주 겪게 된다.이 문제를 해결하기 위해 등장한 대표적인 구조 중 하나가 바로 MVP(Model–View–Presenter) 패턴이다.MVP는 역할을 명확히 나눠서 코드의 가독성, 유지보수성, 테스트 용이성을 높이는 데 목적이 있다.ModelModel은 애플리케이션의 데이터와 비즈니스 로직을 담당하는 계층이다.API..

Android/학습 2026.04.12

[Android] Android 16 (target SDK 36) 대응

이전 버전인 Android 15 대응 날짜를 살펴보면, 아마 Google Play의 기존 앱 Android 16(API 36) 이상 target 대응은 2026년 11월쯤으로 예상된다. Android 15(API 수준 35) 대응은 새 앱 기준 2025년 8월, 기존 앱 기준 2025년 11월로 안내되었다. (관련 출처 페이지)Android 17(API 수준 37)도 나온 마당에 정말 얼마 남지는 않았을 것이다.Android 17을 대상으로 하는 앱대형 화면(sw>=600dp)에서 화면 방향, 크기 조절 가능성 및 화면 비율 제약 조건을 무시하도록 플랫폼 API가 변경되었습니다.개발자는 SDK 36에서 이러한 변경 사항을 적용하지 않도록 선택할 수 있지만, Android 17 이상을 대상으로 하는 앱에서..

Android/학습 2026.03.14

[Android] targetSdk와 compileSdk의 차이, 그에 따른 영향.

android application을 개발하다 보면,특히 앱 서비스를 운영하다 보면 버전 대응을 하게 된다. 조금만 더듬어 봐도, 분명 Android 15가 나온 지 얼마 안 되었던 것 같은데, 어느새 구글 스토어에서 "너네 앱이 Android 15로 타케팅 하지 않으면 스토어에서 내려버리겠다!"라고 협박받게 되어 부랴부랴 버전 대응을 하게 된 경험이 스쳐 지나간다. 미리미리 준비하면 좋겠지만, 기획과 운영을 치다 보면 분명 저 멀리서 홀홀 쳐다보던 신규 버전이 등에 칼을 들이대고 있다. 이제 곧 Android 16 대응도 슬슬 준비해야 하는 시즌이 되어 가는데,겸사겸사 Android의 target SDK와 compile SDK에 대해 정리해 보면 좋을 것 같다고 생각했다. comileSdk소스 코드를..

Android/학습 2026.02.22

[CS] "부동소수점"이란? 컴퓨터에서 소수를 표현하는 방법과 그에 따른 오차

학부 시절 부동소수점이라고 소수를 컴퓨터에서 이렇게 표현한다~라고 거의 심적으로는 철학자의 한 명언처럼 머리 어느 한 구석에 어렴풋이 흔적만 남아있었는데, 실제 실무에서 이 부동소수점의 근사치 오차 때문에 경곗값을 이탈하며 크래쉬가 난 것을 경험하고 말았다.이게 뭔, 거의 죽었다고 생각했던 3화에 퇴장한 엑스트라가 26화에서 흑막으로 나타난 상황이냐 정신을 번쩍 차리고 뇌 속에 있는 흔적을 더듬어 다시 정리해 보기로 했다. 부동소수점(floating point)이란?컴퓨터에서 실수(예시: float, double)를 유한한 bit를 통해 표현하는 방식 중 하나.소수점 위치를 고정하지 않고 지수와 가수를 사용하여 매우 큰 수나 작은 수를 근삿값으로 표현한다. 컴퓨터는 숫자를 bit로 표현한다. 예를 들어..

Android/학습 2026.02.07

[kotlin] by로 보는 지연 초기화 by lazy 컴파일러 동작 방식

Kotlin에서는 val과 var로 변수를 선언할 수 있다. val는 변경 불가능한 참조를 저장하는 변수이고,어원은 value로, 자바에서 final 변수에 해당한다. var는 변경 가능한 참조를 저장하는 변수이고,어원은 variable로, 자바에서 일반 변수에 해당한다. val birthday: String = "2026.01.09"var age: Int = 0 즉, var인 일반적인 변수로 언제든 값을 수정할 수 있는 변수이며, val은 읽기 전용으로 한번 초기화하면 값이 변경되지 않는 변수인 것이다. 아 참고로, val 변수가 불변일지라도 참조에 대한 불변으로 참조를 가리치는 객체의 내부 값은 변경될 수 있다.즉, Array 같은 목록형 변수로 초기화된다면 처음 초기화 때의 목록과 다른 내용으..

Android/학습 2026.01.10

[Firebase] Remote Config, 어떻게 사용하고 왜 사용하는가?

Firebase Remote Config는 Android 네이티브 앱 개발자로서 일하다 보면 한 번쯤은 들어본다.Firebase 공식 문서의 Remote Config 설명에서는 사용자가 앱 업데이트를 다운로드할 필요 없이 클라이언트 앱 또는 서버의 동작과 모양을 변경할 수 있는 클라우드 서비스라고 설명한다. 네이티브 특성상 사용자에게 배포되기까지의 시간과 사용자들의 버전 상이성 때문에 해당 서비스가 자주 거론되기는 하는데, 정확히 Remote Config가 어떤 서비스이고 왜 사용하는지에 대해 알아보도록 하자. Firebase Remote Config공식 문서에 다음과 같이 설명되어 있다.사용자가 앱 업데이트를 다운로드할 필요 없이 클라이언트 앱 또는 서버의 동작과 모양을 변경할 수 있는 클라우드 서비..

Android/학습 2025.11.29