Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Compose

모양과 데이터 종속 항목을 설명하는 구성 가능한 함수를 사용하여 프로그래매틱 방식으로 UI를 정의합니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2020년 9월 16일 - - - 1.0.0-alpha04

구조

Compose는 androidx 내의 Maven 그룹 ID 7개의 조합입니다. 각 그룹에는 타겟팅된 일부 기능이 포함되고 각 기능에는 자체 출시 노트 세트가 있습니다.

다음 표에서는 각 출시 노트 세트에 관한 그룹과 링크를 설명합니다.

그룹설명
compose.animationJetpack Compose 애플리케이션에서 애니메이션을 빌드하여 사용자 환경에 풍부함을 더하세요.
compose.compilerKotlin 컴파일러 플러그인으로 최적화를 사용 설정하고 @구성 가능한 함수를 변환하세요.
compose.foundation즉시 사용 가능한 기본 요소를 사용해 Jetpack Compose 애플리케이션을 작성하고 토대를 확장해 나만의 디자인 시스템을 구축하세요.
compose.material즉시 사용 가능한 머티리얼 디자인 구성요소로 Jetpack Compose UI를 빌드하세요. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공합니다.
compose.runtimeCompose의 프로그래밍 모델과 상태 관리용 기본 요소 및 타겟팅용 Compose Compiler Plugin의 핵심 런타임입니다.
compose.ui레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다.
uiJetpack Compose 라이브러리로 작업합니다.

종속 항목 선언

Compose의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha04"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참조하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 표를 추가할 수 있습니다.

새 문제 만들기

자세한 내용은 Issue Tracker 문서를 참조하세요.

버전 1.0.0

버전 1.0.0-alpha04

2020년 10월 1일

androidx.compose:compose-compiler1.0.0-alpha04 버전에서 androidx.compose.compiler:compiler로 리팩터링되었습니다. 향후 버전은 Compose Compiler 페이지를 참조하세요.

버전 1.0.0-alpha03

2020년 9월 16일

androidx.compose:compose-compiler:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

버전 1.0.0-alpha02

2020년 9월 2일

androidx.compose:compose-compiler:1.0.0-alpha021.0.0-alpha01 이후 변경사항 없이 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

버전 1.0.0-alpha01

2020년 8월 26일

androidx.compose:compose-compiler:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

버전 0.1.0-dev

버전 0.1.0-dev17

2020년 8월 19일

androidx.compose:compose-compiler:0.1.0-dev17이 출시되었습니다. 버전 0.1.0-dev17에 포함된 커밋을 확인하세요.

버전 0.1.0-dev16

2020년 8월 5일

androidx.compose:compose-compiler:0.1.0-dev16이 출시되었습니다. 버전 0.1.0-dev16에 포함된 커밋을 확인하세요.

대부분의 Jetpack Compose 패키지는 아래 표에 따라 리팩터링되었습니다.

Jetpack Compose 패키지 리팩터링

이전 패키지 이름 새 패키지 이름
androidx.animation androidx.compose.animation.core
androidx.ui.autofill androidx.compose.ui.autofill
androidx.compose androidx.compose.runtime
androidx.compose.dispatch androidx.compose.runtime.dispatch
androidx.ui.animation androidx.compose.animation
androidx.ui.core androidx.compose.ui
androidx.compose.ui.unit
androidx.compose.ui.graphics
androidx.ui.foundation androidx.compose.foundation
androidx.ui.geometry androidx.compose.ui.geometry
androidx.ui.graphics androidx.compose.ui.graphics
androidx.ui.input androidx.compose.ui.text.input
androidx.ui.intl androidx.compose.ui.text.intl
androidx.ui.layout androidx.compose.foundation.layout
androidx.ui.livedata androidx.compose.runtime.livedata
androidx.ui.material androidx.compose.material
androidx.ui.material.icons androidx.compose.material.icons
androidx.ui.rxjava2 androidx.compose.runtime.rxjava2
androidx.ui.savedinstancestate androidx.compose.runtime.savedinstancestate
androidx.ui.node androidx.compose.ui.node
androidx.compose.ui.input.pointer
androidx.ui.platform androidx.compose.ui.platform
androidx.ui.res androidx.compose.ui.res
androidx.ui.semantics androidx.compose.ui.semantics
androidx.ui.testutils androidx.compose.ui.input.pointer
androidx.ui.text androidx.compose.foundation.text
androidx.compose.ui.text
androidx.ui.text.platform androidx.compose.ui.text.android
androidx.compose.ui.platform
androidx.ui.unit androidx.compose.ui.unit
androidx.ui.util androidx.compose.ui.util
androidx.ui.viewinterop androidx.compose.ui.viewinterop
androidx.ui.viewmodel androidx.compose.ui.viewinterop
아직 리팩터링되지 않음(변경사항 없음)
androidx.ui.test
androidx.ui.tooling

