Android 공부

    KMP에서 Unresolved reference: IO 에러 땜질하는 법

    에러 > Task :composeApp:compileKotlinWasmJs FAILED e: composeApp/src/commonMain/kotlin/viewmodel/MainViewModel.kt:8:27 Unresolved reference: IO e: composeApp/src/commonMain/kotlin/viewmodel/MainViewModel.kt:18:36 Unresolved reference: IO 상황 잘 빌드 되다가 갑자기 위와 같은 에러메시지가 뜨면서, 빌드가 되지 않았습니다. 안드로이드에서는 당연하게 사용되었지만, Unresolved reference: IO 가 발생을 했습니다. 해결방안을 ChatGPT를 통해서 검색을 했습니다. ChatGPT 대답 Dispatchers.IO와..

    2024년의 NEW 감자튀김의 프로젝트

    이번엔 진짜 KMM을 공부하기로 결심했다. 이제는 Jetbrain에서 엄청 멋있는 기술을 제공하고 있다. 비지니스 로직에 집중한 KMM 뿐만 아니라, UI 로직도 컴포즈로 해서 제공해준다는 나이스한 아이디어를 Compose Multiplatform이라는 기술로 제공한다는 것이다. 비지니스 로직을 합치는 것만으로도 대단하다고 생각했지만, UI까지 모두 KMM으로 개발할 수 있다게 너무 궁금하기도 하고, 정말 되는지 항상 찍먹 해보고 싶었다. https://www.jetbrains.com/ko-kr/lp/compose-multiplatform/ Compose Multiplatform UI Framework | JetBrains Create stunning UIs with Compose Multiplatfor..

    compose study - 3주차

    Jetpack Compose의 요소 애니메이션 Jetpack Compose의 요소 애니메이션 | Android Developers 이 Codelab에서는 Compose Animation API를 사용하는 방법을 알아봅니다. developer.android.com 애니메이션 - animateColorAsState() 메소드를 하게 되면 값 변경을 통해서 애니메이션을 할 수 있다. - AnimateVisibility는 boolean값이 변경될 경우에 애니메이션을 처리합니다. - AnimateVisibility의 enter, exit 파라매터를 통해서 해당 상태의 애니메이션을 커스텀할 수 있다. - AnimateVisibility의 slideInVertically는 initialOffsetY, slideOut..

    compose study - 2주차

    11월 12일에 공부하고, 1달만에 2주차 아닌 2주차 스터디 진행 https://developer.android.com/codelabs/jetpack-compose-layouts?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fjetpack-compose-for-android-developers-1%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fjetpack-compose-layouts#1 Compose의 기본 레이아웃 | Android Developers 이 Codelab에서는 Compose에서 즉시 제공되는 컴포저블과 수정자를 통해 실제 디자인을 구현하는 방법을 알아봅..

    compose study - 1주차

    컴포즈 캠프 1주차 컴포즈 캠프 1주차 여행을 다녀왔습니다~ 신나는 OX 퀴즈, 딸기는 장미과라고 합니다. Thinkg in Compose Compose 이해 | Jetpack Compose | Android Developers Compose 이해 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Jetpack Compose는 Android를 위한 현대적인 선언형 UI 도구 키트입니다. Compose는 프런트엔드 뷰를 명령 developer.android.com 재구성(Recomposition) Compose에서는 새 데이터를 사용하여 구성 가능한 함수를 다시 호출합니다. 이렇게 하면 함수가 재구성되며, 필요한 경우 함수에서 내보낸 위젯이 새 데이터로 다시 그려집니다. Com..

    KMM (2) sqldelight

    서론 KMM을 기반으로 프로젝트를 진행하다보면 프로젝트 셋팅과 대한 중요도를 자주 느끼곤 합니다. KMM의 샘플을 보다보면 데이터베이스로 sqldelight를 사용하는 프로젝트를 자주 볼 수 있다. 그래서 데이터베이스를 추가하면서 겪었던 이슈들을 정리하고자 한다. 디펜던시 build.gradle.kts classpath("com.squareup.sqldelight:gradle-plugin:1.5.3") build.gradle.kts(:shared) plugins { //... id("com.squareup.sqldelight") } val androidMain by getting { //... dependencies { //... implementation("com.squareup.sqldelight:a..

    KMM (1) 시작

    서론 네이티브 개발을 하다보면, 다른 플랫폼의 개발도 잘 하고 싶은 욕심이 많이 생긴다. Flutter, 리액트는 이러한 욕심을 갖고 있는 개발자에게 좋은 플랫폼이 될 것이라고 생각을 한다. 최근에는 어느 정도 안정화 단계에 도달했다고 생각이 들 정도로, 많은 개발자들이 해당 플랫폼에 관심을 갖고 있다. 하지만, 필자에게는 새로운 것을 배우는 것에 대한 거부감이 있었으며, 여태까지 사용을 한 안드로이드 생태계를 유지하고 싶었다. 그래서 필자는 KMM을 공부하고 싶다는 욕심이 있었다. KMM은 비지니스 로직은 코틀린 언어를 통해서 작성을 하고, 뷰 영역은 Android와 iOS로 구분지어서 작성을 할 수 있다. 물론, 비지니스 로직에도 Android와 iOS에 대한 로직에 대한 작성이 필요하다고는 한다...

    Android 백그라운드 정책 톺아보기

    1. 서론 API 버전이 마시멜로우인 23이상부터 Doze모드와 AppStand by의 개념이 도입되었습니다. 안드로이드 앱을 개발하는 개발자라면, Doze모드와 AppStand by를 대처해야한다는 말을 들어봤을 것입니다. 그리고 이를 실제로 대응하면서, 껄끄러웠던 경험이 있었을 것이라고 생각합니다. 필자도 '백그라운드에서 시간을 체크하는 작업', '백그라운드에서 네트워크 통신을 하는 작업'등을 경험을 해봤고, 이번에 'FCM에서 네트워크 통신을 사용'하는 경험을 통해서 Doze모드와 각종 백그라운드 정책에 직면을 했습니다. 그래서 이번 포스팅을 통해서 안드로이드의 백그라운드 제한 작업에 함께 알아보려고 합니다. 2. Doze 모드 (Android 6.0) Doze 모드는 '기기를 오래동안 사용하지 않..