Android 스튜디오 미리보기의 새로운 기능

Android 스튜디오 4.1이 공개 버전 채널로 출시되었습니다. 여기에서 다운로드하세요.

Android 스튜디오 4.2는 현재 베타 채널로 배포 중입니다.

Android 스튜디오 Arctic Fox | 2020.3.1은 현재 Canary 및 개발자 채널로 배포 중입니다.

각 출시 버전의 주목할 만한 수정사항 목록을 비롯한 최신 출시 소식은 버전 업데이트를 참고하세요.

Android 스튜디오의 미리보기 버전을 사용하는 동안 문제가 발생하면 알려주시기 바랍니다. 버그를 신고하시면 Android 스튜디오를 개선하는 데 도움이 됩니다.

Android 스튜디오 Arctic Fox | 2020.3.1

업데이트된 Android 스튜디오의 버전 번호 지정

Android 스튜디오의 버전 번호 지정 시스템이 Android 스튜디오가 기반하는 IDE인 IntelliJ IDEA와 더 일치하도록 변경되었습니다.

이전 번호 지정 시스템에서는 이 버전이 Android 스튜디오 4.3이나 버전 4.3.0.1이었을 것입니다. 새로운 번호 지정 시스템으로 이제 Android 스튜디오 - Arctic Fox | 2020.3.1 Canary 1 또는 버전 2020.3.1.1입니다.

Intellij 버전 기존 이름 기존 - 번호 시스템 신규 - 연도 시스템 새 버전 이름
2020.3 4.3 Canary 1 4.3.0.1 2020.3.1.1 Arctic Fox | 2020.3.1 Canary 1

앞으로 Android 스튜디오의 버전 번호는 다음과 같은 방식으로 결정됩니다.

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • 처음 두 숫자 그룹은 특정 Android 스튜디오 버전이 기반하는 Intellij 플랫폼의 버전을 나타냅니다. 이번 출시의 경우 버전 2020.3입니다.
  • 세 번째 숫자 그룹은 스튜디오 주 버전을 나타내며 1부터 시작하여 주 버전이 출시될 때마다 1씩 증가합니다.
  • 네 번째 숫자 그룹은 스튜디오 부/패치 버전을 나타내며 1부터 시작하여 부 버전이 출시될 때마다 1씩 증가합니다.
  • 각 주 버전에 버전 이름도 부여하며 동물 이름에 따라 A부터 Z까지 증가합니다. 이번 버전의 이름은 Arctic Fox입니다.

업데이트된 Android Gradle 플러그인의 버전 번호 지정

기본 Gradle 빌드 도구와 더 일치하도록 Android Gradle 플러그인(AGP)의 버전 번호 지정 시스템을 업데이트합니다. 따라서 AGP 7.0이 AGP 4.2 다음에 출시되는 버전입니다.

자세한 내용은 AGP 출시 노트에서 버전 관리 변경사항을 참고하세요.

C++ 편집기: 디버거에서 실행 지점 설정

디버거로 앱을 실행할 때 C++ 코드 편집기 창에서 임의의 실행 지점을 설정할 수 있습니다. 이 기능은 루프에서 빠져나오거나 분기 코드를 사용하여 다른 경로를 지정하려는 경우에 유용합니다.

C/C++ 코드 편집기에서 실행 지점 설정

이 기능을 사용하려면 코드에 중단점을 설정하고 디버거에서 앱을 실행합니다. 프로그램이 이 중단점에 도달하면 노란색 화살표를 다음에 실행하려는 코드 행으로 드래그 앤 드롭하여 중단점과 새로운 실행 지점 사이의 명령을 우회합니다.

실행 지점을 변경해도 메모리 콘텐츠(스택 또는 힙)나 다른 애플리케이션 상태는 변경되지 않습니다. 예를 들어, 스택의 로컬 변수 값은 실행 지점이 변경된 후에도 유지됩니다.

이 기능은 arm64-v8a, armeabi-v7ax86_64 ABI에서 사용할 수 있지만, 32비트 x86 ABI에서는 사용할 수 없습니다.

이 기능은 JetBrains의 CLion 편집기의 기본 기능을 기반으로 합니다. 이 기능 및 제한사항에 관한 자세한 내용은 JetBrains의 블로그 게시물을 참고하세요.

데이터 결합의 StateFlow 지원