Android 스튜디오를 사용하는 경우 import 문을 아래 코드 스니펫으로 대체하고 Android 스튜디오에서 Optimize Imports 버튼을 사용할 수 있습니다. Android 스튜디오에서 다루지 않는 모든 경우는 위 패키지 목록을 참조하세요.

  import androidx.compose.runtime.*
  import androidx.compose.animation.*
  import androidx.compose.animation.core.*
  import androidx.compose.foundation.*
  import androidx.compose.foundation.gestures.*
  import androidx.compose.foundation.layout.*
  import androidx.compose.foundation.lazy.*
  import androidx.compose.foundation.shape.*
  import androidx.compose.material.*
  import androidx.compose.material.icons.*
  import androidx.compose.material.icons.filled.*
  import androidx.compose.ui.*
  import androidx.compose.ui.geometry.*
  import androidx.compose.ui.draw.*
  import androidx.compose.ui.graphics.*
  import androidx.compose.ui.graphics.drawscope.*
  import androidx.compose.ui.graphics.painter.*
  import androidx.compose.ui.graphics.vector.*
  import androidx.compose.ui.layout.*
  import androidx.compose.ui.platform.*
  import androidx.compose.ui.res.*
  import androidx.compose.ui.text.*
  import androidx.compose.ui.text.font.*
  import androidx.compose.ui.text.style.*
  import androidx.compose.ui.unit.*
  import androidx.compose.ui.util.*
  import androidx.compose.ui.viewinterop.*
  import androidx.ui.tooling.preview.*

버전 0.1.0-dev15

2020년 7월 22일

androidx.compose:compose-compiler:0.1.0-dev15가 출시되었습니다. 버전 0.1.0-dev15에 포함된 커밋을 확인하세요.

대부분의 Jetpack Compose 아티팩트는 아래 표에 따라 리팩터링되었습니다.

이번 출시 버전에서는 아티팩트 이름만 리팩터링되었습니다. 향후 출시 버전에서는 패키지 이름이 새로운 아티팩트 이름을 따르도록 업데이트될 예정입니다.

Jetpack Compose 아티팩트 리팩터링

이전 아티팩트 새로운 아티팩트
androidx.compose:compose-dispatch androidx.compose.runtime:runtime-dispatch
androidx.compose:compose-runtime androidx.compose.runtime:runtime
androidx.ui:ui-animation androidx.compose.animation:animation
androidx.ui:ui-animation-core androidx.compose.animation:animation-core
androidx.ui:ui-core androidx.compose.ui:ui
androidx.ui:ui-foundation androidx.compose.foundation:foundation
androidx.ui:ui-geometry androidx.compose.ui:ui-geometry
androidx.ui:ui-graphics androidx.compose.ui:ui-graphics
androidx.ui:ui-layout androidx.compose.foundation:foundation-layout
androidx.ui:ui-livedata androidx.compose.runtime:runtime-livedata
androidx.ui:ui-material androidx.compose.material:material
androidx.ui:ui-material-icons-core androidx.compose.material:material-icons-core
androidx.ui:ui-material-icons-extended androidx.compose.material:material-icons-extended
androidx.ui:ui-rxjava2 androidx.compose.runtime:runtime-rxjava2
androidx.ui:ui-saved-instance-state androidx.compose.runtime:runtime-saved-instance-state
androidx.ui:ui-text androidx.compose.foundation:foundation-text
androidx.ui:ui-text-android androidx.compose.ui:ui-text-android
androidx.ui:ui-text-core androidx.compose.ui:ui-text
androidx.ui:ui-unit androidx.compose.ui:ui-unit
androidx.ui:ui-util androidx.compose.ui:ui-util
아직 리팩터링되지 않음(변경사항 없음)
androidx.compose:compose-compiler
androidx.ui:ui-test
androidx.ui:ui-tooling

