분류 전체보기

Android/Common

[Android] Fragment에서 데이터 외부로 전달시키는 방법 - Callback

안녕하세요 점냥입니다 :) Fragment에서 클릭 이벤트 또는 특정 데이터를 외부로 전달하고자 하는 경우가 많아요. 이를 구현하기 위해 여러 가지 방법이 존재하는데요. 이번 포스팅에서는 Callback을 이용하여 데이터를 전달하는 방법을 소개해보려고 합니다. 잘못된 부분이나 더 좋은 방안이 있다면 댓글로 남겨주세요! Callback을 이용한 데이터 전달 Callback 패턴이 가장 쉽게 구현할 수 있는 방법인데요. Callback이란 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수를 의미합니다. Android에서는 Listener라고도 부르며 주로 Interface를 구현한 객체를 넘기거나 최근에는 Lambda를 이용하는 모습이 자주 보여요. setter 함수로 콜백 전달하기 clas..

Android/Common

[Android] Very Long Vector Path 해결

안녕하세요 점냥입니다 :) 최근 Vector 이미지 파일에서 Lint 경고를 내보내는 케이스를 발견하게 되었어요. Deprecated 등 코드 레벨에서 발생하는 Lint의 경우보다 쉽게 Lint를 제거할 수 있었는데요. Vector는 path를 어떻게 수정해야 할지 감이 안 오더라고요. path를 마음대로 수정했다가는 원본 이미지와 전혀 다른 결과가 나올 수가 있으니까요. 그래서 한번 찾아보았습니다 :0 Vector Vector는 점과 선, 그리고 색상 정보 등을 포함한 집합을 의미해요. 점과 선에 대한 정보로 그린 이미지는 화면 해상도와 상관없이 동일한 결과를 제공해주기 때문에 Android에서는 21 버전부터 Vector를 사용하면서 이미지를 표현하는 것을 추천하고 있다고 하네요. 반대로 픽셀 방식의..

Android/Common

[Android] 디버그 앱, 출시 앱 분리하기

안녕하세요 점냥입니다 :) 회사 입사 초, 디버그 앱과 프러덕 앱이 분리되어 있지 않아 안드로이드 폰을 사용하고 있으신 직원분들의 불만 사항이 있었어요. 실제로 마켓을 통해 회사 서비스를 이용 중이던 직원분들은 매번 안드로이드 개발팀이 개발한 앱을 테스트하기 위해 출시 버전의 앱을 지우고 디버그 버전을 설치해야 번거로움이 있었어요. 이 문제는 출시 버전의 앱과 디버그 버전의 앱의 패키지가 같아서 독립적으로 앱을 가질 수 없었기 때문이에요. 디버그 앱, 출시 앱 패키지 다르게 하기 디버그 앱과 출시 앱을 동시에 설치할 수 있게 하는 방법은 아주 간단하게 두 버전의 앱의 패키지를 다르게 하면 됩니다. 그리고 Gradle은 이 기능을 buildType을 통해 아주 쉽게 제공해줍니다. 1. buildType으로..

Android/Gradle

[Android] 빌드 속도 개선 with Gradle Options

안녕하세요 점냥입니다 :) 빌드 속도는 평소 신경 쓰고 개발하지는 않았어요. 그런데 최근 회사에서 CI/CD에 관심을 가져 Github Action으로 테스트를 해보고 있었는데, 1주 조금 지나서 무료 플랜에 제공되는 가상 머신 빌드 시간을 다 써버렸지 뭐예요. 곧바로 유료 플랜으로 결제를 시도했고 잘 사용하고 있지만, Github Action의 과금 기준이 빌드 시간이 되어 버리면서 빌드 속도를 개선에 대해서 관심을 가지게 되었어요. 여러분의 Android 프로젝트 빌드는 얼마나 걸리나요? 회사 프로젝트를 돌리면 대략 5분 정도 걸리고 주변 Android 개발자에게 주워듣기로는 오래 걸리면 30분, 적게 걸리면 5분 이내로 다양하더군요. 빌드 시간에 대한 객관적인 지표가 없다 보니 5분이라는 시간이 빠..

Android/Common

[Android] Flow 흐름을 turbine으로 쉽게 테스트 코드 작성해보기

안녕하세요 점냥입니다 :) 개발에서 테스트의 중요성은 알고 있지만 개념이 어렵거나 테스트 환경 요인으로 인해 테스트 코드 작성의 어려움을 겪고 있어요. 특히 Unit Test는 로컬 JVM에서 실행되기 때문에 Android UI Thread을 관련된 비동기 코드를 테스트하는 것이 불가능하진 않지만 복잡하고 어렵더라고요. 여러분도 그러신가요? 그런데 최근 Flow 테스트 코드를 간결하게 작성할 수 있게 도와주는 Turbine이라는 라이브러리를 알게 되었어요. 안드로이드 공식문서에도 소개된 라이브러리로 공신력이 있고 최근 클론 코딩하고 있는 nowInAndroid 프로젝트에서도 사용한 테스트 라이브러리입니다. 그래서 이번 글은 Turbine 사용법에 대해서 간단히 알아보려고 해요 :) Turbine Turb..