코루틴을 사용하는 Kotlin 앱의 경우 이제 StateFlow 객체를 데이터 결합 소스로 사용하여 데이터 변경을 UI에 자동으로 알릴 수 있습니다. 데이터 결합은 수명 주기를 인식하며 UI가 화면에 표시될 때만 실행됩니다.

결합 클래스와 함께 StateFlow 객체를 사용하려면 수명 주기 소유자를 지정하여 StateFlow 객체의 범위를 정의하고, 다음 예와 같은 결합 표현식을 사용하여 레이아웃에서 ViewModel 구성요소의 속성 및 메서드를 상응하는 뷰에 할당해야 합니다.

class ViewModel() {
   val username: StateFlow<String>
}
<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

AndroidX를 사용하는 Kotlin 앱의 경우 StateFlow 지원이 코루틴 종속성을 포함한 데이터 결합 기능에 자동으로 포함됩니다.

자세한 내용은 식별 가능한 데이터 객체 작업을 참고하세요.

새 WorkManager Inspector

이전 버전의 Android 스튜디오에서는 개발자가 앱의 SQLite 데이터베이스를 이해하고 디버깅할 수 있도록 Database Inspector가 추가되었습니다. Database Inspector는 앱의 여러 측면에 다양한 유형의 검사기를 지원하도록 설계된 앱 검사 프레임워크를 기반으로 빌드되었습니다.

Arctic Fox Canary 3 이상에서는 WorkManager 라이브러리 2.5.0-beta02 이상을 사용할 때 앱의 백그라운드 작업자를 시각화, 모니터링, 디버깅하는 데 도움이 되는 새로운 WorkManager Inspector를 사용할 수 있습니다.

이제 메뉴 바에서 View > Tool Windows > App Inspection을 선택하여 WorkManager InspectorDatabase Inspector를 모두 찾을 수 있습니다. API 수준 26 이상을 실행하는 기기에서 WorkManager 2.5.0-beta02 이상을 사용하여 앱을 배포하는 경우 아래와 같이 WorkManager Inspector 탭에 활성 작업자가 표시됩니다.

WorkManager Inspector

이제 테이블에서 작업자를 선택하여 작업자 설명, 실행된 방식, 작업자 체인 세부정보, 작업자 실행 결과와 같은 더 자세한 정보를 볼 수 있습니다.

WorkManager Inspector 세부정보

실행에 실패한 작업자의 문제를 조사할 때는 실행 중이거나 대기 중인 작업자를 중지할 수 있습니다. 테이블에서 작업자를 선택하고 툴바에서 Cancel Selected Worker 를 클릭하면 됩니다. 또한 All tags 드롭다운 메뉴를 사용하여 작업자에 할당한 태그별로 표의 작업자를 필터링할 수도 있습니다.

작업자 체인을 시각적으로 보려면 테이블에서 작업자를 선택하고 툴바에서 Show Graph View 를 클릭하세요. 그런 다음 체인에 있는 작업자를 선택하여 세부정보를 확인하거나 현재 대기 중 또는 실행 중인 작업자를 중지할 수 있습니다. 테이블로 돌아가려면 Show List View 를 클릭합니다.

WorkManager Inspector 작업자 체인

이제 Android 스튜디오에서 Gradle 테스트 실행기 사용

전반적인 테스트 실행의 일관성을 개선하기 위해 Android 스튜디오에서는 이제 기본적으로 Gradle을 사용하여 모든 단위 테스트를 실행합니다. 대부분의 경우 이 변경사항은 IDE의 테스트 워크플로에 영향을 주지 않습니다.

예를 들어 컨텍스트 메뉴(테스트 클래스를 마우스 오른쪽 버튼으로 클릭하면 표시됨)에서 Run 명령어나 이에 상응하는 거터 작업 을 클릭하면 Android 스튜디오는 기본적으로 Gradle 실행 구성을 사용하여 단위 테스트를 실행합니다.

테스트 실행을 위한 컨텍스트 메뉴

그러나 Android 스튜디오는 더 이상 기존 Android JUnit 실행 구성을 인식하지 못하므로 프로젝트 파일로 저장할 수 있는 Android JUnit 실행 구성을 Gradle 실행 구성으로 이전해야 합니다.

Gradle 테스트 구성을 만들려면 새 실행/디버그 구성 만들기의 안내에 따라 Gradle 템플릿을 선택합니다. 새 구성을 만들면 Gradle 섹션의 Edit Configurations 대화상자에 표시됩니다.

Android 스튜디오에서 테스트 구성 수정