종속 항목 업데이트

  • 0.1.0-dev15 버전의 Compose를 사용하려면 위의 종속 항목 선언에 표시된 새로운 코드 스니펫에 따라 종속 항목을 업데이트해야 합니다.

버전 0.1.0-dev14

2020년 6월 24일

androidx.compose:compose-compiler:0.1.0-dev14androidx.compose:compose-runtime:0.1.0-dev14가 출시되었습니다. 버전 0.1.0-dev14에 포함된 커밋을 확인하세요.

API 변경사항

  • Recompose 컴포저블은 더 이상 유용한 추상화가 아닙니다. 대부분의 재구성은 MutableState 할당의 결과로 발생해야 합니다. 그 외의 경우에는 invalidate 함수를 사용하여 현재 범위의 재구성을 트리거하는 것이 좋습니다. (Ifc992)
  • 관찰은 더 이상 유용한 추상화가 아닙니다. 관찰을 복제해야 한다면 구성 가능한 람다 매개변수를 실행하는 구성 가능한 함수를 만들기만 하면 관찰의 구현을 복제할 수 있습니다. 예: @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)
  • @Direct는 지원 중단되고 @ComposableContract(restartable=false)로 대체되었습니다. (If4708)

버그 수정

  • androidx.ui.foundation.TextFieldValueandroidx.ui.input.EditorValue는 지원 중단되었습니다. 이 유형을 사용하는 TextField, FilledTextField, CoreTextField 컴포저블도 지원 중단되었습니다. 대신 androidx.ui.input.TextFieldValue를 사용하세요. (I4066d, b/155211005)

외부 기여

  • 초기 값이 없는 Flow<T>.collectAsState()가 지원 중단되었습니다. 대신 StateFlow<T>를 사용하거나 명시적인 초기 값을 전달하세요. (I63f98, b/157674865)
    • 다음과 같은 변경사항에 도움을 주신 Square의 Zach Klippenstein에게 감사드립니다.

버전 0.1.0-dev13

2020년 6월 10일

androidx.compose:compose-compiler:0.1.0-dev13androidx.compose:compose-runtime:0.1.0-dev13이 출시되었습니다. 0.1.0-dev13에 포함된 커밋을 확인하세요.

알려진 문제

  • 애플리케이션이 androidx.core:core-ktx:1.2.0에 종속되고 여러 개의 글꼴과 글꼴 두께를 갖는 FontFamily가 사용되는 경우 선택하는 글꼴은 일반 글꼴 두께로 렌더링됩니다. 이 문제를 해결하기 위해 노력하고 있으며 현재 해결 방법은 androidx.core:core-ktx:1.2.0-alpha01 또는 androidx.core:core-ktx:1.1.0을 사용하는 것입니다.

버전 0.1.0-dev12

2020년 5월 27일

androidx.compose:compose-compiler:0.1.0-dev12androidx.compose:compose-runtime:0.1.0-dev12가 출시되었습니다. 버전 0.1.0-dev12에 포함된 커밋을 확인하세요.

