Android 스튜디오 이구아나 | 2023년 2월 1일

Android 스튜디오는 Android 개발을 위한 공식 IDE로, Android 앱을 빌드하는 데 필요한 모든 것을 포함하고 있습니다.

이 페이지에는 공개 버전 채널인 Android 스튜디오 Iguana 최신 버전의 새로운 기능과 개선사항을 소개합니다. 여기에서 다운로드하거나 Help > Check for updates(macOS는 Android Studio > Check for updates)를 클릭하여 Android 스튜디오 내에서 업데이트할 수 있습니다.

이 버전의 Android 스튜디오에서 수정된 사항을 확인하려면 해결된 문제를 참고하세요.

이전 버전의 Android 스튜디오 출시 노트를 보려면 이전 출시를 참고하세요.

출시될 기능 및 개선사항의 사전 체험판은 Android 스튜디오의 미리보기 빌드를 참고하세요.

Android 스튜디오에 문제가 발생하면 알려진 문제 또는 문제 해결 페이지를 확인하세요.

Android Gradle 플러그인과 Android 스튜디오의 호환성

Android 스튜디오 빌드 시스템은 Gradle을 기반으로 하며 Android Gradle 플러그인(AGP)에는 Android 앱을 빌드하는 데 사용하는 몇 가지 추가 기능이 있습니다. 다음 표에는 각 버전의 Android 스튜디오에 필요한 AGP 버전이 나열되어 있습니다.

Android 스튜디오 버전 필요한 AGP 버전
Jellyfish | 2023.3.1 3.2~8.4
Iguana | 2023.2.1 3.2~8.3
Hedgehog | 2023.1.1 3.2-8.2
Giraffe | 2022.3.1 3.2~8.1
Flamingo | 2022.2.1 3.2~8.0
Electric Eel | 2022.1.1 3.2~7.4

이전 버전

Android 스튜디오 버전 필요한 AGP 버전
Dolphin | 2021.3.1 3.2~7.3
Chipmunk | 2021.2.1 3.2~7.2
Bumblebee | 2021.1.1 3.2~7.1
Arctic Fox | 2020.3.1 3.1~7.0

Android Gradle 플러그인의 새로운 기능에 관한 정보는 Android Gradle 플러그인 출시 노트를 참고하세요.

Android API 수준 도구 최소 버전

특정 API 수준을 지원하는 최소 버전의 Android 스튜디오와 AGP가 있습니다. 프로젝트의 targetSdk 또는 compileSdk에 필요한 버전보다 낮은 버전의 Android 스튜디오 또는 AGP를 사용하면 예기치 않은 문제가 발생할 수 있습니다. Android OS의 미리보기 버전을 타겟팅하는 프로젝트에서 작업하려면 Android 스튜디오와 AGP의 최신 미리보기 버전을 사용하는 것이 좋습니다. 안정화 버전과 함께 Android 스튜디오의 미리보기 버전을 설치할 수 있습니다.

Android 스튜디오 및 AGP의 최소 버전은 다음과 같습니다.

API 수준 Android 스튜디오 최소 버전 AGP 최소 버전
VanillaIceCream 미리보기 Jellyfish | 2023.3.1 8.4
34 Hedgehog | 2023.1.1 8.1.1
33 Flamingo | 2022.2.1 7.2

다음은 Android 스튜디오 Iguana의 새로운 기능입니다.

App Quality Insights의 버전 제어 시스템 통합

이제 앱 품질 통계를 사용하여 비정상 종료가 발생한 시점에 Crashlytics 스택 트레이스에서 관련 코드로 이동할 수 있습니다. AGP는 git 커밋 해시 데이터를 비정상 종료 보고서에 첨부하므로 Android 스튜디오가 코드로 이동하여 문제가 발생한 버전에서 어떤 상태인지 확인하는 데 도움이 됩니다. App Quality Insights에서 비정상 종료 보고서를 볼 때 현재 git Checkout의 코드 줄로 이동하거나 현재 결제와 비정상 종료를 생성한 코드베이스 버전 간의 차이를 확인할 수 있습니다.

