안드로이드 (62) 썸네일형 리스트형 [안드로이드 멀티 모듈] 3. build-logic 모듈 만들기 이전 포스팅에서 4개의 모듈을 만들었는데 각각 build.gradle.kts 파일이 생성되었고, 아래처럼 빌드와 관련된 중복 코드가 증가했습니다. 앱이 커질수록 모듈과 중복 코드는 계속 증가할 것입니다.// build.gradle.kts (Module :home:data)plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android)}android { namespace = "com.multi.module.home.data" compileSdk = 34 ...}...// build.gradle.kts (Module :home:presentation)plugins { alias(.. [안드로이드 멀티 모듈] 2. 모듈 생성 후 관계 정의하기 이번 포스팅에서는 안드로이드 멀티 모듈 아키텍처를 구성하기 위해 모듈을 만들겠습니다. 저는 모듈을 app, home:presentation, home:domain, home:data, core:presentation:designsystem로 구성할 것입니다. app 모듈은 자동으로 생성되므로 나머지 모듈을 만들겠습니다.1. Android Library와 관련된 모듈 만들기모듈이 안드로이드에 의존적인 경우, 모듈을 만들 때 Android Library를 선택하고 만들면 됩니다. 여기서는 아래의 모듈들이 Android Library에 해당됩니다.같은 방법으로 아래의 모듈을 만들겠습니다.home:presentationhome:datacore:presentation:designsystem2. Java or Ko.. [안드로이드 멀티 모듈] 1. 멀티 모듈 개념과 장단점 안드로이드 멀티 모듈 시리즈에서는 멀티 모듈에 대한 이해와 실제 프로젝트에서 어떻게 세팅하는지에 대해 다룰 예정입니다. 코드 작업을 수행한 경우, 각 포스팅 하단에 Github 링크를 공유할 예정이며, 브랜치를 확인하시면 됩니다. GitHub - taein8935/multi-module-template-aosContribute to taein8935/multi-module-template-aos development by creating an account on GitHub.github.com먼저 멀티 모듈을 이해하기 전에 모듈이 무엇인지 살펴보겠습니다.1. 모듈이란?모듈은 간단히 말해서 라이브러리라고 생각하면 됩니다. 프로젝트에 추가한 모든 라이브러리(의존성) 또한 모듈입니다.즉, 특정한 목적을 수행하.. [안드로이드] Dynamic Json Deserialization 최근 API의 Response 형태를 살펴보면 json이 다양한 형태로 응답을 주는 경우도 있습니다. 안드로이드에서 이러한 Dynamic JSON을 효과적으로 다루는 방법에 대해 포스팅하겠습니다.// 다양한 형태로 오는 json[ { "type": "USER", "name": "김철수", "age": 20, "birthday": "20001201" }, { "type": "GUEST", "nickname": "닉네임" }, ...]먼저 Data Class 정의 방법부터 살펴보겠습니다.1. Dynamic Json을 위한 Data Class 정의1-1. 모든 필드에 대해 nullable을 지정하는 방법 (Bad Case)d.. [안드로이드 Jetpack Compose] Custom Splash Activity 만들기 이번 포스팅에서는 안드로이드 Jetpack Compose 환경에서 Custom Splash Activity를 만들겠습니다. 그리고 Animatable() 함수를 이용하여 스플래시 화면이 서서히 나타나는 효과를 넣겠습니다. 안드로이드 12 이상부터는 SplashScreen API가 추가됐지만 Custom Splash Activity를 별도로 제작한 이유에 대해서도 설명하겠습니다. 1. 안드로이드 12 이상에서 제공하는 SplashScreen API의 장단점 해당 기능을 사용하면 별도의 Activity 없이 스플래시 화면을 구성할 수 있기 때문에 리소스와 시간을 절약할 수 있지만 정해진 규격대로만 설정할 수 있어서 디자이너와 기획자의 요구사항에는 부족할 수 있습니다. SplashScreen API의 장단점을.. [안드로이드 트러블 슈팅] 웹뷰 JavascriptInterface 난독화 주의할 점 안드로이드 앱에서 웹 콘텐츠와의 상호작용은 흔히 웹뷰(Webview)를 통해 이루어집니다. 특히 앱과 웹 서버 간의 통신을 위해 JavascriptInterface를 추가하는 경우가 많습니다. 이번 포스팅에서는 JavascriptInterface를 사용할 때 난독화 때문에 발생한 트러블 슈팅 경험에 대해 공유하고자 합니다. 1. 문제 상황 개발 중인 앱에서는 Firebase Cloud Messaging(FCM) 토큰을 서버에 전송해 푸시 알림을 받을 필요가 있었습니다. 이를 위해 웹뷰를 통해 로그인 시, 안드로이드에서 정의한 로그인 Data Transfer Object(DTO)를 Gson 라이브러리를 이용하여 JSON 문자열로 변환하고, Web Bridge 방식을 통해 데이터를 웹 서버로 전달하는 방식을.. [안드로이드 onBackPressedDispatcher] 뒤로 가기 두 번 눌러서 앱 종료하기 안드로이드 앱에서 제일 처음의 화면에서 뒤로 가기를 눌렀을 때 앱이 바로 종료되지 않고, 일정 시간 내에 뒤로 가기 버튼을 한번 더 눌렀을 때 앱이 종료되는 것을 많이 볼 수 있습니다. 이번 포스팅에서는 안드로이드 Jetpack의 OnBackPressedDispatcher를 활용해서 뒤로 가기를 두 번 눌렀을 때 앱이 종료되는 기능을 구현하겠습니다.1. OnBackPressedDispatcher란?onBackPressedDispatcher는 안드로이드 Jetpack 컴포넌트 중 하나로, 액티비티 뒤로 가기 버튼의 동작을 관리하고 있습니다. 기존에는 onBackPressed() 함수를 오버라이드해서 뒤로 가기 기능을 커스텀할 수 있었지만, API 33 이후부터 해당 함수가 Deprecated 되면서 onB.. [안드로이드 트러블 슈팅] 코틀린에서 가변인자(vararg)를 사용할 때 주의할 점 개발을 하다 보면 여러 가지 트러블 슈팅을 겪게 되는데 이번 포스팅에서는 안드로이드 코틀린에서 가변인자(vararg)를 사용할 때 발생한 문제와 주의할 점에 대해 공유하고자 합니다. 코틀린의 vararg 키워드는 함수에 가변 개수의 인자를 전달할 수 있어서 큰 유연성을 제공합니다. 그러나 제대로 알고 사용하지 않는다면, 예상치 못한 결과에 직면할 때가 있는데 vararg를 사용하다가 발생한 문제와 해결 과정에 대해 포스팅하겠습니다.1. 문제 상황코틀린에서 vararg를 사용해서 문자열 리소스 ID와 포맷 인자를 받아 로컬라이즈 된 문자열을 반환하는 함수를 따로 구현했었습니다. 제가 개발했던 서비스는 다국어를 지원하고 있었고 앱 내에 언어를 선택하는 기능이 있었기 때문에 Context.getString().. 이전 1 2 3 4 5 ··· 8 다음