API 변경사항

  • Compose 컴파일러의 코드 생성 전략을 변경했습니다. 변경하기 전에는 Compose 컴파일러에서 호출을 구성 가능한 함수로 변환했습니다. 이번 변경으로 이제 구성 가능한 함수의 본문은 변환하고 호출 사이트의 대부분은 변경하지 않고 그대로 둡니다.

    이는 Compose 런타임과 통신하는 로직이 대부분 호출 사이트가 아니라 함수 본문의 시작 부분에서 발생함을 의미합니다.

    이번 변경은 모든 Compose 사용에서 소스와 호환됩니다. 대부분의 Compose 사용자는 이번 변경으로 인해 어떤 코드도 업데이트할 필요가 없습니다.

    이 작업을 지원하기 위해 모든 구성 가능한 함수의 JVM 서명이 변경되었습니다. 단일 매개변수를 허용하는 구성 가능한 함수는 3개의 매개변수를 허용하는 함수로 변환됩니다. 추가 매개변수는 '키' 정수인 컴포저, 호출을 통한 메타데이터 전파에 사용되는 비트마스크 정수입니다.

    이제 Compose는 기본 인수를 구성 가능한 함수로도 변환합니다. 함수 자체의 추가 합성으로 인한 기본 오버로드 없이 기본 인수를 변환하므로 이러한 변경으로 인해 정의되는 함수의 수가 줄어듭니다.

    이로 인해 알려진 의도된 동작 변경사항은 다음과 같습니다.

    1. 일부 호출이 이전에는 건너뛰지 않던 곳을 건너뜁니다.
    2. 이제 기본 인수 표현식의 구성 가능한 표현식이 올바르게 작성 및 처리됩니다.

    이 작업에는 다음과 같은 최적화가 포함되어 있습니다.

    1. 매개변수 비교 결과는 호출 그래프를 통해 다른 구성 가능한 함수로 전파됩니다. 이렇게 하면 런타임 시 비교 작업이 적게 발생하고 슬롯 표 크기가 줄며 이전에는 건너뛰지 않던 구성 가능한 함수를 더 많이 건너뜁니다.
    2. 컴파일 시간에 '정적'으로 확인된 매개변수는 런타임 시 더 이상 비교되거나 저장되지 않습니다. 따라서 비교 횟수와 슬롯 표 크기가 줄어듭니다.
    3. 함수 본문의 제어 흐름 구조는 생성되는 그룹 수를 최소화하는 데 사용되므로 슬롯 표 크기가 줄고 런타임 동안 작업도 줄어듭니다.
    4. 함수의 사용되지 않은 전달 및 수신자 매개변수는 함수의 본문 안에서 사용되지 않으면 함수의 건너뛰기 가능성을 판단하는 데 포함되지 않습니다.

    대부분의 브레이킹 체인지는 다음과 같이 컴파일러가 직접 타겟팅하는 API로 인해 발생하며 Compose의 일반적인 사용에는 영향을 미치지 않습니다.

    1. Composer::startExpr가 삭제되었습니다.
    2. Composer::endExpr가 삭제되었습니다.
    3. Composer::call이 지원 중단되었습니다.
    4. key의 non-varargs 오버로드가 삭제되었습니다. 앞으로는 vararg 버전을 사용하세요.
    5. Pivotal 주석이 지원 중단되었습니다. 대신 key를 사용하세요.
    6. ScopeUpdateScope::updateScope가 함수 1이 아닌 함수 3을 예상하도록 변경되었습니다.
    7. restartableFunction 및 restartableFunctionN이 추가 컴파일 시간 매개변수를 포함하도록 업데이트되었습니다.

    (I60756, b/143464846)

  • 최근 도입된 StateFlow를 위한 어댑터가 추가되었습니다(I61dd8, b/156233789). StateFlow는 초기 값을 미리 채워 반환된 State가 null이 허용되지 않는 항목이 되도록 합니다.