버전 제어 시스템을 App Quality Insights와 통합하려면 다음 최소 요구사항이 필요합니다.

디버그 가능한 빌드 유형에 버전 제어 통합을 사용하려면 모듈 수준 빌드 파일에서 vcsInfo 플래그를 사용 설정합니다. 디버그할 수 없는 출시 빌드의 경우 플래그가 기본적으로 사용 설정됩니다.

Kotlin

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

Groovy

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

이제 앱을 빌드하고 Google Play에 게시하면 IDE가 스택 트레이스에서 이전 버전의 앱에 연결하는 데 필요한 데이터가 비정상 종료 보고서에 포함됩니다.

App Quality Insights에서 Crashlytics 비정상 종료 변형 보기

이제 앱 품질 통계를 사용하여 문제 변형별 이벤트 또는 유사한 스택 트레이스를 공유하는 이벤트 그룹을 확인하여 비정상 종료의 근본 원인을 분석할 수 있습니다. 비정상 종료 보고서의 각 변형에 있는 이벤트를 보려면 드롭다운에서 변형을 선택합니다. 모든 변형의 정보를 집계하려면 모두를 선택합니다.

Compose UI 확인

개발자가 Jetpack Compose에서 적응형과 접근성이 더 높은 UI를 빌드할 수 있도록 Android 스튜디오 Iguana Canary 5에서는 Compose 미리보기에 새로운 UI 검사 모드를 도입했습니다. 이 기능은 뷰의 시각적 린트 작업접근성 검사 통합과 유사하게 작동합니다. Compose UI 확인 모드를 활성화하면 Android 스튜디오는 자동으로 Compose UI를 감사하고 다양한 화면 크기에서 적응형 및 접근성 문제(예: 대형 화면에서 늘어난 텍스트 또는 낮은 색상 대비)를 확인합니다. 이 모드는 여러 미리보기 구성에서 발견된 문제를 강조 표시하고 문제 패널에 나열합니다.

Compose 미리보기에서 UI 확인 버튼 을 클릭하여 지금 이 기능을 사용해 보고 의견을 보내주세요.

Compose UI 확인 모드 버튼을 클릭하여 확인을 활성화합니다.

UI 확인 모드의 알려진 문제:

  • 문제 패널에서 선택한 문제에 포커스가 없을 수 있습니다.
  • '규칙 숨기기'가 작동하지 않음
Compose UI 확인 모드가 문제 패널에 세부정보와 함께 활성화되었습니다.

Compose 미리보기용 프로그레시브 렌더링

Android 스튜디오 Iguana Canary 3에서는 Compose 미리보기에 프로그레시브 렌더링이 도입되었습니다. 미리보기의 성능을 높이기 위한 지속적인 노력의 일환으로 이제 뷰에서 벗어나는 모든 미리보기의 경우 사용된 메모리를 절약하기 위해 의도적으로 렌더링 품질을 낮춥니다.

이 기능은 파일에서 동시에 더 많은 미리보기를 처리할 수 있도록 하여 미리보기 사용성을 더욱 개선하는 것을 목표로 개발되었습니다. 지금 사용해 보고 의견을 제출해 주세요.

IntelliJ IDEA 2023.2 플랫폼 업데이트

Android 스튜디오 Iguana에는 스튜디오 IDE 환경을 개선하는 IntelliJ IDEA 2023.2 업데이트가 포함되어 있습니다. 변경사항에 관한 자세한 내용은 IntelliJ IDEA 2023.2 출시 노트를 참고하세요.

기준 프로필 모듈 마법사

Android 스튜디오 Iguana부터 새 모듈 마법사(File > New > New Module)에서 기준 프로필 생성기 템플릿을 사용하여 앱의 기준 프로필을 생성할 수 있습니다.

이 템플릿은 기준 프로필을 지원할 수 있도록 프로젝트를 설정합니다. 새로운 기준 프로필 Gradle 플러그인을 사용하여 하나의 Gradle 작업으로 필요한 방식으로 프로젝트를 설정하는 프로세스를 자동화합니다.