더 이상 인식되지 않는 Android JUnit 구성을 검사하려면 다음 두 가지 중 하나를 실행하면 됩니다.

  • 텍스트 편집기에서 저장된 구성을 수동으로 엽니다. 이러한 파일의 위치는 사용자가 지정하지만 파일은 일반적으로 <my-app>/.idea/runConfigurations/에 표시됩니다.
  • <my-app>/.idea/workspace.xml에서 임시 구성을 찾고 <component name="RunManager" ...> 노드 아래를 확인합니다. 예:

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

Android Gradle 플러그인 7.0

Android Gradle 플러그인 빌드 캐시 삭제됨

AGP 빌드 캐시는 AGP 4.1에서 삭제되었습니다. 이전에 AGP 2.3에서 Gradle 빌드 캐시를 보완하기 위해 도입된 AGP 빌드 캐시가 AGP 4.1에서는 Gradle 빌드 캐시로 완전히 대체되었습니다. 이 변경사항은 빌드 시간에 영향을 주지 않습니다.

AGP 7.0에서는 android.enableBuildCacheandroid.buildCacheDir 속성과 cleanBuildCache 작업이 삭제되었습니다.

프로젝트에서 자바 11 소스 코드 사용

이제 앱 프로젝트에서 최대 11개의 자바 소스 코드를 컴파일하고 비공개 인터페이스 메서드, 익명 클래스의 diamond 연산자, 람다 매개변수의 로컬 변수 구문과 같은 최신 언어 기능을 사용할 수 있습니다.

이 기능을 사용하려면 compileOptions를 원하는 자바 버전으로 설정하고 compileSdkVersion을 30 이상으로 설정하세요.

Kotlin

// build.gradle.kts

android {
    compileSdkVersion(30)

    compileOptions {
      sourceCompatibility(JavaVersion.VERSION_11)
      targetCompatibility(JavaVersion.VERSION_11)
    }

    kotlinOptions {
      jvmTarget = "11"
    }
}

Groovy

// build.gradle

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

종속성 구성 삭제됨

AGP 7.0 Canary 3에서는 다음 구성(또는 종속성 범위)이 삭제되었습니다.

  • compile
    사용 사례에 따라 api 또는 implementation으로 대체되었습니다.
    *Compile 변형(예: debugCompile)에도 적용됩니다.
  • provided
    compileOnly로 대체되었습니다.
    *Provided 변형(예: releaseProvided)에도 적용됩니다.
  • apk
    runtimeOnly로 대체되었습니다.
  • publish
    runtimeOnly로 대체되었습니다.

대부분의 경우 AGP 업그레이드 어시스턴트에서는 새 구성으로 프로젝트를 자동으로 마이그레이션합니다.

Android Gradle 플러그인에서 컴파일할 때 클래스 경로 변경

Android Gradle 플러그인에서 컴파일하는 경우 컴파일 클래스 경로가 변경될 수 있습니다. 이제 Android Gradle 플러그인이 내부적으로 api/implementation 구성을 사용하므로 컴파일 클래스 경로에서 일부 아티팩트가 삭제될 수 있습니다. 컴파일 시간에 Android Gradle 플러그인 종속 항목을 사용하는 경우 명시적인 종속 항목으로 추가해야 합니다.

Layout Editor용 접근성 검사기

Android 스튜디오는 이제 Android 접근성 테스트 프레임워크와 통합되어 레이아웃에서 접근성 문제를 찾을 수 있습니다. Layout Editor를 사용할 때 Accessibility Scanner Accessibility Scanner 버튼 버튼을 클릭하여 검사기를 실행하세요. 이 도구는 누락된 콘텐츠 설명과 같은 일반적인 문제와 관련하여 해결 방법도 추천합니다.

접근성 검사기는 Canary 8부터 사용할 수 있습니다.

Android 스튜디오의 접근성 검사기

Jetpack Compose 지원

Jetpack Compose 도구 모음을 사용하면 최신 방식으로 앱의 UI를 빌드할 수 있습니다. 도구 모음을 사용하면 간결하고 직관적으로 코드를 작성하고 자바와 완벽하게 상호 운용 가능한 Kotlin의 모든 이점도 누릴 수 있습니다.

Jetpack Compose로 최적의 환경에서 개발하려면 최신 버전의 Android 스튜디오 4.2를 사용해야 합니다. Jetpack Compose와 함께 Android 스튜디오를 사용하여 앱을 개발할 때 Compose UI를 즉시 미리 볼 수 있는 기능 및 새 프로젝트 템플릿과 같은 스마트 편집기 기능을 활용할 수 있기 때문입니다.

