김태호님, Google Korea (Mobile Apps Technical Specialist)
서론
- Android Jetpack & Android Studio
- Android 10주년인 2018년.
변화된 부분들
특징 (2017년과 2018년 사이에 많은 것들이 생김.)
- ConstraintLayout, Kotlin
- Architecture Components, KTX (라이브러리),
- Studio Profilers, Paging (라이브러리)
안드로이드 개발 과거와 오늘
Tools
- Hierarchy Viewer
⇒ Android Studio 의 Layout Inspector - Eclipse 에서의 Profiler
⇒ Android Studio 에서 모든 메서드 트래킹과 샘플링을 확인할 수 있음. - Dalvik Debug Window (Memory Tracking)
⇒ Android Studio 에서 자체 제공 (8.0 이상, 그 이하는 Start-Stop 수동으로 지정해야한다.) - 코딩 방식의 Layout Design
⇒ ConstraintLayout 등장 (아직 코딩이 필요하긴 하지만, 실제로 디자인과 개발의 분담과 충돌이 줄어들고 있는 추세)
Runtime & Language
- Dalvik (과거의 하드웨어 성능이 다소 제약적이어서, 메모리 최적화 중심 런타임이었음.)
⇒ ART (특정 디바이스에 제약을 두는 것이 아니고, 앱 자체의 퍼포먼스에 중점임. Heap defragmentation) - Java (사용자층이 넓다. 쓸 수 있는 좋은 Tools들이 많다. 그러나, 신버전에 적응이 매우 느린 편, 1.5버전에 최적화)
⇒ Kotlin (하위호환성 까지 제공한 Java 1.7/1.8 기반의 공식 지원 언어)
Libraries & APIs
- Layouts (Absolute, Linear, Frame, Grid, Relative)
⇒ Layouts (Absolute, Linear, Frame, Grid, Relative) + ConstraintLayout - AdapterViews (List, Grid, Gallery, ViewHolder, Animations…)
⇒ RecyclerView 사용 + LayoutManager 사용, notifyItem(..)(ed 또는 position) 메서드 사용 - Fragments (Complicated, Core Platform Bugs)
⇒ Platform API Deprecated 되었으니 Support Library 자체의 Fragments 사용 권장 (New Navigation Component) - Activities (기존에는 무조건 액티비티로 처리하려고 함)
⇒ Activity 하나로 유지하도록 권장. (One Activity Application) - Architecture (Dianne Hackborn 이 알아서 하라고 함. 그러니까 혼란을 가중시킴)
⇒ Google 에서 Recommended app architecture 제공함. - Android Lifecycle (Activity 꺼 따로 Fragment 꺼 따로 알아야함.) 그리고 Callback 메서드를 일일히 처리해야한다.
⇒ Architecture Components : LifeCycle (LifecycleOwner, LifecycleObserver) Activity와 기존 코드들이 분리가 된다. - Views and Data (Activity에 View와 데이터, 생명주기들이 모두 포함)
⇒ LiveData<type> data 방식의 ViewModel 로 제공됨. 그리고 Activity에는 ViewModel를 참조하는 것으로 바뀜. - Data 기존의 처리
⇒ Room 이라는 형태로 데이터 처리 (Sqlite 기반, Compile-time 검증, LiveData Integration)
Tools
- Android Jetpack : 좋은 Android 앱을 만들기 위한 좋은 Tools과 라이브러리. (AndroidX, Android KTX, Architecture Components 포함)
- Architecture : WorkManager, Navigation, Paging
- UI
- Behavior
- Foundation
- AndroidX
- AndroidX : 좁은 범위의 binary dependencies 에서는 권장함.
- Finer-grained artifacts : 직관적으로 Maven 방식의 groupId, artifactId 로 제공함.
- Refined versioning : 기존 라이브러리 버전인 28.0.0 을 1.0.0 으로 새로 정리
- Updated Packaging : android.<feature>.ClassName 또는 Maven 방식
- Migrating to AndroidX : Android Studio 3.2 -> Refactor -> Refactor to AndroidX
- AAR & JAR : Jetifier (Binary Migration tool) 로 해결
- Android Studio
- DX -> D8 : 16% 성능 향상
- SQL Code Editing Auto Completion
- Kotlin Lint Checks
- C++ Profiler
- Network Threading Profiler
- IntelliJ Platform Update : SVC Preference 기능
- Emulator Quick Boot