본문 바로가기

IT/android7

#7 빌드 시 파일 이름에 버전과 날짜 이름 추가하기 aab, apk 둘다 됨아래의 예제는 gradle 파일이 Kotlin DSL 베이스여야 한다. app/build.gradle.ktsval appName = "Hello"val buildDate: String by lazy { SimpleDateFormat("yyyyMMdd-hhmmss").format(Date())}android { ... defaultConfig { ... setProperty("archivesBaseName", "$appName_v$versionName($versionCode)-$buildDate") }} by lazy처음 사용할 때 초기화되고, 이후에는 캐시된 값을 반환비용이 큰 초기화가 필요하지만 사용되지 않을 수도 있는 경우앱 시작 시 불필요.. 2025. 5. 25.
#6 나만 헷갈렸나? Jackpot Compose 테마 적용 테마 추가 방법Material Theme Builder 접근source color 선택 (선택 시 왼쪽 동그라미 칼라 선택)HCT Color Picker 선택 모달에서 원하는 칼라를 Hex Color에 지정 후 Apply 선택오른쪽 아래에 Pick your fonts 선택폰트 적절히 선택Export theme 선택 후 다운로드코드에 복사 붙여넣기해당 테마 적용 테마 적용 시 알아야할 사실dynamicColor 값이 true이면 우리가 원하는 테마 적용 안됨@Composablefun AppTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Bool.. 2025. 5. 20.
#5 나만 헷갈렸나? Jackpot Compose > LazyColumn, Icon Column vs LazyColumn항목Column LazyColumn전체 아이템 로딩전부 메모리에 올림화면에 보이는 것만 필요할 때 로딩많은 아이템 처리비효율적 (메모리 사용 많음)효율적 (스크롤에 따라 로딩)스크롤 지원기본적으로 없음(직접 verticalScroll() 추가해야 함)기본적으로 스크롤 지원리스트처럼 사용 가능?❌✅대표적인 사용처적은 수의 뷰 정렬할 때수십 개 이상의 리스트 표시할 때 RTL, LTR에 따른 레이아웃 설정(아직 잘 모르겠다. 실습 예제를 해봐도 저 코드로 인하여 어떤 이점이 있는지... 이론적으로는 알겠는데 실습을 통해서는 알 수 없었다. 추후 알게된다면 업데이트. 지금은 일단 이런게 있다라는 정도로 넘어가자)@Composablefun AffirmationsApp().. 2025. 5. 19.
#4 나만 헷갈렸나? Jackpot Compose > 코틀린 문법 data class데이터만 포함.작업을 실행하는 메서드는 없다.Kotlin 컴파일러에서 특정 가정을 하고 일부 메서드를 자동으로 구현equals()hashCode(): 특정 컬렉션 유형을 사용할 때 이 메서드가 표시됩니다.toString()componentN(): 함수 호출 시 결과 값을 2개를 가져오려 할 때 (Pair를 써도 되지만, 네이밍만 잘 명시하면 이게 더 좋음)copy()data class User( val name: String, val profileImg: String, val age: Int) Object싱글턴 객체 컴패니언 객체Kotlin에서는 static 키워드가 없음.대신 companion object를 사용해서 클래스 이름으로 접근할 수 있는 정적 멤버를 만들 수.. 2025. 5. 17.
#3 나만 헷갈렸나? Jackpot Compose > 스크롤, 여백, 키보드, 계측 테스트 가로모드 지원. 스크롤 가능하게자동으로 가로모드가 지원되지만 스크롤은 안된다.최상위 컴포저블의 modifier에서 아래의 코드 추가 verticalScroll(rememberScrollState()) 여백 설정 Modifier 설명 statusBarsPadding()상단(status bar) 높이만큼 paddingsafeDrawingPadding()상단 + 하단 + 양옆 등 모든 시스템 UI를 고려해서 안전한 padding asistobe KeyboardOptions속성키보드의 작업버튼ImeAction.SearchImeAction.SendImeAction.Go 계측테스트 (Implementation test)Web 개발자로 치자면 e2e 테스트라고 보면 된다. 예) cypress테스트 코드로 .. 2025. 5. 16.
#2 나만 헷갈렸나? Jackpot Compose > 재구성, wrapContentSize 재구성기본값이 있는데 굳이 Modifier 인수를 전달해야 하는지 의문이 드실 수도 있습니다. 그 이유는 컴포저블이 재구성을 거칠 수 있기 때문입니다. 재구성이란 기본적으로 @Composable 메서드의 코드 블록이 다시 실행된다는 의미입니다. Modifier 객체가 코드 블록에서 만들어지면 다시 만들어질 수 있으며 이는 효율적이지 않습니다. 버튼을 클릭하면 Hello() 전체가 재구성되고, 그 안에 있는 DiceWithButtonAndImage()도 함께 재구성됩니다. @Composablefun Hello() { var count by remember { mutableStateOf(0) } Column { DiceWithButtonAndImage(modifier = Modifie.. 2025. 5. 15.