일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- android ar 개발
- 안드로이드 os 구조
- rxjava disposable
- 안드로이드 유닛테스트란
- ANR이란
- 스택 큐 차이
- jvm 작동 원리
- 안드로이드 라이선스
- rxjava cold observable
- 스택 자바 코드
- android retrofit login
- 안드로이드 레트로핏 사용법
- 플러터 설치 2022
- 큐 자바 코드
- 안드로이드 레트로핏 crud
- 객체
- 2022 플러터 설치
- 서비스 쓰레드 차이
- 클래스
- rxjava hot observable
- 서비스 vs 쓰레드
- 멤버변수
- 안드로이드 유닛 테스트
- 안드로이드 라이선스 종류
- Rxjava Observable
- 자바 다형성
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 유닛 테스트 예시
- jvm이란
- ar vr 차이
- Today
- Total
목록Android (378)
나만을 위한 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9Mxxx/btsJE1GIZT7/zYKn3FHzFQNeyLZujIz3U1/img.png)
가끔 이런 에러가 뜨면서 코드 내에서 BuildConfig을 사용할 수 없는 경우가 있다.자동 임포트 설정을 하지 않았거나 그 코드에서만 안 된 거라면 임포트해서 쓰면 되지만, 그렇게 해도 안 될 경우 2가지 방법을 쓸 수 있다. 1. app gradle > buildFeatures에 "buildConfig = true" 추가 먼저 앱 수준 gradle 파일의 buildFeatures 블록 안에 buildConfig = "true"를 추가해서 확인해볼 수 있다. buildFeatures { compose = true buildConfig = true} 컴포즈를 사용 중인 프로젝트라면 compose = true는 기본으로 있을 텐데, 그 밑에 그냥 써주면 된다. 레거시 뷰 프로젝트라면 이 블록이..
이 글은 아래의 미디엄 링크를 번역한 포스팅이다. https://proandroiddev.com/the-best-way-to-load-data-in-viewmodels-a112ced54e07 The best way to load data in ViewModelsSimplicity is key. Sadly, it is also one of the hardest things to achieve in software development. Learn how to easily load data in 2024.proandroiddev.com 아래는 수정할 코드다. sealed interface ViewState { data class Success(val text: String, val counter: Int)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rbInH/btsJD7NY7pm/2GKECbYISJxQwVVksWXmKK/img.gif)
바텀 네비게이션 바가 아니라 버튼을 눌렀을 때 화면을 이동하는 방법을 확인한다.바텀 네비게이션 바로 화면 이동을 구현한 코드와 같은 코드를 쓰기 때문에 세세한 코드는 이전 포스팅을 참고한다. https://onlyfor-me-blog.tistory.com/764 [Android Compose] 컴포즈 화면 이동 구현하는 법2024.09.10 - 의존성, 코드 수정 Compose를 사용하지 않는다면 인텐트와 startActivity()를 써서 다른 액티비티로 이동할 수 있었다.하지만 Compose에선 startActivity() 대신 네비게이션 라이브러리를 써서 화onlyfor-me-blog.tistory.com 아래는 전체 예시 코드다. import android.os.Bundleimport androi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgGSRE/btsnFD2FSl3/0BE0VeRGn7eWkLvGFkewK0/img.png)
2024.09.10 - 의존성, 코드 수정 Compose를 사용하지 않는다면 인텐트와 startActivity()를 써서 다른 액티비티로 이동할 수 있었다.하지만 Compose에선 startActivity() 대신 네비게이션 라이브러리를 써서 화면 이동을 구현한다. 코드를 보기 전에 왜 Compose에선 이딴이런 식으로 화면 이동을 구현해야 하는 것인가?이 글을 보는 사람이라면 Compose가 선언형 방식으로 UI를 구성한다는 건 알고 있을 것이다. 이 특징 때문에 네비게이션 라이브러리를 사용하는 것이다.안드로이드의 전통적인 화면 전환 방법인 startActivity()는 명령형 프로그래밍 패러다임을 따르는 함수다. 그래서 선언형 프로그래밍 패러다임인 Compose와는 잘 맞지 않는다. 안드로이드 공식문..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/du59ZO/btsJgQstvJe/EGdCsi9CzKo5fIsuCc1LGK/img.png)
XML 뷰에선 간단하게 쓸 수 있던 스낵바가 Compose에선 좀 번거롭다. 아래는 스낵바를 사용하는 예시 컴포저블이다. @Composablefun SnackBarExample() { val snackBarHostState = remember { SnackbarHostState() } val coroutineScope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(hostState = snackBarHostState) } ) { innerPadding -> Column( modifier = Modifier .padding(innerPaddi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uxyoP/btsItFMkGtE/8yvuGJj7DgS5t6LfTKQsU1/img.png)
안드로이드에서 MVI 패턴을 구현하기 위해 사용하는 라이브러리로 Orbit이란 게 있다.아래는 Orbit 깃허브와 공식문서다. https://github.com/orbit-mvi/orbit-mvi GitHub - orbit-mvi/orbit-mvi: A simple MVI framework for Kotlin Multiplatform and AndroidA simple MVI framework for Kotlin Multiplatform and Android - orbit-mvi/orbit-mvigithub.comOrbit은 Redux/MVI와 비슷한 라이브러리지만 번거로움이 없다. 매우 간단해서 MVVM+라고 생각하면 된다- 간단함, type-safe, 코루틴 스타일, 확장 가능한 API- 멀티플랫폼,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xvMDF/btsIrtxEbcR/iPEykHPogUDOktpPqvvXO1/img.gif)
이 포스팅에선 material 3 기준으로 당겨서 새로고침 화면을 구현한 예시를 확인한다.이 글의 바탕이 된 코드는 아래 미디엄 링크를 참고했다. 그러나 글 내용 중 rememberPullRefreshState는 material 3에서 사용할 수 없는 API기 때문에 다른 걸 사용하도록 조금 수정했다. https://medium.com/@anandgaur22/jetpack-compose-pull-to-refresh-fafb4d1a5ea6 Jetpack Compose: Pull to RefreshIntroductionmedium.com 당연히 예시기 때문에 실제로 사용하려면 반드시 리팩토링한 후 사용한다.아래는 구현 완료 후 에뮬레이터에서 테스트한 GIF다. 이제 코드를 확인해보자.뷰모델을 같이 사용하기..
안드로이드 스튜디오 코알라에서 프로젝트를 기본 설정으로 생성하면 libs.versions.toml이란 파일이 생기는 걸 볼 수 있다.이 파일을 실행하면 편집기에 아래 내용이 표시된다. [versions]agp = "8.5.0"kotlin = "1.9.0"coreKtx = "1.13.1"junit = "4.13.2"junitVersion = "1.2.1"espressoCore = "3.6.1"lifecycleRuntimeKtx = "2.8.3"activityCompose = "1.9.0"composeBom = "2024.04.01"jetbrainsKotlinJvm = "1.9.0"appcompat = "1.7.0"material = "1.12.0"hilt = "2.48.1"orbit = "6.1.0"dat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bpghXN/btsImF72nrF/kcKt1z4mFHZdYkCZnWI4xk/img.png)
지금까지 app 모듈 안에 data, domain, presentation 폴더를 만들고 그 안에서 작업해 온 사람도 있을 것이다.그러나 이렇게 하면 삐끗하면 클린 아키텍처를 어길 수 있으니, 실제로 저 이름을 가진 모듈들을 만드는 방법을 포스팅한다.또한 이 방법이 절대 정답은 아니다. 본인이 설계한 앱에 맞춰 core 모듈을 추가할 수도 있다. 여러 레퍼런스를 찾아보고 필요한 모듈들을 알맞게 추가해 사용하자. 이 포스팅에선 앞서 말한대로 data, domain, presentation 모듈을 만들고 앱을 실행하는 것까지만 확인한다. 안드로이드 디벨로퍼에서 권장하는 앱 아키텍처가 저 3가지 모듈을 바탕으로 하기 때문인 것도 있다. 아래는 사용하는 안드로이드 스튜디오 버전이다. 먼저 File > New..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btHUid/btsId6DktD5/eqZ2YTLoapo5g7UJ4Gx0d0/img.png)
MVVM 패턴 이후 MVI라는 새 패턴이 등장했다. MVI 패턴을 다룬 글은 2019년에도 있어서 등장한지 꽤 오래됐다고 생각된다.각설하고 MVI 패턴은 무엇인지 먼저 확인한다. https://medium.com/@mohammedkhudair57/mvi-architecture-pattern-in-android-0046bf9b8a2e MVI Architecture Pattern in AndroidA guide to adopt MVI pattern in your projectmedium.comMVI(모델-뷰-인텐트) 아키텍처는 앱을 3가지 주요 컴포넌트로 나눠서 깔끔한 코드, 명확한 관심사 분리를 강조한다. 이런 단방향 데이터 흐름과 뚜렷한 역할은 앱을 더 쉽게 이해하고 빌드, 유지보수하는 데 기여한다. 또..