지난 10월 23, 24일에는 Android Dev Summit 2019가 열렸습니다. Google I/O보다 덜 알려져있지만, Android 개발자들에게는 훨씬 더 유익한 정보를 많이 얻을 수 있는 행사로, 이 때에 맞춰서 AndroidX의 각 라이브러리들의 대량 업데이트와, Android Studio의 새로운 릴리즈, 좀 더 추가된 Jetpack Compose**의 내용 등 따라가기 힘들 정도로 많은 소식이 있었습니다. 그리고 지난 주에 드디어 전 발표 동영상이 업로드 되었습니다!
(운영자 맘대로 정하는) 이 주의 블로그/소식
Android Dev Summit 2019 Channel (English)
Android Dev Summit의 모든 세션 동영상을 볼 수 있는 YouTube 채널입니다. Android Studio, Android X, Jetpack Compose 업데이트 등 굵직한 최신 소식과 함께 디버깅 팁 등 소소한 실전 강좌들도 있으니 한 번 시간을 내서 전체적으로 훑어볼 가치가 있을 것 같습니다.
아울러, 다양한 기술에 대한 튜토리얼을 제공하고 하고 있는 Codelab도 대거 업데이트 되었습니다!
Android 개발 일반
테스트 관점으로 아키텍처 관리하기 (한글)
Google Developer Expert이신 이승민 님이 DevFest Seoul에서 발표하신 자료입니다. 자동화 테스트를 작성하지 않는다고 해도, 기본적으로 테스트성(testability)이 떨어지는 코드 구조는 잘못 설계되었을 가능성이 높기 때문에 중요하게 생각해봐야할 점이라고 생각합니다. 일독을 강력히 추천드립니다.
Retrofit의 Query, Path 등에 Enum클래스 사용하기 (한글)
Retrofit에서 Enum을 이용하면, String을 사용하는 것에 비해 오타, 혹은 지원하지 않는 파라미터를 입력할 수 있는 문제를 컴파일 시에 알아낼 수 있습니다. 이에 대한 팁을 공유하는 글입니다.
Jetpack Compose 탐험하기: Text편 (English)
소스 코드를 받아 직접 빌드해야 했던 Jetpack이 이제는 Android Studio 4.0 부터는 그럴 필요가 없어졌기 때문에 이제는 Jetpack Compose를 보다 편하게 공부할 수 있는 시기가 왔습니다.
이 글은 Compose의 세부 사항을 설명하는 연재 블로그로서, 이번엔 Text 컴포넌트에 대해서 설명하고 있습니다.
RxJava의 operator fusion (English)
최근 RxJava와 관련한 블로그 글들이 단순히 이전에 익히 알려진 기능에 대한 중복된 소개를 답습하는 경향이 다소 있었는데, 반가운 글이 하나 추가되었습니다. RxJava의 비동기 처리 과정에서의 오버헤드를 감소시키기 위한 fusion에 대한 자세한 설명을 하고 있는 글입니다. RxJava 중급자 이상이라면 꼭 일독을 권합니다.
Kotlin Flow를 Android UI와 연결하기 (English)
RxJava의 Publisher와 유사한 기능을 제공하는 Flow를, RxBinding과 유사한 방식으로 UI 이벤트와 연결하는 방법을 설명하고 있는 글입니다.
BottomNavigationView의 아이콘 애니메이션 (English)
BottomNavigationView에서, XML 구성만으로 아이콘 애니메이션이나 switch button을 추가할 수 있는 방법을 알려주는 글입니다.
Android Studio 관련
새로운 Android Emulator 도구를 사용한 지속적인 테스트 (한글)
OS/하드웨어의 다양한 조합을 자동화 테스트 하기 위해 구글은 Android Emulator를 Docker 이미지로 만들어 컨테이너에서 실행할 수 있는 놀라운 환경을 제공합니다! 이 기능을 소개한 Android Studio 팀의 블로그를, Google Developer Expert인 노현석 님이 번역해주셨습니다.
(그것보다 더 궁금한 것: 과연 구글은 Android Emulator의 버그는 다 해결은 하고 나서 저런 기능을 쓰라고 하는 것인가..)
안드로이드 스튜디오의 패키지 검색 기능 소개 (English)
Gradle로 외부 라이브러리를 관리할 때 가장 귀찮은 점이 라이브러리의 버전 관리였는데, 기존의 Android Studio가 제공하는 툴팁 기능만으론 부족한 점이 많았죠. 드디어 패키지 검색 기능이 구현되서 EAP(맛보기판)로 사용할 수 있게 되었습니다!
D8 Optimizations (English)
Jake가 절찬 연재 중인 R8+D8의 최적화 기능에 대한 최신 글입니다. 이번엔 D8이 dexing을 수행하는 과정에서도 약간의 최적화를, 컴파일 타임에 해준다는 아주 재밌는 사실을 알려줍니다.
잠깐, D8과 R8의 차이가 뭐냐고요? 맨 아래 해설을 참조해주세요.
툴/라이브러리 관련
Moshi 1.9 자세히 보기 (English)
Reflection을 사용하는 Gson과 달리(앱용량과 성능 양쪽에서 상당한 손실이 있음), annotation을 기반으로 구현된 JSON 파서인 Moshi는 일부 기능 제약에도 불구하고 많은 사랑을 받아왔습니다. 최근 Kotlin serializer(현재는 0.13.0)의 위협을 받고 있는 상황에서 Kotlin을 위한 지원을 강화한 업데이트가 있었는데, 이를 자세히 설명하고 있는 글입니다.
추기: 1.9 릴리즈 하루 뒤에 앱이 crash 되는 버그를 해결한 1.9.1이 바로 업데이트 되었습니다.
Dagger 2.25.2 released (English)
Koin과 같은 쉽고 편한 경쟁 라이브러리가 있지만, 여전히 기능과 성능 양면에서 가장 뛰어난 Dagger가 2.25가 되면서 성능과 Kotlin 지원을 더욱 보강하였습니다. 대신에 몇 가지 버그들이 있었는데 이번 릴리즈에서 대부분 해결이 된 것 같습니다.
곧 있을 이벤트
GDG DevFest Pangyo 2019 (11/15 PM7:00)
AI, Android, Web, Community를 주제로 개발자들이 함께 어우러질 수 있는 시간입니다.
아래 링크에서 이메일 주소를 입력해주시면 매주 월요일 최신 개발 뉴스를 이메일로 보내드립니다.
** Jetpack Compose란?
Kotlin DSL을 통해서 UI를 구성할 수 있는 새로운 UI 라이브러리입니다. 웹 프론트엔드에서의 React JS와 같이, 선언적(declarative)으로 UI를 구현할 수 있기 때문에 코드를 이용해도 훨씬 직관적인 UI 구현이 가능해집니다. 또한 단순히 기존의, android.view.View 클래스를 상속받은 UI 요소가 아닌, 완전히 새로운 UI 컴포넌트를 함께 제공해서 보다 유연한 UI 구성이 가능하다는 장점도 있습니다. 앞으로 2,3년 정도 뒤부터는 Android 개발의 주류가 될 가능성이 높기 때문에 아래 페이지에서 미리 알아두는 것도 좋을 것 같습니다.
Jetpack Compose 공식 튜토리얼 (English)
** D8/R8이란?
D8은 Java 컴파일러의 결과물(JVM에서만 동작하는 byte code)을 Android VM(Dalvik 또는 ART)에서 동작하는 dex라는 byte code로 변환해줍니다. R8의 이전의 Proguard를 대체하는 도구로, 디컴파일을 (약간만) 어렵게 하는 난독화(obfuscation)와 사용하지 않는 클래스, 메소드, 그리고 리소스(이미지 등)을 제거(shrink) 해주는 도구입니다.