자세히 알아보고 시작하려면 Jetpack Compose 개요를 참고하시기 바랍니다.

Arctic Fox | 2020.3.1의 Jetpack Compose 도구 지원

Android 스튜디오에는 이제 Jetpack Compose를 사용하는 앱을 미리 보고 테스트하는 지원이 추가됩니다.

Compose 미리보기

이제 @Preview 메서드의 다음 매개변수를 사용할 수 있습니다.

  • showBackground: 미리보기의 배경을 사용 설정 또는 사용 중지합니다.
  • backgroundColor: 미리보기 표시 영역에서만 사용되는 색상을 설정합니다.
  • uiMode: 이 새 매개변수는 어떤 Configuration.UI_* 상수나 사용할 수 있고 이 매개변수로 미리보기 동작을 변경(예: 야간 모드로 설정)하여 테마가 어떻게 반응하는지 확인할 수 있습니다.

양방향 미리보기

이 모드에서는 UI 구성요소와 상호작용하며 클릭하여 상태가 어떻게 변경되는지 확인할 수 있습니다. UI가 반응하는 방식에 관한 의견을 얻고 애니메이션을 미리 보는 간편한 방법입니다. 사용 설정하려면 양방향 아이콘 을 클릭하세요. 그러면 미리보기가 모드를 전환합니다.

중지하려면 상단 툴바에서 Stop Interactive Preview를 클릭합니다.

기기에 배포

이 기능을 사용하여 UI 스니펫을 기기에 배포합니다. 이렇게 하면 전체 애플리케이션을 시작할 필요 없이 기기에서 코드의 작은 부분을 테스트할 수 있습니다.

@Preview 주석 옆이나 미리보기 상단에 있는 '기기에 배포' 아이콘 을 클릭하면 Android 스튜디오에서 @Preview를 연결된 기기나 에뮬레이터에 배포합니다.

Data Sources API 미리보기

새 Data Sources API를 사용하면 데이터에서 미리보기를 생성할 수 있습니다. 기존 데이터 목록 또는 테마 목록이 있는 경우 이 API를 사용하여 @Preview 메서드에 목록을 매개변수로 삽입할 수 있습니다.

class HelloWorldProvider :
   CollectionPreviewParameterProvider<String>(
       listOf("Hello World", "Привет мир", "Olá Mundo", "Hola Mundo"))

@Preview
@Composable
fun HelloWorldPreview(
   @PreviewParameter(HelloWorldProvider::class) text: String
) {
   MaterialTheme {
       Text(text = text)
   }
}

위 기능을 사용 설정하려면 모듈의 build.gradle에 다음 설정이 포함되어야 합니다.

  android {
  …
  buildFeatures {
    compose true
  }
  composeOptions {
     kotlinCompilerExtensionVersion = "0.1.0-dev13"
     kotlinCompilerVersion = "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
   }
}

다중 기기 테스트를 위한 새로운 테스트 매트릭스

이제 Android 스튜디오 Arctic Fox부터 여러 기기에서 동시에 계측 테스트를 실행하고 전문 계측 테스트 결과 패널을 사용하여 조사할 수 있습니다. 이 패널을 사용하면 API 수준이나 하드웨어 속성으로 인해 테스트가 실패하는지 판단할 수 있습니다.

계측 테스트 패널

다양한 API 수준과 폼 팩터에서 앱을 테스트하는 것은 모든 사용자에게 만족스러운 앱 사용 환경을 제공하는 가장 좋은 방법 중 하나입니다.

이 기능을 활용하려면 다음 단계를 따르세요.

  1. 대상 기기 드롭다운 메뉴(IDE 상단 중앙)에서 Select Multiple Devices를 선택합니다.

    대상 기기 드롭다운 메뉴

  2. 대상 기기를 선택하고 OK를 클릭합니다.

    기기 세트 수정 대화상자

  3. 테스트를 실행합니다.

Run 패널에서 테스트 결과를 보려면 View > Tool Windows > Run으로 이동합니다.

새 테스트 결과 패널을 사용하여 테스트 결과를 상태, 기기, API 수준별로 필터링할 수 있습니다. 또한 헤더를 클릭하여 각 열을 정렬할 수 있습니다. 개별 테스트를 클릭하여 각 기기의 로그 및 기기 정보를 개별적으로 확인할 수 있습니다.

Compose 미리보기의 알려진 문제