Android/Common

[Android] AAC ViewModel에서 Context 접근하는 방법

안녕하세요 점냥입니다 :) AAC ViewModel 즉, ViewModel에서 Context를 잘못 사용할 경우 메모리 측면에서 안 좋은 영향을 준다는 것을 알고 있어서 최대한 안 쓰는 방향으로 개발을 하고 있어요. 하지만 종종 Context의 필요성을 조금씩 느끼고 있는데요. 그럴 때마다 내가 잘못 알고 있는 것은 아닌 지, Context를 좀 더 잘 사용하는 방법이 무엇인지 고민을 하게 되었어요. ViewModel에서 Context가 필요한 상황은 class MyViewModel: ViewModel() { fun getA() { if (...) throw CustomException("이건 잘못된 상황이야!") ... } } Android에서는 HardCoded String으로 선언된 문자열을 str..

Android/Gradle

[Android] Spotless 설정으로 팀과 코드 컨벤션 맞추기

HTML 삽입 미리보기할 수 없는 소스 안녕하세요 점냥입니다 :) 처음으로 받은 코드 리뷰 중 기억나는 코멘트는 이거예요. "불필요한 개행이라 지워주세요". 당시 개행은 그저 넘어갈 수 있는 사소한 실수로 여겨 코멘트를 남긴 그분에게 서운함을 느꼈었죠. 하지만 지금은 저도 코드 리뷰를 해드릴 때 가장 먼저 개행, 공백 등의 사소한 부분부터 체크하고 있네요 :) 이처럼 한 프로젝트에 여러 명의 개발자와 협업을 하다 보면 각자 코드 스타일이 달라 부딪치는 때가 많더라고요. 그래서 오늘 소개해드릴 splotless을 사용해서 코드 스타일을 맞춰보면 좋을 것 같아요! Spotless Spotless은 선언한 코드 스타일에 맞지 않는 코드를 감지하고 자동으로 수정해주는 포맷터의 역할을 수행해줘요. 지원해주는 언어..

Android/Compose

[Android] Compose PreviewParameterProvider

HTML 삽입 미리보기할 수 없는 소스 안녕하세요. 점냥입니다 :) Compose Preview Compose Preview는 Compose로 UI를 구성하면서 앱 설치 없이 바로 UI를 확인하고자 할 때 사용하는 기능이에요. 사실 저는 이제껏 코드를 수정할 때마다 Preview에 실시간으로 반영이 된다고 알고 있었는데요. 찾아보니 String, Dp와 같은 리소스들은 실시간으로 반영이 되지만, 레이아웃 구조와 Composable 수정 등의 변경 사항은 빌드를 해야 한다고 하네요 :) PreviewParameterProvider 사용하여 State 관리하기 @Preview @Composable fun ExpandedNewsResourcePreview() { NiaTheme { Surface { NewsR..

Android/Compose

[Android] Compose - Accompanist Inset

HTML 삽입 미리보기할 수 없는 소스 (2022.09.12 기준) Accompanist Inset 라이브러리는 Deprecated 되었습니다. androidx.compose.foundation에서 관련 기능을 사용해보세요. 안녕하세요. 점냥입니다:) Android에서는 Status Bar, Navigation Bar 등등의 다양한 시스템 UI가 존재합니다. Android 최상위 뷰는 기본적으로 시스템 UI와 겹치지 않도록 InSets Padding이 적용되어 있습니다. 하지만 상태바처럼 시스템 UI 위치에 뷰를 배치하고 경우가 종종 있는 데요. Compose에서는 이를 어떻게 구현할 수 있을 까요? Accompanist Inset Accompanist는 Google에서 Compose에서 사용 가능한 여..

Android/Gradle

[Android] RepositoriesMode

HTML 삽입 미리보기할 수 없는 소스 안녕하세요 점냥입니다 :) 새 안드로이드 프로젝트를 만들고 settings.gradle 파일에 열어보면 RepositoriesMode를 설정하는 코드를 확인할 수 있는데요. 이 것이 어떤 기능이고 왜 필요한지 간단히 정리해보려고 합니다. Repository repositories { mavenCentral() } 안드로이드 개발을 하면서 우리는 자연스럽게 외부 라이브러리를 사용하고 있습니다. 네트워크 통신 라이브러리 Retrofit, Json 파싱을 위한 Gson, 심지어 Android Jetpack 라이브러리까지요. 그런데 Gradle 스크립트에서 외부 라이브러리의 패키지와 버전만 명시해주고 있을 뿐 url은 보이지 않습니다. 어떻게 다운로드할 수 있었을까요? G..

점냥
'분류 전체보기' 카테고리의 글 목록 (4 Page)