@Model 주석 지원 중단

  • 이제 @Model 주석이 지원 중단됩니다. 대신 statemutableStateOf를 사용하세요. 이번 지원 중단은 여러 신중한 논의 끝에 결정되었습니다.

    근거

    근거에는 다음이 포함되지만 이에 국한되지는 않습니다.

    • 교육이 필요한 API 노출 영역 및 개념이 감소합니다.
    • 다른 유사한 툴킷(Swift UI, React, Flutter)과 더욱 원활하게 호환됩니다.
    • 되돌릴 수 있는 결정입니다. 나중에 언제든지 @Model을 가져올 수 있습니다.
    • @Model을 처리해야 할 작업으로 구성하는 데 있어서 발생하는 특수한 사용 및 답변하기 어려운 질문을 삭제합니다.
      • @Model 데이터 클래스, 등호, 해시코드 등
      • 일부 속성은 '관찰'되고 나머지는 관찰되지 않게 하려면 어떻게 해야 하나요?
      • 관찰에서 사용할 구조 동등성과 참조 동등성을 각각 지정하려면 어떻게 해야 하나요?
    • 시스템의 '마법'을 줄입니다. 즉, 시스템이 실제보다 더 유용하다고(즉, 목록을 식별하는 방법을 알고 있다고) 가정할 가능성을 줄입니다.
    • 관찰의 세부사항을 더 직관적으로 파악할 수 있습니다.
    • 클래스의 변수에서 속성으로의 리팩터링 가능성을 개선합니다.
    • State별로 직접 최적화할 가능성이 잠재적으로 생깁니다.
    • 나머지 생태계와 더 원활하게 호환되고 불변 또는 '변경 가능한 상태를 허용'하는 데 모호성을 줄입니다.

    이전 참고사항

    @Model의 거의 모든 기존 사용법은 두 가지 방법 중 하나로 상당히 쉽게 변환됩니다. 아래 예에서는 속성이 두 개인 @Model 클래스가 호환 가능하게 사용됨을 보여줍니다.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    대안 1: State<OriginalClass> 사용 및 사본 생성

    이 접근 방식은 Kotlin의 데이터 클래스를 사용하면 더 쉽습니다. 기본적으로 모든 이전 var 속성을 데이터 클래스의 val 속성으로 만들고 remember 대신 state를 사용한 다음 데이터 클래스 copy(...) 편의 메서드를 사용하여 상태 값을 원본을 복제한 사본에 할당합니다.

    데이터 클래스의 유일한 변형이 State 인스턴스가 만들어진 동일한 범위에서 실행된 경우에만 이 접근 방식이 효과가 있다는 데 유의해야 합니다. 데이터 클래스가 내부적으로 자신을 변형하여 사용 범위 밖에서 사용되고 있으며 이를 관찰하는 데 의존하고 있다면 접근 방식을 사용하는 것이 좋습니다.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    대안 2: mutableStateOf 및 속성 위임 사용

    이 접근 방식은 Kotlin의 속성 위임과 개발자가 MutableState 인스턴스를 구성 밖에서 만들도록 허용하는 mutableStateOf API를 사용하면 더 쉽습니다. 기본적으로 원래 클래스의 모든 var 속성을 속성 위임으로 mutableStateOf가 있는 var 속성으로 교체합니다. 이렇게 하면 클래스 사용법이 전혀 변경되지 않고 클래스의 내부 구현만 변경되는 이점이 있습니다. 그러나 각 속성이 이제 개별적으로 관찰/작성되므로 동작은 원래 예와 완전히 동일하지는 않습니다. 따라서 리팩터링 후에 확인하는 재구성 범위가 더 좁아질 수 있는데 이는 좋은 현상입니다.

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

버그 수정

  • 지원 중단된 DrawBackground API를 삭제하고 수정자의 drawBackground 확장 API로 대체했습니다. 코드 경로를 줄이고 수정자를 구성의 일부로 만들어야 할 필요성을 삭제하도록 색상, 브러시 및 페인트 drawBackground 구현을 리팩터링했습니다. (I0343a, b/155999867)

버전 0.1.0-dev11

2020년 5월 14일

androidx.compose:compose-compiler:0.1.0-dev11androidx.compose:compose-runtime:0.1.0-dev11이 출시되었습니다. 버전 0.1.0-dev11에 포함된 커밋을 확인하세요.

API 변경사항

  • 흐름용 어댑터가 추가되었습니다. 사용 예:

    val value by flow.collectAsState()
    

    (If2198, b/153375923)

버그 수정

  • 캔버스를 노출하여 CanvasScope를 대신 노출하는 상위 수준 Compose API를 업데이트했습니다. 따라서 소비자가 자체 Paint 객체를 유지하지 않아도 됩니다. 캔버스에 계속 액세스해야 하는 소비자의 경우 콜백을 제공하여 기본 캔버스에서 그리기 명령어를 실행하는 drawCanvas 확장 메서드를 사용하면 됩니다. (I80afd)
  • 람다 API 후행 WithConstraints가 변경되었습니다. 이제 두 매개변수 대신 제약 조건 및 layoutDirection 외에도 Dp에서 minWidth, maxWidth, minHeight, maxHeight 속성을 제공하는 수신기 범위가 있습니다. (I91b9a, b/149979702)
  • 대칭 패딩 수정자를 추가했습니다. (I39840)