androidx.ui.foundation.Dialog는 현재 Compose 미리보기에서 지원되지 않습니다.

Arctic Fox 미리보기의 알려진 문제

이 섹션에서는 Android 스튜디오 Arctic Fox 미리보기의 현재 알려진 문제를 설명합니다.

Canary 2에서 업데이트 패치가 작동하지 않음

Linux 및 macOS 머신에서 업데이트 패치가 Canary 2에 작동하지 않습니다. Canary 2 버전으로 업그레이드하려면 전체 버전을 다운로드하여 설치하세요.

Android 스튜디오 4.2

이 섹션에서는 Android 스튜디오 4.2 미리보기의 새로운 기능과 변경사항을 간략히 설명합니다.

변형당 앱 서명 구성

이제 변형당 Android Gradle 플러그인에서 앱 서명을 사용 설정 또는 사용 중지할 수 있습니다.

다음 예는 Kotlin이나 Groovy에서 onVariants() 메서드를 사용하여 변형당 앱 서명을 설정하는 방법을 보여 줍니다.

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

JDK 11의 Gradle 빌드 최적화

Android 스튜디오에서 실행할 때 Gradle 빌드 도구는 Android 스튜디오에서 설정된 기본 JDK 버전을 사용합니다. 이전 버전에서는 JDK 8이 기본적으로 사용되었습니다. 그러나 4.2에서는 JDK 11이 이제 기본 JDK입니다. 이번 JDK 11로의 업데이트는 JVM 가비지 컬렉터의 기본 구성에 영향을 미칩니다. JDK 8이 병렬 가비지 컬렉터를 사용하는 반면 JDK 11은 G1 가비지 컬렉터를 사용하기 때문입니다.

빌드 성능을 개선하려면 병렬 가비지 컬렉터로 Gradle 빌드를 테스트하는 것이 좋습니다. gradle.properties에서 다음을 설정합니다.

org.gradle.jvmargs=-XX:+UseParallelGC

다른 옵션이 이미 이 필드에 설정되어 있으면 새 옵션을 추가합니다.

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

다양한 구성으로 빌드 속도를 측정하려면 빌드 프로파일링을 참고하세요.

시스템 트레이스: 메모리 및 그래픽의 측정항목 개선

이제 CPU 프로파일러에서 시스템 트레이스 기능에 앱 성능 분석을 위한 새로운 측정항목이 포함됩니다.

Events 테이블

Events 테이블은 Analysis 창의 오른쪽에 새로 추가된 탭입니다. 이 테이블에는 현재 선택된 스레드의 모든 트레이스 이벤트가 나열됩니다.

시스템 트레이스 Events 테이블

새로운 트랙 및 트랙 그룹

이제 Android 9 이상을 실행하는 기기에 배포된 앱의 트레이스를 위해 시스템 트레이스에서 더 많은 데이터가 제공됩니다.

BufferQueue(Display 섹션)

이 새 트랙에는 앱의 노출 영역 BufferQueue의 버퍼 수(0, 1 또는 2)가 표시됩니다. 이미지 버퍼가 Android 그래픽 구성요소 간에 이동할 때 이미지 버퍼의 상태를 이해하는 데 도움이 됩니다. 예를 들어 값이 2인 경우 앱이 현재 삼중 버퍼링되어 입력 지연 시간이 추가로 발생할 수도 있습니다.

시스템 트레이스 버퍼 큐

CPU 주파수(CPU cores 섹션)

CPU 예약 데이터 외에 코어별 CPU 빈도도 포함했습니다. 이 정보를 통해 각 코어가 얼마나 강력하게 작동하는지, 어느 코어가 최신 모바일 프로세서의 '빅' 코어이거나 '리틀' 코어인지 파악할 수 있습니다.

시스템 트레이스 CPU 주파수

Process Memory(RSS)

Process Memory(RSS)에는 앱에서 현재 사용 중인 실제 메모리의 양이 표시됩니다.

시스템 트레이스 Process Memory(RSS)

Total

프로세스에서 현재 사용 중인 실제 메모리의 총량입니다. Unix 기반 시스템에서는 이를 'Resident Set Size'라고 하며 익명 할당(스왑 파일이 지원함), 파일 매핑(한 번에 한 페이지씩 메모리에 로드되는 파일), 공유 메모리 할당(여러 프로세스에서 액세스하며 다양한 메커니즘에서 할당됨)에 사용된 모든 메모리의 조합입니다.

Windows 개발자의 경우 Resident Set Size는 작업 집합 크기와 유사합니다.

