Android Jetpack Compose란?

98oys·2022년 5월 8일
0

Android Jetpack Compose

목록 보기
1/5
post-thumbnail

Jetpack Compose는 네이티브 Android UI를 빌드하기 위한 최신 도구 키트입니다.
Jetpack Compose는 더 적은 수의 코드, 강력한 도구, 직관적인 Kotlin API로 Android에서의 UI개발을 간소화하고 가속화합니다.

안드로이드는 기본적으로 xml의 UI들을 Class에서 세팅을 해주고 Activity에서 UI를 어떻게 컨트롤 할 지 정의합니다.

이 과정대로 코드를 작성하면 불필요한 코드량 증가와 가독성 저하를 발생시킬 수 있습니다.

다른 개발자가 내 코드를 보거나 유지보수를 할 때, xml과 class를 번갈아 보면서 선언된 뷰와 변수의 이름 등을 찾는 불편한 작업을 해야할 수도 있습니다.

위와 같은 불편함을 해결할 새로운 UI 제작 방식이 Jetpack Compose 입니다.

Compose는 Kotlin의 특징을 이용해 선언형 프로그래밍으로 UI를 만듭니다.

🍓 선언형 프로그래밍은

"Hello world!" 라는 식의 말을 하듯이 선언을 합니다.
구현 방법은 신경쓰지 않고 무엇을 만들지 먼저 명령을 내리는 방식입니다.

구현 방식을 적지 않고 만드는 명령만 적기 때문에 상대적으로 직관적입니다.

💪 Compose의 장점

Less Code - 코드 감소

  • 적은량의 코드로 보다 많은 작업을 하고 전체 버그 클래스를 방지할 수 있으므로 코드가 간단하며 유지 보수가 쉽습니다.

Intuitive - 직관적

  • UI만 작성하면 나머지는 Compose가 처리합니다. 앱의 상태가 변경되면 UI가 자동으로 업데이트 됩니다.

Accelerate Devlopment - 빠른 개발 과정

  • 기존의 모든 코드와 호환되므로 언제든 사용할 수 있습니다. 실시간 미리보기 및 완전한 안드로이드 스튜디오 지원으로 빠르게 반복할 수 있습니다.

Powerful - 강력한 성능

  • 안드로이드 플랫폼 API에 직접 접근하고 머티리얼 디자인 등을 기본적으로 지원하는 멋진 앱을 만들 수 있습니다.

이 많은 장점중에 저에겐 실시간 미리보기의 기능이 가장 매력적으로 보입니다!

🍒 사용 방법

[File] - [New] - [New Project...]에서 새로운 프로젝트를 선택하고 Empty Compose Activity를 선택합니다.

Next를 클릭하고, Compose는 최소 API 21이상에서 사용할 수 있습니다.

모든 Jetpack 구성요소는 Google Maven 저장소에서 사용할 수 있습니다.
settings.gradle file을 열고 아래와 같이 google() 저장소를 추가합니다.
대부분 프로젝트를 생성할 때 자동으로 추가되어있습니다!

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        jcenter()
    }
}

build.gradle(Module)

android {
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion '1.5.21'
    }
}
 buildFeatures {
        compose true
    }
    kotlinOptions {
        jvmTarget = '1.8'
        useIR = true
    }
    
 dependencies {
 	...
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material:material:$compose_version"
    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    implementation 'androidx.activity:activity-compose:1.4.0'
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
}
profile
Android Developer, Department of Information and Communication Engineering, Inha University

0개의 댓글