버전 0.1.0-dev10

2020년 4월 29일

androidx.compose:compose-compiler:0.1.0-dev10androidx.compose:compose-runtime:0.1.0-dev10이 출시되었습니다. 버전 0.1.0-dev10에 포함된 커밋을 확인하세요.

새로운 기능

  • 최신 버전 Kotlin 컴파일러의 IR 백엔드로 기준을 다시 지정했습니다. 즉, 이전에 IR 백엔드와 호환되지 않던 여러 기능(예: 구성 불가능한 코루틴)이 이제 호환됩니다. 따라서 수수께끼 같은 '백엔드 내부 오류' 메시지가 더 적게 표시되고 IR 모듈 및 IR이 아닌 모듈로 코드를 구분하려고 애쓸 필요가 없습니다. 그러나 IR 백엔드는 여전히 실험용이고 버그도 있으므로(아주 적음) 여전히 진행 중인 작업임을 감안하면서 가볍게 시도해 보세요.

버전 0.1.0-dev09

2020년 4월 15일

androidx.compose:compose-compiler:0.1.0-dev09androidx.compose:compose-runtime:0.1.0-dev09이 출시되었습니다. 버전 0.1.0-dev09에 포함된 커밋을 확인하세요.

API 변경사항

  • [변경 가능] 주 속성 위임 연산자가 Kotlin 1.4 속성 위임 최적화를 지원하기 위해 확장 프로그램으로 이동했습니다. by state { ... } 또는 by mutableStateOf(...)를 계속 사용하려면 호출자가 가져오기를 추가해야 합니다. (I5312c 참조)

버그 수정

  • 임의의 Alignment가 아닌 세로 또는 가로 Alignment를 예상하도록 wrapContentWidthwrapContentHeight를 업데이트했습니다. 세로 또는 가로 Alignment를 허용하도록 중력 수식어가 업데이트되었습니다. 맞춤 연속 Alignment를 지원하기 위해 Row, Column, Stack이 업데이트되었습니다. (Ib0728)
  • ui-text 모듈의 이름이 ui-text-core(I57dec)로 변경되었습니다.
  • 개선된 DrawModifier API((Ibaced, b/152919067)):
    • 수신기 범위를 draw() ContentDrawScope로 설정했습니다.
    • draw()의 모든 매개변수가 삭제되었습니다.
    • DrawScope의 인터페이스가 이전 CanvasScope와 동일합니다.
    • ContentDrawScopedrawContent() 메서드를 갖습니다.
  • ColoredRect가 지원 중단되었습니다. 대신 Box(Modifier.preferredSize(width, height).drawBackground(color))를 사용하세요. (I499fa, b/152753731)

버전 0.1.0-dev08

2020년 4월 1일

androidx.compose:compose-compiler:0.1.0-dev08androidx.compose:compose-runtime:0.1.0-dev08이 출시되었습니다. 버전 0.1.0-dev08에 포함된 커밋을 확인하세요.

버그 수정

  • 수정자와 연산자를 팩토리 확장 함수로 대체했습니다.(I225e4)
  • 행 및 열 외부에서 RowScope 및 ColumnScope 멤버에 액세스할 수 있습니다. (I3a641)

버전 0.1.0-dev07

2020년 3월 18일

androidx.compose:compose-compiler:0.1.0-dev07androidx.compose:compose-runtime:0.1.0-dev07이 출시되었습니다. 버전 0.1.0-dev07에 포함된 커밋을 확인하세요.