Allocated

이 카운터는 프로세스의 일반 메모리 할당에 현재 사용되는 실제 메모리의 양을 추적합니다. 이는 익명(특정 파일이 지원하지 않음) 및 비공개(공유되지 않음)인 할당을 의미합니다.

File Mappings

이 카운터는 프로세스 소유의 파일 매핑에 사용 중인 실제 메모리의 양을 추적합니다.

Shared

이 카운터는 이 프로세스와 시스템의 다른 프로세스 간에 메모리를 공유하는 데 사용 중인 실제 메모리의 양을 추적합니다.

이제 명령줄 도구에서 R8 retrace 사용 가능

명령줄 도구 버전 4.0에서 사용할 수 있는 R8 retrace는 난독화된 스택 트레이스에서 원래 스택 트레이스를 가져오는 독립형 도구입니다.

android_sdk/cmdline-tools에 R8 retrace를 설치하는 SDK Manager를 사용하여 이 패키지를 다운로드할 수 있습니다. 또는 독립형 명령줄 도구 패키지를 다운로드할 수 있습니다.

사용 정보는 사용자 가이드의 R8 retrace를 참고하세요.

새로운 Layout Inspector 새로고침 작업

Android 스튜디오 4.0에 도입된 Layout Inspector는 실행 중인 앱의 UI 스택을 실시간으로 검사하도록 설계되었습니다. 그러나 특정 시점에 앱 레이아웃의 스냅샷을 검사하거나 앱의 실시간 업데이트가 미치는 성능 영향을 최소화해야 할 수도 있으므로 Layout Inspector가 앱에서 발생하는 상황을 즉시 반영할 필요가 없을 수 있습니다.

Layout Inspector에서 실시간 업데이트 일시중지 및 화면 캡처 새로고침

앱에서 UI 데이터의 스냅샷을 수동으로 로드하려면 먼저 Live updates 옵션을 사용 중지합니다. 그런 다음 Refresh 버튼을 클릭하여 검사할 UI 스택의 새 스냅샷을 만들 수 있습니다. Layout Inspector는 이제 세션 간에 Live updates를 사용 설정된 상태나 사용 중지된 상태로 유지하려는 선택을 기억합니다.

Jetpack Compose를 위한 Android Gradle 플러그인 지원

Android Gradle 플러그인 4.2 Canary 13부터 Jetpack Compose 1.0.0-alpha-04 이상만 지원됩니다.

AGP용 업그레이드 어시스턴트

Android 스튜디오 4.2 Canary 5부터는 Android Gradle 플러그인용 업그레이드 어시스턴트를 사용하여 프로젝트의 AGP 버전을 업데이트할 수 있습니다.

Android Gradle 플러그인 업그레이드 어시스턴트 대화상자

기존의 AGP 업그레이드 기능을 기반으로 빌드된 이 도구는 프로젝트 전체의 업데이트/리팩터링을 안내하고 AGP 업그레이드를 실행하기 전의 잠재적인 브레이킹 체인지를 방지하기 위해 업데이트 미리보기를 포함합니다.

업그레이드 어시스턴트에서 처리될 변경사항 미리보기

Safe Args 지원

Safe Args는 유형 안전성을 갖춰 관련 인수를 탐색하고 액세스하기 위한 간단한 객체 및 빌더 클래스를 생성하는 Gradle 플러그인입니다. Android 스튜디오 4.2 Canary 9 이상에는 아래 설명처럼 Safe Args를 사용하는 경우 특수 지원이 포함되어 있습니다.

  • Directions, Args 및 다양한 빌더 클래스의 자동 완성
  • 자바 및 Kotlin Safe Args 플러그인 지원
  • 소스에서 XML로 이동

Database Inspector

쿼리 편집기 개선사항

Database Inspector에는 맞춤 SQL 문을 작성하고 실행하는 데 도움이 되는 개선사항이 포함되어 있습니다. Database Inspector를 열고 New query 탭을 열면 아래와 같이 크기 조절이 가능한 큰 편집기 표면이 나타나며 여기서 쿼리를 작성하고 형식을 지정합니다.

DB Inspector 편집기

또한 Google에서는 이제 이전 쿼리 기록을 제공합니다. Show query history Show query history 버튼 버튼을 클릭하면 현재 선택한 데이터베이스에 관해 이전에 실행한 쿼리 목록이 표시됩니다. 목록에서 쿼리를 클릭하여 편집기에서 전체 쿼리 미리보기를 확인하고 Enter 키를 눌러 편집기에 복사합니다. 그런 다음 Run을 클릭하여 문을 실행합니다.

