전체 글

안드로이드/이론

[ 안드로이드 ] APK/AAB 추출 시 파일명 변경하기 + 성능 최적화

방법 1.이 방법은 인터넷에 많이 알려진 방법입니다.간단한 코드로 APK/AAB 모두에 적용 가능하지만 한 가지 주의할 점이 있습니다.archivesBaseName = "{앱 이름}-${versionName}(${versionCode})" 아래와 같이 시간과 같은 변하는 값을 추가하게 되면 빌드 성능 저하가 발생할 수 있습니다.def formattedDate = new Date().format('yyyyMMddHHmm')archivesBaseName = "{앱 이름}-${versionName}(${versionCode})-${formattedDate}" 일반적으로 Gradle은 빌드 캐시를 사용하여 동일한 작업을 반복으로 실행하지 않도록 최적화합니다.그러나 archivesBaseName이 매번 달라지면 ..

카테고리 없음

[Docusaurus] 도큐사우루스 커스텀 방법 정리

WePLi Docusaurus 완성본 " data-og-host="wepli.site" data-og-source-url="http://www.wepli.site" data-og-url="https://wepli.site/" data-og-image="https://scrap.kakaocdn.net/dn/cyDyap/hyXhVeJkCh/kyMm4kdchpamcIMAKcJJXK/img.png?width=2496&height=2496&face=0_0_2496_2496,https://scrap.kakaocdn.net/dn/wo1Av/hyXd5b1x11/Nc4NYHfL7OkKT956YVo8BK/img.png?width=2496&height=2496&face=0_0_2496_2496"> WePLiDescripti..

안드로이드/Compose

[Compose] - State가 변경 되어도 UI에 반영이 안되는 이슈 해결

문제 상황 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, ..

안드로이드/이론

[ 안드로이드 ] Kotlin-Serialization 옵션 정리

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"는 무시되고 정상..

안드로이드/Compose

[Compose] - LazyRow 아이템 최대 높이로 고정하기

문제 상황Jetpack Compose에서 LazyRow를 사용하다 보면 각 아이템의 높이에 따라 LazyRow의 전체 높이가 변경되는 상황을 종종 겪게 됩니다. 특히 아래 스크린샷 같이, 제목이 한 줄 또는 두 줄로 구성되어 있을 때, 두 줄인 항목의 높이에 맞춰서 LazyRow가 고정될 것이라고 예상합니다. 하지만 사용자가 스크롤하여 해당 항목이 화면에서 사라지면 LazyRow의 높이가 줄어드는 현상이 발생합니다. 해결 방안이를 해결하기 위해선 LazyRow의 전체 높이를 아이템 중 가장 큰 높이에 맞추어야 합니다.가장 큰 높이의 항목을 기준으로 LazyRow의 높이를 고정하기 위해 SubComposeLayout을 이용합니다. SubComposableLayout은 레이아웃을 그리는 과정에서 다른 레이아..

안드로이드/코드 저장

[ 안드로이드 ] 개인적으로 유용하게 쓰는 Kotlin 확장 함수

1. Scope 지정 확장 함수핵심 로직과 부가 기능을 분리하자는 AOP(관점 지향 프로그래밍) 개념에서 떠올린 확장 함수입니다 기존의 View에서 Scope를 열어 사용할 때 불필요한 Depth가 생기게 됩니다.의미만 잘 전달된다면 핵심 로직과 분리 되어도 상관 없는 구문이라 생각하여 아래와 같이 정의 해보았습니다.fun LifecycleOwner.withInMainScope( coroutineContext: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, action: suspend () -> Unit) { lifecycleScope.launch( cont..

안드로이드/Compose

[Compose] - Design System 구축 - 2. ColorScheme 만들기

[안드로이드] - Compose Typography 만들기1. FontFamilry 정의우선 FontFamily 클래스를 정의합니다.// Type.ktval pretendard = FontFamily( Font(R.font.pretendard_thin, FontWeight.Thin, FontStyle.Normal), Font(R.font.pretendard_extralight, FontWeight.ExtraLight, FontStyle.Normal), Font(R.dongx2.tistory.com 이전 게시글에서 Compose로 Typography를 선언하는 방법에 대해서 알아보았습니다.이번엔 ColorScheme을 선언하는 방법을 정리하였습니다. 1. Color 선언DesignSystem > Color..

안드로이드/Compose

[Compose] - Design System 구축 - 1. Typography 만들기

1. FontFamilry 정의우선 FontFamily 클래스를 정의합니다.// Type.ktval pretendard = FontFamily( Font(R.font.pretendard_thin, FontWeight.Thin, FontStyle.Normal), Font(R.font.pretendard_extralight, FontWeight.ExtraLight, FontStyle.Normal), Font(R.font.pretendard_light, FontWeight.Light, FontStyle.Normal), Font(R.font.pretendard_regular, FontWeight.Normal, FontStyle.Normal), Font(R.font.pretendard_..

dongx._.2
DongZip