이 템플릿은 Select Run/Debug Configuration 드롭다운 목록에서 클릭 한 번으로 기준 프로필을 생성할 수 있는 실행 구성도 만듭니다.

Espresso Device API를 사용하여 구성 변경에 대해 테스트

기기에 일반적인 구성 변경(예: 회전 및 화면 펼치기)이 발생할 때 Espresso Device API를 사용하여 앱을 테스트합니다. Espresso Device API를 사용하면 가상 기기에서 이러한 구성 변경을 시뮬레이션하고 테스트를 동기식으로 실행할 수 있으므로 한 번에 하나의 UI 작업 또는 어설션만 발생하므로 테스트 결과의 신뢰도가 향상됩니다. Espresso를 사용하여 UI 테스트를 작성하는 방법을 자세히 알아보세요.

Espresso Device API를 사용하려면 다음이 필요합니다.

  • Android 스튜디오 Iguana 이상
  • Android Gradle 플러그인 8.3 이상
  • Android Emulator 33.1.10 이상
  • API 수준 24 이상을 실행하는 Android 가상 기기

Espresso Device API를 위한 프로젝트 설정

Espresso Device API를 지원하도록 프로젝트를 설정하려면 다음 단계를 따르세요.

  1. 테스트가 명령어를 테스트 기기로 전달하도록 하려면 androidTest 소스 세트의 매니페스트 파일에 INTERNETACCESS_NETWORK_STATE 권한을 추가합니다.

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. gradle.properties 파일에서 enableEmulatorControl 실험용 플래그를 사용 설정합니다.

      android.experimental.androidTest.enableEmulatorControl=true
  3. 모듈 수준 빌드 스크립트에서 emulatorControl 옵션을 사용 설정합니다.

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. 모듈 수준의 빌드 스크립트에서 Espresso Device 라이브러리를 프로젝트로 가져옵니다.

    Kotlin

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")
      }

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.5.1'
      }

일반적인 구성 변경에 대한 테스트

Espresso Device API에는 기기 구성 변경을 시뮬레이션하는 데 사용할 수 있는 여러 화면 방향과 폴더블 상태가 있습니다.

화면 회전 테스트

다음은 기기 화면이 회전할 때 앱이 어떻게 되는지 테스트하는 방법의 예입니다.

  1. 먼저 일관된 시작 상태를 위해 기기를 세로 모드로 설정합니다.

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. 테스트 실행 중에 기기를 가로 방향으로 설정하는 테스트를 만듭니다.

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. 화면이 회전되면 UI가 예상대로 새 레이아웃에 맞게 조정되는지 확인합니다.

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }

화면 펼침 테스트

다음은 앱이 폴더블 기기에 있고 화면이 펼쳐질 때 앱이 어떻게 되는지 테스트하는 방법의 예입니다.

  1. 먼저 onDevice().setClosedMode()를 호출하여 접힌 상태의 기기를 테스트합니다. 앱의 레이아웃이 좁은 화면 너비에 맞게 조정되는지 확인합니다.

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. 완전히 펼쳐진 상태로 전환하려면 onDevice().setFlatMode()를 호출합니다. 앱의 레이아웃이 확장 크기 클래스에 맞게 조정되는지 확인합니다.

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }

테스트에 필요한 기기 지정

폴더블이 아닌 기기에서 접기 작업을 실행하는 테스트를 실행하는 경우 테스트는 일반적으로 실패합니다. 실행 중인 기기와 관련된 테스트만 실행하려면 @RequiresDeviceMode 주석을 사용하세요. 테스트 실행기는 테스트 중인 구성을 지원하지 않는 기기에서 실행 중인 테스트를 자동으로 건너뜁니다. 기기 요구사항 규칙을 각 테스트 또는 전체 테스트 클래스에 추가할 수 있습니다.

예를 들어 평평한 구성으로 펼치기를 지원하는 기기에서만 테스트를 실행하도록 지정하려면 다음 @RequiresDeviceMode 코드를 테스트에 추가합니다.

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}