쿼리 편집기에서 명령어 실행

오프라인 모드

이전 버전의 Android 스튜디오에서는 Database Inspector를 사용하는 동안 앱 프로세스에서 연결을 해제하면 검사기 및 데이터가 닫혔습니다. Android 스튜디오 4.2 Canary 8 이상 버전에는 프로세스 연결이 해제된 후에도 앱의 데이터베이스를 계속 검사하는 기능이 추가되었습니다. 이에 따라 비정상 종료 후 앱을 더 쉽게 디버깅할 수 있습니다.

연결이 해제되면 Database Inspector가 데이터베이스가 다운로드하여 오프라인 모드로 데이터베이스를 사용할 수 있게 만듭니다. 오프라인 상태에서 테이블을 열고 쿼리를 실행할 수 있습니다.

실시간 앱 프로세스에 다시 연결하면 Database Inspector가 라이브 모드로 되돌아가고 기기에 있는 데이터만 표시됩니다. 즉, 오프라인 모드에서 표시된 데이터는 앱 프로세스에 다시 연결해도 지속되지 않습니다. 이 때문에 Database Inspector에서 오프라인 모드로 수정 구문을 수정하거나 실행할 수 없습니다.

기능 모듈의 새로운 removable 설정

Android Gradle 플러그인 4.2는 bundletool 1.0.0을 사용하여 기능 모듈을 활용하는 앱의 동작 변경을 도입합니다. 즉, 명시적으로 dist:removable로 표시되지 않은 dist:install-time으로 지정된 기능 모듈은 기본적으로 삭제가 불가능합니다. 이 새로운 설정은 설치 시 모듈과 기본 모듈의 융합을 최적화하여 일부 앱의 앱 성능을 개선할 수 있습니다.

이 새로운 설정에 관한 자세한 내용은 기능 모듈 매니페스트 문서에서 dist:removable 태그에 관한 문서를 참고하세요.

Android Gradle 플러그인 4.2

새로운 Gradle 속성: android.native.buildOutput

빌드 출력에서 복잡함을 줄이기 위해 AGP 4.2는 CMakendk-build를 사용하는 네이티브 빌드의 메시지를 필터링하여 기본값으로 C/C++ 컴파일러 출력만 표시합니다. 이전에는 빌드된 모든 파일의 출력 줄이 생성되었으며, 이로 인해 정보 메시지의 크기가 컸습니다.

네이티브 출력 전체를 보려면 새로운 Gradle 속성 android.native.buildOutputverbose로 설정하세요.

gradle.properties 파일 또는 명령줄을 통해 이 속성을 설정할 수 있습니다.

gradle.properties
android.native.buildOutput=verbose

명령줄
-Pandroid.native.buildOutput=verbose

이 속성의 기본값은 quiet입니다.

gradle.properties 파일의 동작 변경

AGP 4.2부터 이제 하위 프로젝트에서 Gradle 속성을 재정의할 수 없습니다. 즉, 루트 프로젝트 대신 하위 프로젝트의 gradle.properties 파일에서 속성을 선언하면 이 속성이 무시됩니다.

예를 들어 이전 출시에서 AGP는 projectDir/gradle.properties, projectDir/app/gradle.properties, projectDir/library/gradle.properties 등에서 값을 읽습니다. 앱 모듈의 경우 동일한 Gradle 속성이 projectDir/gradle.propertiesprojectDir/app/gradle.properties 모두에 있으면 projectDir/app/gradle.properties의 값이 우선 적용됩니다.

AGP 4.2에서는 이 동작이 변경되었으며, AGP는 하위 프로젝트의 gradle.properties에서 값을 로드하지 않습니다(예: projectDir/app/gradle.properties). 이 변경은 새로운 Gradle 동작을 반영하고 구성 캐싱을 지원합니다.

gradle.properties 파일의 값을 설정하는 방법에 관한 자세한 내용은 Gradle 문서를 참고하세요.

기본 자바 언어 버전 8

버전 4.2부터 AGP는 기본적으로 자바 8 언어 수준을 사용합니다. 자바 8을 통해 람다 표현식, 메서드 참조, 정적 인터페이스 메서드 등 여러 최신 언어 기능을 사용할 수 있습니다. 지원되는 기능의 전체 목록은 자바 8 문서를 참고하세요.