API 변경사항

  • androidx.compose.ViewComposerandroidx.ui.node.UiComposer로 이동했습니다. (Idef00)
  • androidx.compose.Emittable를 삭제했습니다. ComponentNode와 중복된 상태였습니다. (Idef00)
  • `androidx.composition.ViewAdapters가 삭제되었습니다. 더 이상 지원되지 않는 사용 사례입니다. (Idef00)
  • Compose.composeInto가 지원 중단되었습니다. 대신 setContent 또는 setViewContent를 사용하세요. (Idef00)
  • Compose.disposeComposition가 지원 중단되었습니다. 대신 setContent에서 반환한 Compositiondispose 메서드를 사용하세요. (Idef00)
  • androidx.compose.Compose.subcomposeIntoandroidx.ui.core.subcomposeInto로 이동했습니다. (Idef00)
  • ComponentNode#emitInsertAt의 이름이 ComponentNode#insertAt로 변경되었습니다. (Idef00)
  • ComponentNode#emitRemoveAt의 이름이 ComponentNode#removeAt로 변경되었습니다. (Idef00)
  • ComponentNode#emitMode의 이름이 ComponentNode#move로 변경되었습니다. (Idef00)

버그 수정

  • LayoutFlexible을 LayoutWeight로 이름을 변경했습니다. 채우기 위해 긴 매개변수의 이름을 변경했습니다. (If4738)
  • withConstraints에 LayoutDirection 매개변수가 있습니다.(I6d6f7)

버전 0.1.0-dev06

2020년 3월 4일

androidx.compose:compose-compiler:0.1.0-dev06androidx.compose:compose-runtime:0.1.0-dev06이 출시되었습니다. 버전 0.1.0-dev06에 포함된 커밋을 확인하세요.

새로운 기능

  • ComposeFlags.COMPOSER_PARAM 플래그를 true로 업데이트했습니다. 이는 작성 플러그인의 코드 생성 전략을 변경합니다. 높은 수준에서 이는 @Composable 함수가 추가 합성 매개변수와 함께 생성되어 후속 @Composable 호출로 전달되도록 합니다. 이는 실행을 적절히 관리하기 위한 런타임을 확보하기 위함입니다. 이 기능은 중요한 바이너리 브레이킹 체인지이므로 승인된 모든 작성 사용 시 소스 수준의 호환성을 유지해야 합니다. (aosp/1226314)

버전 0.1.0-dev05

2020년 2월 19일

androidx.compose:compose-compiler:0.1.0-dev05androidx.compose:compose-runtime:0.1.0-dev05이 출시되었습니다. 버전 0.1.0-dev05에 포함된 커밋을 확인하세요.

API 변경사항

  • ambients API에 브레이킹 체인지가 있습니다. 자세한 내용은 로그와 Ambient<T> 문서를 참조하세요.(I4c7ee, b/143769776)

버그 수정

  • ButtonStyle을 고유 함수로 대체했으며 텍스트(문자열) 오버로드를 삭제했습니다. 사용량 정보는 업데이트된 샘플을 참조하세요. (If63ab, b/146478620, b/146482131)

버전 0.1.0-dev04

2020년 1월 29일

androidx.compose:compose-compiler:0.1.0-dev04androidx.compose:compose-runtime:0.1.0-dev04 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • MutableStateareEquivalent 콜백을 추가했습니다. (Ic2ef8)
  • 구성요소를 삭제했으며 최상위 구성 API를 리팩터링했습니다. (I1f22e)
  • 컴포저 매개변수를 사용하여 구성 가능한 호출을 변환합니다. (I1691e)
  • 구성 클래스를 삭제하고 컴포저 기본 클래스로 대체합니다. (Ieadbf)
  • State<T>MutableState<T>를 안정적인 유형으로 표시합니다. (b/146557624)
  • currentComposerIntrinsic 및 테스트를 추가하여 올바른 매개변수 전달을 보장합니다. (I133f0)
  • ModelObserver를 단일 스레드로 만들었습니다. (Ica33d)
  • 인라인 구성 가능한 호출을 중심으로 그룹을 올바르게 생성합니다. (Ibf739)
  • 사용하지 않는 EffectsDsl 주석을 삭제합니다. (Ibe81d)
  • @Stable 주석을 추가했습니다. 수정자를 안정적인 것으로 표시했습니다. (Iacba7)
  • MutableState, State, mutableStateOf API를 도입했습니다. (I98291)
  • 효과를 @Composable로 리팩터링했습니다. (Ie2686)
  • ObserverMapModelObserver의 성능을 향상했습니다. (Ieb9b6)
  • 비 ComponentNode를 관찰할 수 있도록 읽기 관찰을 변경했습니다. (Ia4d93)