ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android Native App 개발 - ④
    Android 2023. 4. 21. 16:12

     

    들어가기 전에

     

    Android Studio Download 페이지에서 Flamingo 버전으로 설치하도록 제시하고 있어 다운받고 프로젝트를 생성해보았다.

    Android Studio 에서 Empty Activity를 생성해보니 폴더 구조와 파일 내용을 이해할 수 없어 Android Studio - Flamingo 와 Jetpack 라이브러리를 살펴보려고한다.

     

     

     

    Android Studio Flamingo 버전은 Gradle 버전 3.2 ~ 8.0 까지 호환되는걸 볼 수 있다.

     

    재밌는 정보가 있어 공유하자면,

     

     

    2023.04.21 기준 ChatGPT 는 Android Studio 버전 Arctic Fox 를 최신 버전으로 알고 있다.

     

     

    Android Studio 버전 Flamingo 무엇이 새로워졌나

     

    UI Tools

     

    Jetpack Compose and Material 3 templates

    : Jetpack Compose는 이제 새 프로젝트에 권장되어 템플릿은 기본적으로 Jetpack Compose 및 Material 3을 사용한다.

     

    Live Edit (Compose) experimental

    : 코드 변경 사항을 연결된 장치 또는 에뮬레이터에 직접 푸시하여 Compose를 사용해 앱을 반복적으로 빌드한다.

    파일 저장 또는 자동으로 변경 사항을 푸시하고 실시간으로 UI 업데이트를 확인할 수 있다. 라이브 편집은 실험적이며 편집기 설정에서 활성화할 수 있다. 설정 방법은 여기를 확인하자.

     

    라이브 편집

     

    Themed app icon Preview support

    : 이제 도구 모음에서 시스템 UI 모드 선택기를 사용하여 배경화면을 전환하고 테마 앱 아이콘이 선택한 배경화면에 어떻게 반응하는지 확인할 수 있다. (참고: API 레벨 33 이상을 대상으로 하는 앱에 필요하다.)

     

    다양한 배경화면에서 테마가 있는 앱 아이콘 미리보기

     

    Dynamic color Preview

    : 앱에서 동적 색상을 활성화 하고 @Preview *composable에서 새로운 배경 화면 속성을 사용하여 배경 화면을 전환하고 UI가 다양한 배경 화면에 어떻게 반응하는지 확인할 수 있다. (참고: Compose 1.4.0 이상을 사용해야한다.)

     

    동적 색상 배경화면 미리보기

     

    *composable: 둘 이상의 사물이 한데 합쳐질 수 있는 상태

     

    Build

     

    Build Analyzer task categorization

    : 이제 빌드 분석기는 매니페스트, Android 리소스, Kotlin, Dexing 등과 같은 범주별로 작업을 그룹화한다.

    범주는 기간별로 정렬되며 추가 분석을 위해 해당 작업 목록을 표시하도록 확장할 수 있다. 이렇게 하면 빌드 시간에 가장 큰 영향을 미치는 범주를 쉽게 알 수 있다.

     

    작업마다 분류된 빌드 분석기

     

    One-click automated profileable build and run

    : 앱을 프로파일링할 때 디버깅 빌드 프로파일링을 피하고 싶을 것이다. 왜냐하면 개발 중에는 디버깅을 할 수 있어 좋지만 상용되는 앱에서는 결과가 왜곡될 수 있다. 때문에, 사용자가 실행하게 될 앱은 디버그를 안하고 빌드를 프로파일링해야 한다. 이제 원클릭 자동화 프로파일로 빌드 및 실행이 더욱 편리해졌다.

    프로파일링 가능한 앱을 쉽게 구성하고 한 번의 클릭으로 프로파일링할 수 있다. 완전한 데이터로 앱 프로파일링을 선택하여 디버깅 빌드를 프로파일링하도록 선택 할 수 있다.

     

    원클릭 자동화된 프로파일가능한 빌드 및 실행

     

    Lint support for SDK extensions

    : SDK 확장은 모듈식 시스템 구성 요소를 활용하여 이전에 릴리스된 API 수준에 대한 공개 SDK에 API를 추가한다.

    이제 Lint 지원으로 SDK 확장 문제를 스캔하고 수정할 수 있다. Android Studio는 SDK 확장을 사용하여 실행되는 API에 대해 올바른 버전을 확인해 자동으로 생성한다.

     

    SDK 확장에 대한 Lint 지원

     

    Android Gradle Plugin 8.0.0

    : Android Studio Flamingo는 Android Gradle 플러그인의 새로운 주 버전과 함께 제공된다. AGP(Android Gradle Plugin) 8.0.0 버전은 많은 동작 변경 사항Transform API 제거도 도입되었기 때문에 꼭 확인해야한다.

     

    Inspect

     

    Updates to App Quality Insights

    : Firebase Crashlytics 의 비정상 종료 데이터를 Android Studio 에서 확인하고 조치를 취할 수 있다. AQI(App Quality Insights) 에서는 앱 버전, Crashlytics 신호, 기기 유형 또는 운영체제 버전별로 필터링 할 수 있다.

    이번 업데이트로 Notes 창에서 문제를 닫거나 유용한 주석을 추가할 수 있다.

     

    Notes 창 내에서 문제에 주석 달기 및 닫기

     

    Network Inspector traffic interception

    : 이제 Network Inspector 는 기본적으로 전체 타임라인에 대한 모든 트래픽 데이터를 표시한다.

    상태 코드, 응답 헤더 및 본문과 같은 다양한 응답이 발생할 때 앱이 어떻게 작동하는지 테스트하는 데 도움이 되는 규칙을 만들고 관리한다. 규칙은 차단할 응답과 이러한 응답이 앱에 도달하기 전에 수정하는 방법을 결정한다. 각 규칙 옆에 있는 활성 상자를 선택하여 활성화 또는 비활성화할 규칙을 선택할 수 있다.

     

    Network Inspector 트래픽 차단

     

    Auto-connect to foreground process in Layout Inspector

    : 이제 Layout Inspector 가 포그라운드 프로세스에 자동으로 연결된다. 더 이상 수동으로 클릭하여 앱에 첨부할 필요가 없다.

     

    IntelliJ

     

    IntelliJ Platform Update

    : Android Studio Flamingo(2022.2.1)에는 IntelliJ 2022.2 플랫폼 릴리스가 포함되어 있으며, IDE 성능 개선, Metal API 덕분에 macOS에서 향상된 렌더링(rendering) 성능 등이 제공된다. 또한, Kotlin을 사용할 때 IDE 성능을 향상시켜 코드 강조 표시, 완성 및 사용 위치 찾기에 긍정적인 영향을 미친다.

     

    요약

    UI Tools

    • 라이브 편집(작성) - 실험적
    • 테마 앱 아이콘 미리보기 지원
    • 동적 색상 미리보기
    • Jetpack Compose 및 Material 3 템플릿

     

    Build

    • 빌드 분석기 작업 분류
    • 프로파일가능한 원클릭 자동화된 빌드 및 실행
    • SDK 확장에 대한 Lint 지원
    • Android Gradle 플러그인 8.0의 브레이킹 체인지

     

    Inspect

    • 앱 품질 인사이트 업데이트
    • Network Inspector 트래픽 차단
    • Layout Inspector 에서 포그라운드 프로세스에 자동 연결

     

    IntelliJ

    • IntelliJ 플랫폼 2022.2 업데이트

     

    더 자세한 내용은 여기를 확인하자.

     

     

    Jetpack 라이브러리 살펴보기

    Jetpack 라이브러리의 개수는 약 70개 이상으로 확인할 수 있다. 여기를 확인하자.(중복되어 작성된 라이브러리도 존재한다.)

     

    아래와 같이 4개의 카테고리로 구성되어 있다.

    • Foundation
      : 앱 개발에 필요한 기본 구성 요소를 제공하는 라이브러리 (ex. AppCompat, Android KTX, Multidex 등)
    • Architecture
      : 앱 아키텍처를 구성하는 라이브러리 (ex. ViewModel, LiveData, Room, Paging 등)
    • Behavior
      : 앱의 특정 동작을 지원하는 라이브러리 (ex. Navigation, WorkManager, Preference 등)
    • UI
      : 앱의 사용자 인터페이스를 개발하는 데 필요한 라이브러리 (ex. Fragment, RecyclerView, ViewPager2, ConstraintLayout 등)

     

    각 카테고리에는 다수의 라이브러리가 있고 정확한 라이브러리 개수는 시간이 지남에 따라 계속 변할 수 있다.

     

    사용할 Jetpack 라이브러리

    1. activity
      : Activity에 기반하여 빌드된 구성 가능한 API에 액세스한다.
    2. appcompat
      : 이전 API 버전의 플랫폼에서 새 API에 액세스할 수 있다(대부분 Material Design 사용).
    3. camera
      : 모바일 카메라 앱을 빌드한다.
    4. compose
      : 모양과 데이터 종속 항목을 설명하는 구성 가능한 함수를 사용하여 프로그매틱 방식으로 UI를 정의한다.
    5. compose.animation
      : Jetpack Compose 애플리케이션에서 애니메이션을 빌드하여 풍부한 사용자 경험을 제공한다.
    6. compose.compiler
      : Kotlin 컴파일러 플러그인으로 최적화를 사용 설정하고 @Composable 함수를 변환한다.
    7. compose.foundation
      : 즉시 사용 가능한 구성요소를 사용해 Jetpack Compose 애플리케이션을 작성하고 기초를 확장해 나만의 디자인 시스템 요소를 빌드한다.
    8. compose.material
      : 즉시 사용 가능한 Material Design 구성요소로 Jetpack Compose UI를 빌드한다. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공한다.
    9. compose.material3
      : 차세대 Material Design인 Material Design 3 구성요소로 Jetpack Compose UI를 빌드한다. Material 3은 업데이트된 테마 설정 및 구성요소, Material You 맞춤설정 기능(동적 색상 등)을 포함하며 새로운 Android 12의 시각적 스타일 및 시스템 UI와 일관되도록 설계되었다.
    10. compose.runtime
      : Compose 의 프로그래밍 모델과 상태 관리를 위한 기본 구성요소이며, Compose 컴파일러 플러그인이 타겟팅하는 핵심 런타임이다.
    11. compose.ui
      : 레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소이다.
    12. databinding
      : 레이아웃의 UI 구성요소를 선언적 형식을 사용하여 앱의 데이터 소스에 결합한다.
    13. fragment
      : Activity 내에서 호스팅되는 여러 개의 독립적인 화면으로 앱을 분류한다.
    14. hilt
      : Dagger Hilt의 기능을 확장하여 androidx 라이브러리에서 특정 클래스의 종속 항목 삽입을 사용 설정한다.
    15. lifecycle
      : Activity나 Fragment의 현재 수명 주기 상태를 기반으로 동작을 조정할 수 있는 수명 주기 인식 구성요소를 빌드한다.
    16. Material Design Components
      : Android 용으로 맞춤설정이 가능한 모듈식 Material Design UI 구성요소이다.
    17. navigation
      : 인앱 UI를 빌드 및 구조화하고 딥 링크를 처리하며 화면 간 이동할 수 있다.
    18. paging
      : 페이지에 데이터를 로드하여 RecyclerView에 표시한다.
    19. room
      : SQLite 데이터베이스에서 지원하는 영구 데이터를 생성, 저장, 관리한다.
    20. test
      : Android 에서 테스트한다.
    21. work
      : 지연 가능한 제약 조건 기반 백그라운드 작업을 예약하고 실행한다.
    22. transition
      : 시작 및 종료 레이아웃에서 UI 모션에 애니메이션을 적용한다.
    23. exifinterface
      : 이미지 파일 EXIF(데이터) 태그를 읽고 쓴다.
    24. media3
      : 미디어 사용 사례를 위한 지원 라이브러리이다.
    25. mediarouter
      : 일반 사용자 인터페이스를 사용하여 원격 수신 기기에서 미디어 표시 및 재생을 사용 설정한다.
    26. viewpager2
      : 스와이프할 수 있는 형식으로 뷰 또는 프래그먼트를 표시한다.
    27. appsearch
      : 사용자를 위한 인앱 검색 기능을 빌드한다.

     

    'Android' 카테고리의 다른 글

    Jetpack compose Scaffold 와 Snackbar  (0) 2023.05.03
    Android Native App 개발 - ⑤  (0) 2023.04.25
    Android Native App 개발 - ③  (0) 2023.04.17
    Android Native App 개발 - ②  (0) 2023.04.17
    Android Native App 개발 - ①  (0) 2023.04.11
Designed by Tistory.