일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- AWS
- 프로그래머스
- boj
- 암호학
- architecture
- Gradle
- MiTweet
- Compose
- 백준
- pandas
- TEST
- GitHub
- relay
- Coroutine
- Hilt
- livedata
- activity
- androidStudio
- Coroutines
- Rxjava
- Python
- Kotlin
- 쿠링
- textfield
- MyVoca
- 코루틴
- Codeforces
- ProGuard
- Today
- Total
목록Primary/Android (80)
이동식 저장소
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvXg1f/btrTaKCX3mr/DM0AFoOqyL4xSwNcjwSBW1/img.png)
``androidTest`` 폴더에 있는 instrumented test는 에뮬레이터를 통해 테스트될 수 있다. 그런데 에뮬레이터는 메모리도 많이 잡아먹고, UI까지 전부 그리기 때문에 unit test보다 더 무겁다는 느낌이 있다. 에뮬레이터를 매번 켜는 게 번거롭기도 하고, 그래서 그런지 개발하는 입장에서도 자주 실행하지 않게 된다. 테스트는 모름지기 자주 실행되어야 하는 법이거늘. Gradle Managed Devices 매번 에뮬레이터를 켜는 대신 Gradle Managed Devices를 사용하면 instrumented test를 더 간편하게 실행할 수 있다고 한다. 대략 다음의 작업을 대신 해 준다. 기기와 관련된 작업을 대신 처리 (기기를 켜고 끄는 등) 기기를 켜는 시간을 단축하고 테스트 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/B0xiC/btrSZZWggsl/Df6zkPCmvPxEhhkFAX83f0/img.png)
현재 Canary 9 버전인 Android Studio Flamingo에 추가된 기능을 살펴보자. 내가 개발할 때 체감할 수 있을 만한 내용만 선별하여 정리했다. 아직 개발 초기 단계인 만큼 기능이 계속 추가될 수 있는데, 가능한 한 최신 내용으로 갱신할 계획이다. 웬만하면 canary는 안 쓰는 편이지만, Android Dev Summit 2022에서 알게 된 기능을 체험해 보고 싶어서 사용하고 있다. Network Inspector traffic interception Flamingo Canary 1 버전부터 Network Inspector가 모든 네트워크 트래픽을 보여준다. 응답이 외계어인 이유는 인코딩이 깨졌기 때문이다. DB에는 정상적으로 저장된다. 그 밖에도 커스텀 rule을 만들어 특정 응답..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ue5gK/btrSJEK8Qhz/PWzIBn9UX2OQ5W9OBQFwT1/img.gif)
현재 Release Candidate인 Android Studio Electric Eel(EE)에서 추가된 기능을 살펴보자. 추가된 기능을 모두 적지는 않았고, 실질적으로 내가 개발할 때 체감할 수 있을 만한 내용을 정리했다. Compose Preview 프리뷰에서 변경사항을 즉시 확인할 수 있다. 매번 빌드하지 않아도 된다! 내가 제일 좋아하는 업데이트라 맨 앞에 적었다. 원문에는 맨 끝에 있는데 ㅎㅎ Compose Preview에서 Device 설정 ``@Preview`` 어노테이션에 프리뷰를 보여줄 기기 정보를 설정할 수 있다. 그런데 무려 기기 스펙을 문자열로 명시하는 문법이다;; @Preview(device = "spec:width=1280dp,height=800dp,dpi=480,orienta..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KipcC/btrRyskHfBa/3mc4mFmSIVWKeExirt9110/img.png)
모듈화란 코드를 여러 부분으로 나누어 느슨하게 의존하도록 만드는 것이다. 각 모듈은 자신이 맡은 기능만을 수행하며, 다른 모듈은 신경쓰지 않는다. 다만 외부에 노출할 인터페이스만을 제공한다. 모듈을 나누는 방법에는 여러 가지가 있겠지만, 나는 맡은 역할에 따라 레이어로 나눈 후 기능별로 다시 나누는 편이다. 예를 들어 데이터를 저장하는 Data 모듈을 정의하고, 저장하는 데이터에 따라 ``:data:meal``과 ``:data:schedule`` 모듈을 정의하는 것이다. Android 팀에서 권장하는 방법이다. (Android Dev Summit '22 영상 참고) 앱을 모듈화하면 코드를 재사용하기 쉬워지고, 외부와의 인터페이스를 제외한 나머지를 숨길 수 있으며, Google Play의 기능을 사용하여 ..
백그라운드 작업 ``MealWork``와 ``ScheduleWork``를 정의했고, 현재 실행되고 있는 백그라운드 작업의 수를 세기 위해 Preferences DataStore에 정수형 값 ``RUNNING_WORKS_COUNT``를 정의했다. ``MealWork``와 ``ScheduleWork``가 실행될 때 count를 1 증가시키고, 작업이 끝날 때 count를 1 감소시키는 코드를 작성했다. 대략 다음과 같다. // MealWorker, ScheduleWorker override suspend fun doWork(): Result { preferencesRepository.increaseRunningWorkCount() // do background work preferencesRepository..