방법 1.이 방법은 인터넷에 많이 알려진 방법입니다.간단한 코드로 APK/AAB 모두에 적용 가능하지만 한 가지 주의할 점이 있습니다.archivesBaseName = "{앱 이름}-${versionName}(${versionCode})" 아래와 같이 시간과 같은 변하는 값을 추가하게 되면 빌드 성능 저하가 발생할 수 있습니다.def formattedDate = new Date().format('yyyyMMddHHmm')archivesBaseName = "{앱 이름}-${versionName}(${versionCode})-${formattedDate}" 일반적으로 Gradle은 빌드 캐시를 사용하여 동일한 작업을 반복으로 실행하지 않도록 최적화합니다.그러나 archivesBaseName이 매번 달라지면 ..
문제 상황 ViewModel에서 서버에 요청을 보낸 후 받아온 응답을 State에 반영하였을 때,Recomposition은 발생하는데 UI에는 데이터가 표시되지 않는 이슈가 있었습니다. MainActivity.kt먼저 MainScreen에선 아래와 같이 LazyColumn 내에 여러 레이아웃이 item으로 들어가는 구조입니다.Mutli ViewType RecycleView 처럼 구성 되어있습니다.@Composablefun MainScreen(state: MainState) { Log.d("MainScreen", "Top chart list: ${state.topChartList}") Scaffold( containerColor = WePLiTheme.color.black, ..
1. ignoreUnknownKeysignoreUnknownKeys = trueJSON 데이터를 역직렬화할 때, 데이터 클래스에 정의되지 않은 추가 필드(알 수 없는 키)가 JSON에 포함되어 있을 경우, 이 필드를 무시하고 나머지 필드만 역직렬화 기본값 : false사용 예시 : 서버에서 제공하는 응답에 예상하지 못한 키가 포함되어 있어도 문제없이 데이터를 파싱하고 싶을 때 사용@Serializabledata class User(val id: Int, val name: String)val jsonString = """{"id": 1, "name": "John", "extraField": "unknown"}"""// ignoreUnknownKeys가 true일 때, "extraField"는 무시되고 정상..
문제 상황Jetpack Compose에서 LazyRow를 사용하다 보면 각 아이템의 높이에 따라 LazyRow의 전체 높이가 변경되는 상황을 종종 겪게 됩니다. 특히 아래 스크린샷 같이, 제목이 한 줄 또는 두 줄로 구성되어 있을 때, 두 줄인 항목의 높이에 맞춰서 LazyRow가 고정될 것이라고 예상합니다. 하지만 사용자가 스크롤하여 해당 항목이 화면에서 사라지면 LazyRow의 높이가 줄어드는 현상이 발생합니다. 해결 방안이를 해결하기 위해선 LazyRow의 전체 높이를 아이템 중 가장 큰 높이에 맞추어야 합니다.가장 큰 높이의 항목을 기준으로 LazyRow의 높이를 고정하기 위해 SubComposeLayout을 이용합니다. SubComposableLayout은 레이아웃을 그리는 과정에서 다른 레이아..
1. Scope 지정 확장 함수핵심 로직과 부가 기능을 분리하자는 AOP(관점 지향 프로그래밍) 개념에서 떠올린 확장 함수입니다 기존의 View에서 Scope를 열어 사용할 때 불필요한 Depth가 생기게 됩니다.의미만 잘 전달된다면 핵심 로직과 분리 되어도 상관 없는 구문이라 생각하여 아래와 같이 정의 해보았습니다.fun LifecycleOwner.withInMainScope( coroutineContext: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, action: suspend () -> Unit) { lifecycleScope.launch( cont..
이전 글 [ 안드로이드 ] 앱 내에 개발자 모드 추가하기개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습니다. 또한 토큰 정보나 디바이스 정보 등과dongx2.tistory.com [ 안드로이드 ] 앱 내에 개발자 모드 추가하기 2[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습dongx2.tistory.com Intro이번 게시글에선 서버의 상태를 체크하는 기능을 추가할 예정입니다. 커스텀 Preference View 만들기 Android..