이전 동작을 유지하려면 자바 7을 모듈 수준 build.gradle.kts 또는 build.gradle 파일에 명시적으로 지정합니다.

Kotlin

// build.gradle.kts

android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Groovy

// build.gradle

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

새 JVM 리소스 컴파일러

Android Gradle 플러그인 4.2 도구의 새로운 JVM 리소스 컴파일러는 AAPT2 리소스 컴파일러의 일부를 대체하는 것으로, 특히 Windows 머신에서 빌드 성능을 개선할 수 있습니다.

Canary 7 출시부터는 새 JVM 리소스 컴파일러가 기본적으로 사용 설정됩니다.

이제 v3 및 v4 서명이 지원됨

이제 Android Gradle 플러그인 4.2는 APK v3APK v4 서명 형식을 지원합니다. 빌드에서 두 형식 중 하나 또는 둘 다를 사용 설정하려면 다음 속성을 모듈 수준 build.gradle 또는 build.gradle.kts 파일에 추가하세요.

Kotlin

// build.gradle.kts

android {
   ...
   signingConfigs {
      config {
          ...
          enableV3Signing(true)
          enableV4Signing(true)
      }
   }
}

Groovy

// build.gradle

android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}

APK v4 서명을 사용하면 Android 11에서 ADB 증분 APK 설치를 통해 대규모 APK를 빠르게 배포할 수 있습니다. 이 새 플래그는 배포 프로세스의 APK 서명 단계를 처리합니다.

여러 기기에 배포

여러 기기 및 API 수준에서 앱 테스트를 간소화하기 위해 이제 다음 단계를 따라 여러 기기 또는 에뮬레이터에 앱을 동시 배포할 수 있습니다.

  1. 대상 기기 드롭다운 메뉴(IDE 상단 중앙)에서 Select Multiple Devices를 선택합니다.

    대상 기기 드롭다운 메뉴

  2. 대상 기기를 선택하고 OK를 클릭합니다.

    기기 세트 수정 대화상자

  3. 앱 또는 테스트를 실행합니다.

변경사항 적용

앱에서 반복할 때 생산성을 높일 수 있도록 Android 11 이상을 실행하는 기기의 Apply Changes를 다음과 같이 개선했습니다.

추가 코드 변경사항 지원

Android 11 이상을 실행하는 기기의 경우 이제 정적 최종 기본 필드를 추가한 후 Apply Code Changes 또는 Apply Changes and Restart Activity 를 클릭하여 변경사항을 실행 중인 앱에 배포할 수 있습니다.

이제 리소스를 추가하고 Apply Changes and Restart Activity 를 클릭하여 Android 11 기기에서 실행 중인 앱에 변경사항을 배포할 수도 있습니다.

ANDROID_SDK_HOME 환경 변수 지원 중단됨

ANDROID_SDK_HOME 환경 변수가 지원 중단되고 ANDROID_PREFS_ROOT로 대체되었습니다. 자세한 내용은 에뮬레이터 환경 변수를 참고하세요.

4.2 미리보기의 알려진 문제

이 섹션에서는 Android 스튜디오 4.2 미리보기의 현재 알려진 문제를 설명합니다.

Kotlin 프로젝트의 린트 예외

checkDependencies=true를 설정한 Kotlin 프로젝트에서는 null 포인터 예외 또는 다음과 같은 오류가 발생할 수 있습니다.

Lint error: package fragment is not found for module

가능한 해결 방법은 Kotlin 프로젝트의 Lint 예외를 참고하세요.

네이티브 메모리 프로파일러: 앱 시작 시 프로파일링 사용 중지됨

앱 시작 시 네이티브 메모리 프로파일링이 사용 중지되었습니다. 이 옵션은 향후 출시에서 사용 설정될 예정입니다.

이 문제를 해결하려면 Perfetto 독립형 명령줄 프로파일러를 사용하여 시작 프로필을 캡처하면 됩니다.

Canary 8 설치 후 스튜디오가 시작되지 않음

Android 스튜디오를 4.2 Canary 8로 업그레이드한 후 .vmoptions 파일에서 맞춤 VM 옵션을 설정한 특정 사용자에게 IDE가 시작되지 않을 수도 있습니다. 이 문제를 해결하려면 .vmoptions에서 맞춤 옵션을 주석 처리하는 것이 좋습니다('#' 문자 사용). .vmoptions 파일은 다음 위치에서 찾을 수 있습니다.

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudioPreview4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudioPreview4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudioPreview4.2/studio64.vmoptions