전체 글

· Development
- 깃허브 페이지 기반으로 새롭게 블로그를 개설 중입니다. - 단순한 앱 개발 뿐만 아니라 개발에 대한 과정, AI 활용기, 코딩 아카이빙, 각종 실무 및 기술 관련 경험 등 다양한 것을 기록하고 공유해나갈 예정입니다. 잘 부탁드립니다 :) https://dltmddyd321.github.io/ 이승용 개발 블로그 — Android · Kotlin 개발 기록Android 개발자 이승용의 기술 블로그. Kotlin, Jetpack Compose, Coroutine 등 실무에서 얻은 개발 인사이트와 구현 과정, 코딩 아카이브, AI 기술 소식을 기록합니다.dltmddyd321.github.io
- 안드로이드에서 앱을 작업하고, 마켓에 업데이트하면 사용자에게 신규 버전 업데이트를 안내하고 싶은 경우가 있다. - 일시적인 FCM이나 백엔드 api를 활용하여 안내 기능을 구현할 수도 있겠지만 구글 자체에서 지원하는 기능으로 처리할 수도 있다.https://developer.android.com/guide/playcore/in-app-updates?hl=ko 인앱 업데이트 | Other Play guides | Android DevelopersGoogle은 AI 기술을 사용하여 콘텐츠를 사용자의 기본 언어로 번역합니다. AI 번역에는 오류가 있을 수 있습니다. 인앱 업데이트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장developer.android.com - Google Pl..
- 앱에서 사용하던 Google Play Billing Library를 7.1.1에서 8.3.0으로 업그레이드했다. - 단순한 버전 범프처럼 보였지만, 8.x는 Kotlin 2.x 이상을 필수로 요구하는 탓에 연쇄적인 의존성 업그레이드가 함께 따라왔다. 의존성 변경 전체 요약항목이전이후billing-ktx7.1.18.3.0Kotlin2.0.02.2.21kotlinx-coroutines1.7.21.10.2kotlin-stdlib-jdk7-kotlin-stdlib (통합)Hilt2.462.58Room2.6.12.8.4kapt → KSPkapt (Hilt, Room)KSP (단, Realm은 kapt 유지)- Kotlin 2.2.x 대응으로 KSP(Kotlin Symbol Processing)로 전환했고, R..
DB 관련해서 안드로이드 개발자가 받을 수 있을만한 면접 질문을 디깅 했는데, 발견한 것들 몇 가지 정리해서 공유해 봅니다.틀린 내용이 있다면 반드시 지적 부탁드립니다. 1. 데이터베이스 트랜잭션과 ACID 특성에 대해 설명해 주시고, 안드로이드 ROOM에서는 이를 어떻게 활용하나요?A - 원자성 (Atomicity)"전부 다 되거나, 아예 안 되거나 (All or Nothing)"트랜잭션에 포함된 작업들은 완전히 실행되거나, 아예 실행되지 않은 상태로 남아야 한다는 성질입니다. 작업 중 일부만 성공하고 일부는 실패하는 일은 없어야 합니다.예시 (계좌 이체): A가 B에게 10만 원을 이체한다고 가정해 보겠습니다.C - 일관성 (Consistency)"항상 올바른 규칙과 상태를 유지한다"트랜잭션이 성공적..
- 이런 태그를 잘못 올릴 때가 간혹 있는데, 깃허브 데스크톱에서 오른쪽 마우스 버튼 누르고 메뉴를 확인해도 태그 지우는 버튼이 비활성화되어 있다. - 당황하지말고 터미널 열어서 해당 프로젝트 폴더로 진입 후, 아래 두 명령어로 처리- 로컬 태그 지우기git tag -d 삭제할 태그명 - 원격 저장소 태그 지우기git push origin --delete 삭제할 태그명
· Knowledge/AI
- 일 단위로 특정 메일로 분류한 메일들의 내용을 최대 5줄까지 간략하게 대시보드 형태로 제공받는 시스템을 만들어봤습니다. - 요즘은 구독형 메일로 여러 가지 인사이트를 수신받는 경우가 많습니다.- 저에게는 컴퓨터를 키면 명령어 하나로 그날 받은 인사이트 메일들을 간략하게 요약받을 수 있는 프로그램이 필요했습니다. - Antigravity에게 해당 아이디어를 제공했고, IMAP 프로토콜을 기반으로 메일 데이터에 접근하여 AI가 스스로 메일 내용을 분석하고 요약할 수 있도록 했습니다. - IMAP 프로토콜이란?? 인터넷을 통해 메일 서버에 있는 이메일에 접근하고 관리하기 위한 표준 인터넷 프로토콜입니다. - 쉽게 말해, 내 기기(클라이언트)와 이메일 서버가 실시간으로 대화를 나누며 메일함 상태를 똑같이 맞..
· Knowledge/AI
gh auth login- 구글에서 제공하는 에이전트 프로그램 Antigravity를 통해 자동으로 빠르게 깃허브 푸시 커밋 등을 동작시킬 수 있습니다. - 활용 예시커밋 메시지 자동 생성: 직접 메시지를 정해주지 않고 "변경된 내용을 요약해서 적절한 커밋 메시지를 작성하고 푸시해"라고 하면, AI가 git diff를 분석해 전문적인 커밋 메시지를 자동으로 작성해 줍니다.PR(Pull Request) 생성: 푸시 후 "방금 푸시한 브랜치로 PR도 생성해 줘"라고 명령하면, GitHub CLI(gh 명령어)가 설치되어 있을 경우 PR 작성 내용까지 초안을 잡아주거나 직접 생성할 수 있습니다.안전 장치(Review): 푸시하기 전에 에이전트에게 "변경 사항을 Diff로 먼저 보여줘"라고 요청하여 최종 검토 ..
- 파이어베이스 디버깅 이벤트는 실제 테스트 디바이스를 사용하면서 등록한 로그 이벤트들의 보고 상황을 실시간으로 살펴볼 수 있는 도구다.https://firebase.google.com/docs/analytics/debugview?hl=ko#android 디버깅 이벤트 | Google Analytics for FirebaseDebugView를 사용하여 애널리틱스 구현의 검증 및 문제 해결을 위해 개발 기기에서 앱이 로깅하는 원시 이벤트 데이터를 거의 실시간으로 확인하는 방법을 안내합니다.firebase.google.com - 기존 Analytics 등록 코드 상태에서 특별히 코드를 추가할 것은 없지만 안드로이드 터미널에서 해당 디바이스에 대한 사용 설정을 해줘야 한다. echo 'export PATH..
- 구글 애드몹 광고를 삽입하는 과정- 먼저 admob.google.com에 들어가 가입 후, 새로운 앱을 추가한다. - 플랫폼 / 스토어 등록 여부 / 이름을 체크해 준다. - 앱 추가가 완료되면 메인화면으로 자동으로 이동한다. 이때, 좌측 메뉴에서 광고 단위로 진입하여 광고 단위 추가를 클릭- 이번에 배너를 구현할 것이므로 배너 선택- 광고 단위 이름을 지정하라는데, 다른 광고 단위들과 구분 가능한 명칭을 지어주면 된다. - 이렇게 광고 ID가 생성된다. 앱 ID와 배너 형태로 노출할 광고 ID이다. - 이제 안드로이드 스튜디오 build.gradle에 다음 내용을 추가해 준다.implementation("com.google.android.gms:play-services-ads:22.6.0") - 그..
Gemini를 통해 대화한 내용과 바이브 코딩의 결과물들을 기록합니다.Activity recreate 했더니 remember 변수가 초기화되었다.- 문제 상황: 앱에서 언어를 변경 후 recreate로 변경된 Locale을 적용하고자 하는데, remember 변수가 전부 초기화되어 올바르지 않은 UI 갱신을 불러일으키고 있었다. - Compose의 remember는 현재 컴포지션(화면)이 메모리에 유지되는 동안에만 값을 기억합니다. 하지만 언어 설정을 적용하기 위해 호출한 (context as? Activity)?.recreate()는 현재 액티비티를 파괴(Destroy)하고 새로 생성(Create)하는 과정을 거칩니다.프로세스 흐름사용자가 언어 변경 클릭.isLanguageChanged = true 실..
SeungYong.Lee
Win-Dev