0%

김태호님, Google Korea (Mobile Apps Technical Specialist)

서론

  1. Android Jetpack & Android Studio
  2. Android 10주년인 2018년.

변화된 부분들

특징 (2017년과 2018년 사이에 많은 것들이 생김.)

  1. ConstraintLayout, Kotlin
  2. Architecture Components, KTX (라이브러리),
  3. Studio Profilers, Paging (라이브러리)

안드로이드 개발 과거와 오늘

Tools

  1. Hierarchy Viewer
    Android Studio 의 Layout Inspector
  2. Eclipse 에서의 Profiler
    Android Studio 에서 모든 메서드 트래킹과 샘플링을 확인할 수 있음.
  3. Dalvik Debug Window (Memory Tracking)
    Android Studio 에서 자체 제공 (8.0 이상, 그 이하는 Start-Stop 수동으로 지정해야한다.)
  4. 코딩 방식의 Layout Design
    ConstraintLayout 등장 (아직 코딩이 필요하긴 하지만, 실제로 디자인과 개발의 분담과 충돌이 줄어들고 있는 추세)

Runtime & Language

  1. Dalvik (과거의 하드웨어 성능이 다소 제약적이어서, 메모리 최적화 중심 런타임이었음.)
    ART (특정 디바이스에 제약을 두는 것이 아니고, 앱 자체의 퍼포먼스에 중점임. Heap defragmentation)
  2. Java (사용자층이 넓다. 쓸 수 있는 좋은 Tools들이 많다. 그러나, 신버전에 적응이 매우 느린 편, 1.5버전에 최적화)
    Kotlin (하위호환성 까지 제공한 Java 1.7/1.8 기반의 공식 지원 언어)

Libraries & APIs

  1. Layouts (Absolute, Linear, Frame, Grid, Relative)
    ⇒ Layouts (Absolute, Linear, Frame, Grid, Relative) + ConstraintLayout
  2. AdapterViews (List, Grid, Gallery, ViewHolder, Animations…)
    RecyclerView 사용 + LayoutManager 사용, notifyItem(..)(ed 또는 position) 메서드 사용
  3. Fragments (Complicated, Core Platform Bugs)
    Platform API Deprecated 되었으니 Support Library 자체의 Fragments 사용 권장 (New Navigation Component)
  4. Activities (기존에는 무조건 액티비티로 처리하려고 함)
    Activity 하나로 유지하도록 권장. (One Activity Application)
  5. Architecture (Dianne Hackborn 이 알아서 하라고 함. 그러니까 혼란을 가중시킴)
    Google 에서 Recommended app architecture 제공함.
  6. Android Lifecycle (Activity 꺼 따로 Fragment 꺼 따로 알아야함.) 그리고 Callback 메서드를 일일히 처리해야한다.
    Architecture Components : LifeCycle (LifecycleOwner, LifecycleObserver) Activity와 기존 코드들이 분리가 된다.
  7. Views and Data (Activity에 View와 데이터, 생명주기들이 모두 포함)
    LiveData<type> data 방식의 ViewModel 로 제공됨. 그리고 Activity에는 ViewModel를 참조하는 것으로 바뀜.
  8. Data 기존의 처리
    Room 이라는 형태로 데이터 처리 (Sqlite 기반, Compile-time 검증, LiveData Integration)

Tools

  1. Android Jetpack : 좋은 Android 앱을 만들기 위한 좋은 Tools과 라이브러리. (AndroidX, Android KTX, Architecture Components 포함)
    1. Architecture : WorkManager, Navigation, Paging
    2. UI
    3. Behavior
    4. Foundation
  2. AndroidX
    • AndroidX : 좁은 범위의 binary dependencies 에서는 권장함.
    1. Finer-grained artifacts : 직관적으로 Maven 방식의 groupId, artifactId 로 제공함.
    2. Refined versioning : 기존 라이브러리 버전인 28.0.0 을 1.0.0 으로 새로 정리
    3. Updated Packaging : android.<feature>.ClassName 또는 Maven 방식
    4. Migrating to AndroidX : Android Studio 3.2 -> Refactor -> Refactor to AndroidX
    5. AAR & JAR : Jetifier (Binary Migration tool) 로 해결
  3. Android Studio
    1. DX -> D8 : 16% 성능 향상
    2. SQL Code Editing Auto Completion
    3. Kotlin Lint Checks
    4. C++ Profiler
    5. Network Threading Profiler
    6. IntelliJ Platform Update : SVC Preference 기능
    7. Emulator Quick Boot