이전 버전의 Android 스튜디오

이 페이지에는 Android 스튜디오의 이전 주요 버전별 새로운 기능과 개선사항이 표시되어 있습니다. 최신 버전의 새로운 기능을 확인하려면 현재 Android 스튜디오 출시 노트를 참고하세요.

각 미리보기 출시의 주목할 만한 수정사항 목록을 비롯한 최신 출시 소식은 버전 업데이트를 참고하세요. Android Gradle 플러그인의 새로운 기능에 관한 정보는 출시 노트를 참고하세요.

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

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

Android 스튜디오 버전 필요한 플러그인 버전
Flamingo | 2022.2.1 3.2~8.0
Electric Eel | 2022.1.1 3.2~7.4
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 스튜디오 Chipmunk | 2021.2.1

Jetpack Compose를 사용한 앱 만들기 지원

animatedVisibility를 지원하는 애니메이션 미리보기

Android 스튜디오 Chipmunk는 애니메이션 미리보기에서 animatedVisibility API를 지원합니다. animatedVisibility로 애니메이션 미리보기를 사용하려면 Compose 버전 1.1.0 이상을 사용하세요. 애니메이션 미리보기에 관한 자세한 내용은 애니메이션을 참고하세요.

라이브러리 모듈에서 미리보기 배포 지원

미리보기를 사용하면 실제 기기에서 앱을 실행하지 않고도 Android 스튜디오 내에서 UI를 볼 수 있습니다. Android 스튜디오 Chipmunk에서는 특정 @Preview를 라이브러리 모듈에서 에뮬레이터 또는 실제 기기에 배포할 수 있습니다. 자세한 내용은 미리보기 배포를 참고하세요.

앱 프로파일링 지원

Android 12 이상에서 버벅거림 감지

Android 12 이상을 사용하는 기기의 경우 캡처된 트레이스는 CPU 프로파일러의 Display 창 아래 Janky frames 트랙에 표시됩니다.

버벅거림을 감지하려면 다음 안내를 따르세요.

  1. 개발 에뮬레이터 또는 기기에서 앱을 시작합니다.
  2. Android 스튜디오에서 View > Tool Windows > Profiler를 선택하거나 툴바에서 Profile 을 클릭합니다.

    Select Deployment Target 대화상자에 메시지가 표시되면 프로파일링을 위해 앱을 배포할 기기를 선택합니다. USB를 통해 기기를 연결했는데 목록에 표시되지 않으면 USB 디버깅을 사용 설정했는지 확인하세요.

  3. CPU 타임라인의 아무 곳이나 클릭하여 CPU 프로파일러를 엽니다.

  4. Display 아래에 Janky frames 트랙이 표시됩니다. 기본적으로 프로파일러는 버벅거리는 프레임을 조사 대상 후보로만 표시합니다. 버벅거리는 각 프레임 내에서 빨간색 부분은 프레임이 렌더링 기한을 초과하는 시간을 강조표시한 것입니다. Janky frames 트랙 스크린샷

  5. 버벅거리는 프레임을 찾으면 클릭합니다. 원하는 경우 M을 눌러 선택한 프레임에 초점을 맞추도록 확대/축소를 조정할 수 있습니다. 관련 이벤트는 기본 스레드인 RenderThreadGPU completion에서 강조표시됩니다. Janky frames와 기본 스레드를 보여주는 프로파일러의 스크린샷

  6. 체크박스 All FramesLifecycle을 각각 전환하여 모든 프레임 또는 렌더링 시간의 세부정보를 선택적으로 확인할 수 있습니다. 위와 같지만 All Frames와 Lifecycle 체크박스가 선택된 프로파일러의 스크린샷

자세한 내용은 UI 버벅거림 감지를 참고하세요.

패치 출시

다음은 Android 스튜디오 Chipmunk의 패치 출시 목록입니다.

Android 스튜디오 Chipmunk | 2021.2.1 패치 2(2022년 8월)

이번 소규모 업데이트는 다음과 같은 업데이트 및 버그 수정을 포함합니다.

Android 플랫폼 지원

Android 스튜디오 Chipmunk 패치 2와 Android Gradle 7.2.2에서는 compileSdk=33을 설정하여 Android 13 API에 대해 컴파일할 수 있습니다. 지원되는 가장 높은 최소 SDK 버전은 32입니다. minSdk = 33은 Android Gradle 플러그인 7.3.0-beta05까지 지원되지 않습니다.

해결된 문제
C++ 디버거
종속 프로젝트의 네이티브 라이브러리 출시 버전은 디버그 빌드 변형용으로도 패키징됨
디자인 도구
Ctrl+D 또는 'diff 표시' 버튼이 git diff를 표시하지 않음
Dexer(D8)
디슈가링된 각 라이브러리 버전에 필요한 컴파일러 버전 문서화
Gradle
가져오기 별칭과 관련된 린트 UnusedResources 거짓양성
가져오기/동기화
새 버전에서 여러 제품 버전 관련 빌드 문제
축소기(R8)
IntSwitch의 ArrayIndexOutOfBoundsException
R8 3.1.7-dev 이상에서 Enum을 부적절하게 최적화하여 NoSuchFieldError가 발생함
R8로 인해 Scala 라이브러리에서 VerifyError 발생
Gradle 7.2.0으로 인해 APK 빌드 오류 com.android.tools.r8.CompilationFailedException 발생
R8 버전 3.2.60 축소기의 NPE
[R8 3.3.57] 인터페이스가 더 높은 SDK 요구사항이 있는 추상 클래스로 대체되어 NoClassDefFound가 발생함
3.3.35를 사용하는 FieldAssignmentTracker에서 NullPointerException 발생

Android 스튜디오 Chipmunk | 2021.2.1 패치 1(2022년 5월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

해결된 문제
Dexer(D8)
버전 8 이전의 Art/Dalvik VM이 JDK-8272564의 수정사항을 지원하지 않음
IntelliJ
Ubuntu 20.04에서 파일 감시자를 시작할 수 없음
MBP 15" 2018 터치 바 메뉴가 누락됨
실행
앱 모듈을 사용할 수 있어도 기기 옵션이 표시되지 않고 앱을 실행할 수 없음
축소기(R8)
R8은 기본 인터페이스 메서드를 백포팅하지 않지만, D8은 백포팅하는 이유는 무엇인가요?
CIRCULAR REFERENCE: com.android.tools.r8.internal.R10: 원시 유형 OBJECT로 예기치 못한 유형 변환이 발생함

Android 스튜디오 Bumblebee | 2021.1.1

Android 스튜디오 Bumblebee는 다음 기능과 개선사항이 포함된 주요 버전입니다.

Compose 대화형 미리보기가 기본적으로 사용 설정

Android 스튜디오 Bumblebee부터 대화형 미리보기 기능이 기본적으로 사용 설정됩니다. 대화형 미리보기를 사용하면 기기에서 작동하는 것과 같은 방식으로 미리보기와 상호작용할 수 있습니다. 대화형 미리보기는 다른 미리보기와 분리되어 샌드박스 환경에서 실행되므로 미리보기에서 요소를 클릭하거나 사용자 입력을 제공할 수 있습니다. 이 모드를 사용하면 컴포저블의 여러 상태 및 동작(예: 체크박스 선택 또는 선택 해제 등)을 빠르게 테스트할 수 있습니다.

미리보기 대화형 모드는 에뮬레이터를 실행하지 않고 Android 스튜디오 내에서 직접 실행되며 따라서 일부 제한사항이 초래됩니다.

  • 네트워크에 액세스할 수 없음
  • 파일에 액세스할 수 없음
  • 일부 Context API를 완전히 사용하지 못할 수도 있음

Android 스튜디오 내에서 사용자의 미리보기 상호작용

애니메이션 벡터 드로어블(AVD) 미리보기

애니메이션 벡터 드로어블 도구는 애니메이션 드로어블 리소스를 미리 볼 수 있는 기능을 제공합니다. 이 도구를 사용하면 Android 스튜디오에서 <animation-list>, <animated-vector>, <animated-selector> 리소스를 미리 보고 더 쉽게 맞춤 애니메이션을 미세 조정할 수 있습니다.

Android 스튜디오 내에서 사용자의 애니메이션 미리보기 및 재생

디자인 도구의 기기 선택 도구 업데이트

다양한 Android 기기에 맞게 간단히 앱을 디자인할 수 있도록 Layout Editor 및 Layout Validation과 같은 다양한 디자인 도구 창에서 기기 선택 도구를 업데이트했습니다. 이제 기기 선택 도구에서 각 기기 폼 팩터의 인기 있는 크기를 반영하는 참조 기기를 사용할 수 있습니다. 다시 말해, 스마트폰, 태블릿, Wear 기기부터 Android TV에 이르기까지 실제로 많이 사용되는 기기의 대표적인 화면 크기에서 레이아웃을 미리 보거나 검증하거나 수정할 수 있습니다.

기기 및 기기의 크기와 밀도를 포함하여 클래스별로 그룹화한 기기 선택 도구

KMP 테스트 실행

Android 스튜디오 Bumblebee에서 Kotlin 멀티플랫폼(KMP) 프로젝트의 테스트를 실행할 수 있습니다.

Android 스튜디오에서 테스트를 성공적으로 실행하려면 아래의 모든 요구사항을 충족해야 합니다.

  • AGP 7.0.0-alpha08 이상
  • Gradle 6.8.2 이상
  • Kotlin 플러그인 1.4.30 이상

기본적으로 비전환 R 클래스 사용

이제 비전환 R 클래스가 기본적으로 사용 설정됩니다. Android Gradle 플러그인과 함께 비전환 R 클래스를 사용하여 여러 모듈이 있는 애플리케이션을 위한 더 빠른 빌드를 구현할 수 있습니다. 이렇게 하면 종속 항목에서 참조를 가져오지 않고 각 모듈의 R 클래스에 자체 리소스 참조만 포함되도록 하여 리소스 중복을 방지할 수 있습니다. 그러면 최신 빌드와 그에 따른 컴파일 방지의 이점이 더 향상됩니다.

이 기능 사용과 관련된 도움말을 보려면 Refactor > Migrate to Non-Transitive R Classes...로 이동하세요.

Apple Silicon 지원 업데이트

Apple Silicon(arm64) 하드웨어에서 macOS를 사용하는 사용자를 위해 Android 스튜디오 Arctic Fox와 Android Emulator는 지난해부터 이 새로운 아키텍처를 지원했습니다. 하지만 이번 출시에서는 Android SDK 플랫폼 도구 v32.0.0(adb 및 fastboot 포함) 및 빌드 도구 v32.1.0(aapt 포함)을 범용 바이너리로 업데이트하여 이제 Android 개발자 도구에서 Rosetta 바이너리 변환기를 실행할 필요가 없습니다. SDK 플랫폼 도구 출시 노트를 참고하세요.

Layout Inspector의 새로운 기능

레이아웃 계층 구조 스냅샷 캡처

이제 Layout Inspector를 사용하면 실행 중인 앱의 레이아웃 계층 구조의 스냅샷을 저장할 수 있으므로 스냅샷을 나중에 다른 사람과 손쉽게 공유하거나 참조할 수 있습니다.

스냅샷은 Layout Inspector를 사용할 때 일반적으로 표시되는 데이터(레이아웃의 세부 3D 렌더링을 비롯해 View 레이아웃, Compose 레이아웃 또는 하이브리드 레이아웃의 구성요소 트리 및 각 UI 구성요소의 세부 속성 포함)를 캡처합니다. 스냅샷을 저장하려면 다음을 실행합니다.

  1. API 수준 23 이상을 실행하는 기기에 앱을 배포합니다.
  2. View > Tool Windows > Layout Inspector를 선택하여 Layout Inspector를 엽니다.
  3. Layout Inspector가 앱 프로세스에 자동으로 연결됩니다. 자동으로 연결되지 않으면 드롭다운 메뉴에서 앱 프로세스를 선택합니다.
  4. 스냅샷을 캡처하려면 Layout Inspector 툴바에서 Export snapshot 내보내기 아이콘을 클릭합니다.
  5. 표시되는 시스템 대화상자에서 스냅샷을 저장할 이름과 위치를 지정합니다. *.li 확장자로 파일을 저장해야 합니다.

그러면 기본 메뉴 바에서 File > Open을 선택하고 *.li 파일을 열어 Layout Inspector 스냅샷을 로드할 수 있습니다.

Sunflower 샘플 앱의 Layout Inspector 스냅샷

Compose 시맨틱 검사 지원

Compose의 시맨틱접근성 서비스와 테스트 프레임워크에서 이해할 수 있는 대체 방식으로 UI를 설명합니다. 이제 Android 스튜디오 Bumblebee에서 Layout Inspector를 사용하여 Compose 레이아웃의 시맨틱 정보를 검사할 수 있습니다.

Layout Inspector를 통해 표시된 시맨틱 정보

Compose 노드를 선택할 때 Attributes 창을 사용하면 Compose 노드가 시맨틱 정보를 직접 선언하는지 아니면 하위 요소에서 시맨틱을 병합하는지 또는 둘 다 실행하는지 확인할 수 있습니다. 선언되었거나 병합된 시맨틱을 포함하는 노드를 빠르게 식별하려면 Component Tree 창에서 View options 드롭다운을 선택하고 Highlight Semantics Layers를 선택합니다. 그러면 트리에서 시맨틱이 포함된 노드만 강조표시됩니다. 키보드를 사용하여 노드 간에 빠르게 이동할 수 있습니다.

활동 다시 시작 방지

이전 버전의 Android 스튜디오에서 실행 중인 앱에 Layout Inspector를 연결하면 앱의 활동이 다시 시작됩니다. 이 기능은 앱 레이아웃 검사를 사용하는 기기 플래그를 설정하는 데 필요합니다.

Android 스튜디오 Bumblebee에서는 다음 단계 중 하나를 사용해 이 플래그를 미리 설정하여 Layout Inspector에 연결할 때 활동이 다시 시작되지 않도록 할 수 있습니다.

  • 실행 구성 옵션 사용 설정

    1. 기본 메뉴 바에서 Run > Edit Configurations를 선택합니다. Run/Debug Configurations 대화상자가 나타납니다.
    2. 사용하려는 실행 구성으로 이동합니다.
    3. Layout Inspector options 섹션에서 Connect to Layout Inspector without restarting activity 옆의 체크박스를 선택합니다.
    4. 다음에 Layout Inspector를 사용하여 앱을 검사하려고 할 때 실행 구성을 사용합니다.
  • 명령줄에서 플래그 설정:

    1. 기기에 연결된 컴퓨터에서 터미널 창을 엽니다.
    2. 다음 명령어를 사용하여 앱의 기기 플래그를 설정합니다.
    adb shell settings put global debug_view_attributes_application_package <my_package_name>
    
    1. 기기에 앱을 배포하고 Layout Inspector를 연결합니다. Android 스튜디오는 플래그가 설정되었는지 확인하고 가능한 경우 활동이 다시 시작되는 것을 방지합니다.

Layout Inspector 스냅샷 기록

이제 앱 레이아웃 계층 구조의 스냅샷을 캡처하여 저장, 공유하거나 나중에 검사할 수 있습니다. 스냅샷은 Layout Inspector를 사용할 때 일반적으로 표시되는 데이터(레이아웃의 세부 3D 렌더링을 비롯해 View 레이아웃, Compose 레이아웃 또는 하이브리드 레이아웃의 구성요소 트리 및 각 UI 구성요소의 세부 속성 포함)를 캡처합니다. 실시간 실행 중인 앱의 레이아웃을 검사할 때 Layout Inspector 툴바에서 Export snapshot 내보내기 아이콘을 클릭하고 *.li 확장자를 사용해 스냅샷을 저장합니다. 그러면 기본 메뉴 바에서 File > Open을 선택하고 *.li 파일을 열어 Layout Inspector 스냅샷을 로드할 수 있습니다. 편집기 창의 탭에 스냅샷이 표시되므로 실행 중인 앱과 쉽게 비교할 수 있습니다.

앱 검사의 새로운 기능

Android 스튜디오 Bumblebee는 App Inspection 창에서 새로운 도구와 기능을 제공합니다. 기본 메뉴 바에서 View > Tool Windows > App Inspection을 선택하여 App Inspector를 엽니다.

Network Inspector

Profilers 도구 창의 네트워크 프로파일러가 이제 App Inspection 도구 창으로 이동했습니다. 이전에 네트워크 프로파일러를 사용한 적이 있다면 동일한 모든 기능과 네트워크 트래픽 리치 데이터를 여전히 사용할 수 있습니다. API 수준 26 이상을 실행하는 기기에 앱을 배포하고 App Inspector > Network Inspector 탭을 열기만 하면 됩니다.

작업, 알람, Wakelock 검사

이제 기존의 작업자 검사 지원 외에도 Background Task Inspector를 사용하여 앱의 작업, 알람, Wakelock을 검사할 수 있습니다. 이제 각 유형의 비동기 작업이 검사기 탭에서 관련 제목 아래에 표시되므로 작업의 상태와 진행 상황을 쉽게 모니터링할 수 있습니다. 작업자와 마찬가지로 작업, 알람, Wakelock을 선택하여 Task Details 패널에서 자세한 정보를 검사할 수 있습니다.

작업, 알람, Wakelock을 보여주는 Background Task Inspector

작업자는 내부적으로 작업 및 Wakelock을 사용하므로 작업자에서 예약된 이러한 작업은 각 작업자의 하위 요소로 표시됩니다. 그래프 모드에서는 작업자만 볼 수 있습니다.

무선 디버깅

Android 스튜디오 Bumblebee는 Android 11 이상 기기에서 무선 디버깅 기능을 지원합니다. USB 케이블을 사용하거나 명령줄로 Android 디버그 브리지(adb) 연결을 관리하지 않고 Wi-Fi를 통해 Android 스튜디오에서 앱을 페어링하고 배포합니다. 사용하려면 기기 선택 메뉴에서 Pair devices using Wi-Fi 옵션으로 이동한 다음 QR 코드나 페어링 PIN 코드를 선택합니다. 그런 다음 Android 11 이상 기기의 개발자 옵션에서 무선 디버깅 화면을 찾아 Android를 사용하여 무선으로 초기화하고 adb 세션에 연결합니다. 무선 디버깅 설정에 관해서는 Wi-Fi를 통해 기기에 연결(Android 11 이상)에서 자세히 알아보세요.

Wi-Fi를 통한 기기 페어링

통합 Gradle 테스트 실행기

Android Gradle 플러그인 7.1.0 및 Android 스튜디오 Bumblebee 이상은 Gradle의 자체 Android 계측 테스트 실행기 구현을 사용하여 계측 테스트를 실행합니다. 하나의 테스트 실행기를 사용하면 명령줄에서 AGP를 사용하여 실행할 때나(예: 지속적 통합 서버에서 실행) Android 스튜디오에서 실행할 때 동일한 결과를 얻을 수 있습니다.

Bumblebee의 통합 Gradle 테스트 실행기

이전 버전의 Android 스튜디오는 Gradle의 Android 계측 테스트 실행기가 아닌 IntelliJ Android 계측 테스트 실행기를 사용합니다. 따라서 최신 버전의 Android 스튜디오를 사용하지 않는다면 테스트를 Android 스튜디오에서 실행하는지 아니면 Gradle 플러그인을 사용하여 명령줄에서 실행하는지에 따라 다른 테스트 결과가 표시될 수 있습니다. 예를 들어, 하나의 실행기에서는 테스트가 통과하고 다른 실행기에서는 테스트가 실패할 수 있습니다.

이전 버전의 Android 스튜디오의 이산 테스트 실행기

프로젝트에 저장해 둔 계측 테스트 구성이 있다면 이 구성은 Gradle을 사용하여 연결된 기기에서 테스트를 실행합니다. 아래와 같이 테스트 클래스 또는 메서드 옆의 거터 작업을 사용하여 새 계측 테스트 구성을 만들 수 있습니다.

거터 작업에서 테스트 실행하기

계측 테스트를 실행할 때 Gradle 작업 출력의 Test Matrix에서 테스트 출력을 조사하여 Android 스튜디오에서 Gradle 테스트 실행기를 사용 중인지 확인할 수 있습니다. Google에서는 Android 스튜디오가 출시될 때마다 이 기능을 개선하고 있지만 몇 가지 알려진 문제가 있습니다. 문제가 발생하면 버그를 신고하세요. 새 테스트 파이프라인을 사용 중지하여 이전 동작으로 되돌릴 수도 있습니다.

Android Emulator는 이제 기본적으로 Android 스튜디오 내에서 직접 실행됨

Android Emulator는 기본적으로 Android 스튜디오 내에서 직접 실행됩니다. 따라서 화면 공간을 보존하고, 핫키를 사용하여 에뮬레이터와 편집기 창 간에 빠르게 이동하고, 단일 애플리케이션 창에서 IDE 및 에뮬레이터 워크플로를 구성할 수 있습니다.

Android 스튜디오의 도구 창에서 실행되는 에뮬레이터

에뮬레이터가 실행 중이면 일반적인 에뮬레이터 작업(예: 회전) 및 확장된 컨트롤 옵션(예: 이동 경로 재생)을 이용할 수 있습니다. 에뮬레이터를 별도의 창에서 실행하려면 File > Settings > Tools > Emulator(macOS는 Android Studio > Preferences > Tools > Emulator)로 이동하여 Launch in a tool window를 선택 해제합니다.

새 테스트 파이프라인 사용 중지

기본적으로 Android 스튜디오 Bumblebee는 Gradle로 계측 테스트를 실행합니다. 문제가 발생할 경우 다음 단계에 따라 이 동작을 사용 중지할 수 있습니다.

  1. File > Settings > Build, Execution, Deployment > Testing(MacOS에서는 Android Studio > Preferences > Build, Execution, Deployment > Testing)을 선택합니다.
  2. Run Android instrumented tests using Gradle 옆의 체크박스를 선택 해제하고 OK를 클릭합니다.

다음 중 한 가지 방법을 사용하여 이전 동작으로 되돌릴 수도 있습니다.

  • 명령줄에서 Gradle 작업을 실행하는 경우 다음 명령줄 매개변수를 사용합니다. -Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
  • 프로젝트의 gradle.properties 파일에 다음 매개변수를 추가합니다. android.experimental.androidTest.useUnifiedTestPlatform=false

문제를 해결하는 데 도움이 필요하면 버그를 신고하세요.

새로운 기기 관리도구

'pair device' 메뉴 옵션이 강조표시된 새 기기 관리도구 창

기기 관리도구는 AVD Manager를 대체하는 도구로, Android 스튜디오의 시작 화면에서 사용하거나 프로젝트를 연 후에 사용할 수 있습니다. 모든 로컬 테스트 기기를 더 쉽게 만들고 관리할 수 있도록 기기 관리도구에 다음과 같은 새 기능을 도입합니다.

  • 더 유연한 UI를 통해 다른 Android 스튜디오 도구 창과 마찬가지로 IDE 창, 플로팅 창, 별도의 창에 고정할 수 있게 지원합니다. 이렇게 하면 IDE의 다른 창을 가리지 않고 더 쉽게 기기에 액세스할 수 있습니다.
  • Virtual 탭에서 가상 기기를 생성, 관리, 배포하거나, 각 기기의 세부정보를 확인하거나, Device File Explorer에서 클릭 한 번으로 기기를 빠르게 검사할 수 있습니다.
  • Physical 탭에서 ADB Wi-Fi를 사용하여 빠르게 새 기기를 페어링하고 각 실제 기기의 세부정보를 한눈에 확인할 수 있습니다. 버튼 클릭으로 Device File Explorer를 사용하여 각 기기의 파일 시스템을 빠르게 검사할 수도 있습니다.

기기 관리도구를 열려면 다음 중 하나를 실행하세요.

  • Android 스튜디오 시작 화면에서 More Actions > Virtual Device Manager를 선택합니다.
  • 프로젝트를 연 후에 기본 메뉴 바에서 View > Tool Windows > Device Manager를 선택합니다.

UI 버벅거림 감지

Android 11(API 수준 30) 이상을 실행하는 기기를 사용하여 앱을 프로파일링할 때 이제 CPU 프로파일러에서는 Frame Lifecycle에서 각 프레임의 단계를 보여주는 새로운 트랙 그룹(Application, Wait for GPU, Composition, Frames on display)을 표시합니다. 각 트랙은 프레임 번호가 프레임 라벨로 지정되고 직사각형에는 색상 코드가 지정되므로 특정 프레임이 수명 주기에서 어디에 위치하는지 간편하게 시각화할 수 있으며, Vsync 이벤트와 비교하기 위해 전환할 수 있는 가이드도 제공합니다. 이 데이터를 사용하여 앱에서 버벅거림이 발생할 수 있는 위치를 파악하고 근본 원인을 조사할 수 있습니다. 이제 Analysis 패널에 모든 프레임의 렌더링 정보를 편리하게 요약하여 보여주는 Frames 탭이 표시됩니다. 자세한 내용은 UI 버벅거림 감지를 참고하세요.

프로파일링 가능한 앱 프로파일링 지원

앱을 프로파일링할 때는 사용자가 설치할 버전과 가장 유사한 앱 버전으로 정확한 데이터를 생성하는 것이 중요합니다. 이를 위해 이제 다음 코드에서와 같이 앱의 매니페스트에 <profileable> 속성을 포함해 디버그할 수 없는 앱을 프로파일링할 수 있습니다.

<profileable android:shell="true"/>

profileable은 Android 10에서 도입된 매니페스트 구성으로, CPU 및 메모리 프로파일링 작업에 사용할 수 있습니다. debuggable 플래그 대신 profileable 플래그를 사용하면 성능 측정 시 오버헤드가 낮아진다는 주요 장점이 있습니다. 그러나 이벤트 타임라인 또는 API에서 시작된 CPU 프로파일링, 힙 덤프, 실시간 위치 기록과 같은 프로파일링 가능 빌드에서는 특정 프로파일링 기능을 사용할 수 없습니다. 자세한 내용은 프로파일링 가능한 애플리케이션을 참고하세요.

호출 스택 프레임 축소

이제 Profilers 도구 창에서 Callstack Sample Recording을 검사할 때 조사와 관련 없는 프레임을 축소할 수 있습니다. 호출 스택은 코드의 어느 부분이 실행되었고 호출된 이유가 무엇인지 파악할 때 유용합니다. 하지만 자바/Kotlin 프로그램의 호출 스택에는 일반적으로 자바/Kotlin 코드뿐만 아니라 주의를 산만하게 만들 수 있는 네이티브 코드의 프레임도 포함됩니다. 호출 스택 뷰 세분화에 관한 자세한 내용은 호출 스택 프레임 검사를 참고하세요.

패치 출시

다음은 Android 스튜디오 Bumblebee 패치 출시 목록입니다.

Android 스튜디오 Bumblebee | 2021.1.1 패치 3(2022년 4월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • Android Gradle 플러그인
    • R8에서 보고된 중복 클래스 문제
  • 빌드 변형
    • 변형의 버전 이름이 새 onVariants API를 통해 설정된 경우 versionNameSuffix가 더 이상 작동하지 않음
  • Compose 미리보기
    • 성능 및 안정성 관련 버그 수정
    • 리터럴 실시간 편집 기능을 사용할 때 가끔 발생하는 정지 해결
  • Network Inspector
    • Bumblebee 업데이트 후 새 Network Inspector가 비정상 종료됨
    • 최신 버전의 Android 스튜디오에서 디버거를 연결하면 이 오류가 계속 발생함
    • TrackedHttpURLConnection.getHeaderFieldNullPointerException과 충돌함
자세한 내용은 Android 스튜디오 Bumblebee 패치 3 블로그 게시물을 참고하세요.

Android 스튜디오 Bumblebee | 2021.1.1 패치 2(2022년 2월)

이번 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • C++ 빌드
    • ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "")이 null이면 안 됨
  • 코드 편집기
    • Android 스튜디오 라이브 템플릿의 버그: className() 표현식이 클래스 이름을 확인하지 않음
  • D8/R8
    • java.lang.NoSuchMethodError: 정적 메서드 $jacocoInit이 없음
    • Mockito 오류로 인해 Android 테스트 범위가 손상됨
    • API 31의 손상된 CAS 구현에 관한 해결 방법 필요
    • 봉인 클래스가 지원되지 않음
    • Chrome에서 수평 클래스 병합을 사용 설정할 때 NullPointerException 발생
    • 가상 메서드 병합 후 AbstractMethodError 발생
    • 잘못된 init 클래스 출력 유형으로 인해 스택 프레임 확인에 실패함
    • Dex 입력이 정의되지 않은 레지스터를 사용함
    • 출시 브랜치에서 StringBuilderOptimizerAnalysisTest가 실패함
    • R8의 비결정성
  • 배포
    • '기존 프로세스를 종료할 수 없음'이라는 오류 메시지와 함께 기기 소유자 애플리케이션의 프로젝트 실행이 실패함
  • 디자인 도구
    • 비전환 R 클래스가 사용 설정되면 Compose 미리보기가 다른 모듈의 리소스를 찾지 못함
    • 스튜디오가 빌드 시 정지됨
  • 삽입된 에뮬레이터
    • 기타 성능 및 안정성 개선
  • 가져오기/동기화
    • Bumblebee 시작 시 IDE 오류 발생: IdeBuildTasksAndOutputInformationImp의 출력 유형 APK에 출력 목록 빌드 파일을 사용할 수 없음
  • IntelliJ
    • Mac OS X Monterey Dock에서 시작할 때 환경 변수가 제공되지 않음
  • Jetpack (androidx) > Navigation
    • 안정적인 최신 AGP에서 빌드되도록 SafeArgs 업그레이드
  • 도구 창
    • Android 기기 관리자를 실행할 수 없음
    • BumbleBee의 Network Inspector가 읽을 수 있는 형식으로 API 응답을 표시하지 않음
자세한 내용은 Android 스튜디오 Bumblebee 패치 2 블로그 게시물을 참고하세요.

Android 스튜디오 Bumblebee | 2021.1.1 패치 1(2022년 2월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • 에뮬레이터
    • Bumblebee로 업그레이드한 후 삽입된 에뮬레이터에 연결할 수 없음(Mac M1)
  • IntelliJ
    • Mac OS X Monterey Dock에서 시작할 때 환경 변수가 제공되지 않음

자세한 내용은 Android 스튜디오 Bumblebee 패치 1 블로그 게시물을 참고하세요.

Android 스튜디오 Arctic Fox | 2020.3.1

Android 스튜디오 Arctic Fox는 다음 기능과 개선사항이 포함된 주요 버전입니다.

Android 스튜디오 Arctic Fox | 2020.3.1 패치 4(2021년 12월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • Android Gradle 플러그인
    • VariantOutput.verisonProvider 설정 작업이 구성 캐시로 인해 중단될 수 있습니다.
    • 출시 서명 시 gradeResValues.xml이 업데이트되지 않습니다.
  • D8/R8
    • R8로 축소된 빌드의 클래스 생성자에서 java.lang.ClassCastException이 발생합니다.
    • dex 병합 중에 연결할 수 없는 유형 조정이 발생합니다.
    • java.lang.VerifyError: Reference.java.lang.Object 유형의 객체에서 인스턴스 필드에 액세스할 수 없어 인증 도구에서 인증이 되지 않습니다.
  • 린트
    • MediaCapabilities 린트 검사를 중지합니다.
    • shrinkResources가 사용 설정되면 린트에서 거짓양성 [인스턴트화 가능] 오류를 보고합니다.
  • 템플릿
    • Import Module 옵션이 비활성화됨

자세한 내용은 2020.3.1 패치 4 블로그 게시물을 참고하세요.

Android 스튜디오 Arctic Fox | 2020.3.1 패치 3(2021년 10월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • Android Gradle 플러그인
    • 린트 독립형 플러그인이 gradleApi() 종속 항목을 제대로 처리하지 않습니다.
    • Gradle 빌드가 스튜디오 외부에서 실행되는 동안 JPS 빌드가 트리거됩니다.
    • 소스를 생성하는 프로세서를 포함하는 KSP와 Kapt를 프로젝트에서 모두 사용 설정하면 BundleLibraryClassesInputs가 중단됩니다.
  • C++ 편집기
    • 백그라운드에서 실행되는 JniReferencesSearch 계산에 소요되는 시간이 길면 UI가 정지됩니다.
  • Database Inspector
    • 데이터베이스 저장을 허용합니다.
    • 경로에 공백이 있는 App Inspection/Database Inspector를 사용하여 데이터를 내보낼 수 없습니다.
  • Dexer(D8)
    • 서브클래스를 서브클래스로 분류할 때 자바 람다로 인해 예상치 못한 동작이 발생합니다.
  • 축소기(R8)
    • r8 압축 중 Cannot constrain type 오류가 발생합니다.
    • R8 3.0.69(AGP 7.0.2) 및 3.0.72 실행 중 문제가 발생합니다.

자세한 내용은 2020.3.1 패치 3 블로그 게시물을 참고하세요.

Android 스튜디오 Arctic Fox | 2020.3.1 패치 2(2021년 9월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

  • Android Gradle 플러그인
    • AS Arctic Fox Canary 7에서 Canary 8로 업그레이드 시 Gradle 동기화가 10회 실행됨
    • 디슈가링 및 재현 가능한 빌드
  • C++ 빌드
    • tasks.whenTaskAdded 클로저를 사용하는 경우 Android Gradle 플러그인 7.0.0은 APK에 jniLibs를 포함하지 않습니다.
  • 수정
    • MergedManifestRefreshListener가 Arctic Fox에서 무한 루프에 빠집니다.
  • 린트
    • '린트 검사를 위한 린트 검사'가 실행되지 않습니다.
  • 축소기(R8)
    • AGP7에서 R8로 빌드를 실행할 때 ClassNotFoundException이 발생합니다.

자세한 내용은 2020.3.1 패치 2 블로그 게시물을 참고하세요.

Android 스튜디오 Arctic Fox | 2020.3.1 패치 1(2021년 8월)

이 업데이트에는 다음과 같은 문제의 수정사항이 포함되어 있습니다.

  • Android Gradle 플러그인
    • TypedefRemover가 ASM5를 사용하고 ASM7이 필요한 JDK 11 소스와 호환되지 않습니다.
    • 일부 새로운 DSL 블록은 AGP 7.0.0의 Groovy DSL에서 사용할 수 없습니다.
    • AGP 7.0.0 안정화 버전에서 libraryVariants.all{applicationId}에 ExternalApiUsageException이 발생합니다.
  • C++ 디버거
    • Mac M1에서 네이티브 디버그 세션을 시작하는 동안 '손상된 LLDB 구성 발견됨'이라는 AS Arctic Fox 오류 문제
  • Resource Manager
    • (Windows) 신규 -> 벡터 애셋 -> picture.svg: 생성된 xml에 잘못된 '빼기' 문자가 있습니다.
  • 축소기(R8)
    • BridgeHoisting의 NPE
    • 7.0.0으로 업그레이드한 후 R8이 '인라인 후 메서드에 예기치 않은 사용이 남아 있음' 오류와 함께 비정상 종료됩니다.

자세한 내용은 2020.3.1 패치 1 블로그 게시물을 참고하세요.

새 버전 번호 지정 체계

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

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

이전 번호 지정 체계에서는 이 버전이 Android 스튜디오 4.3이나 버전 4.3.0.1이었을 것입니다. 새로운 번호 지정 체계에 따르면 이제 Android 스튜디오 - Arctic Fox | 2020.3.1 또는 버전 2020.3.1입니다.

Intellij 버전 기존 이름 기존 - 번호 시스템 신규 - 연도 시스템 새 버전 이름
2020.3 4.3 4.3.0 2020.3.1 Arctic Fox | 2020.3.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 4.2 이후의 다음 출시 버전은 AGP 7.0입니다.

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

Android Gradle 플러그인 7.0.0

최신 버전의 Android Gradle 플러그인에는 많은 업데이트가 포함되어 있습니다. 자세한 내용은 전체 Android Gradle 플러그인 출시 노트를 참고하세요.

이제 단위 테스트에서 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>
    

새로운 Background Task Inspector

새로운 Background Task Inspector를 사용하여 앱의 백그라운드 작업자를 시각화, 모니터링, 디버그할 수 있습니다. 시작하려면 WorkManager 라이브러리 2.5.0 이상을 실행하는 기기에 앱을 배포하고 메뉴 바에서 View > Tool Windows > App Inspection을 선택합니다.

Background Task Inspector의 활성 작업자

작업자를 클릭하면 자세한 정보를 볼 수 있습니다. 예를 들어 작업자에 관한 설명, 작업자가 실행된 방식, 작업자 체인 세부정보, 실행 결과를 볼 수 있습니다.

Worker Details 탭

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

Background Task Inspector 작업자 체인

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

Database Inspector 업데이트

이제 Database Inspector가 새로운 App Inspection 도구 창에 포함되며 여기서 새로운 Background Task Inspector를 확인할 수도 있습니다. 도구 창 모음에서 App Inspection 도구 창을 열거나 메뉴 바에서 View > Tool Windows > App Inspection을 선택합니다.

Database Inspector에서 데이터 내보내기

Arctic Fox에서는 Database Inspector의 데이터베이스, 테이블, 쿼리 결과를 손쉽게 내보내 로컬에 저장, 공유, 재생성할 수 있습니다. Android 스튜디오에서 앱 프로젝트를 열고 Database Inspector에서 프로젝트의 앱을 검사하면 다음 방법 중 하나로 데이터 내보내기를 시작할 수 있습니다.

  • Databases 패널에서 데이터베이스나 테이블을 선택하고 패널 상단에 있는 Export to file을 클릭합니다.
  • Databases 패널에서 데이터베이스나 테이블을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 Export to file을 선택합니다.
  • 탭에서 테이블이나 쿼리 결과를 검사할 때 테이블이나 쿼리 결과 위쪽에서 Export to file을 클릭합니다.

내보내기 작업을 선택한 후에 아래와 같이 Export 대화상자를 사용하여 최종 단계를 진행합니다. 데이터베이스, 테이블, 쿼리 결과 중 어느 것을 내보내려고 하는지에 따라 DB, SQL, CSV 중 한 가지 이상의 형식으로 데이터를 내보낼 수 있습니다.

Export Database 대화상자

메모리 프로파일러의 기록을 위한 UI 업데이트

힙 덤프를 캡처하고 자바, Kotlin, 네이티브 메모리 할당을 기록하는 등의 다양한 기록 활동을 위해 메모리 프로파일러 사용자 인터페이스(UI)를 통합했습니다.

메모리 할당이 메모리 프로파일러에 표시됨

메모리 프로파일러는 다음 옵션을 제공합니다.

  • Capture heap dump: 앱에서 특정 시점에 메모리를 사용 중인 객체를 확인합니다.
  • Record native allocations: 일정 기간 동안 각 C/C++ 객체가 할당된 방식을 확인합니다.
  • Record Java/Kotlin allocations: 일정 기간 동안 각 자바/Kotlin 객체가 할당된 방식을 확인합니다.

세 옵션을 사용하는 방법은 다음과 같습니다.

  • 힙 덤프를 캡처하려면 Capture heap dump를 선택한 다음 Record를 선택합니다. 프로파일러가 힙 덤프를 캡처한 후에는 메모리 프로파일러 UI가 힙 덤프를 표시하는 별도의 화면으로 전환됩니다.

    메모리 프로파일러의 힙 덤프 샘플

  • Android 10 이상을 실행하는 기기에서 네이티브 할당을 기록하려면 Record native allocations를 선택한 다음 Record를 선택합니다. 기록은 Stop 을 클릭할 때까지 계속됩니다. 클릭한 후에는 메모리 프로파일러 UI가 네이티브 기록을 표시하는 별도의 화면으로 전환됩니다.

    Android 9 이하에서는 Record native allocations 옵션을 사용할 수 없습니다.

  • 자바 및 Kotlin 할당을 기록하려면 Record Java / Kotlin allocations를 선택한 다음 Record를 선택합니다. 기기에서 Android 8 이상을 실행 중이면 메모리 프로파일러 UI가 진행 중인 기록을 표시하는 별도의 화면으로 전환됩니다. 기록 위에 있는 미니 타임라인과 상호작용할 수 있습니다(예: 선택 범위 변경). 기록을 완료하려면 Stop 을 선택합니다.

    메모리 프로파일러의 자바 할당 시각화

    Android 7.1 이하에서는 메모리 프로파일러가 레거시 할당 기록을 사용하여 Stop을 클릭할 때까지 타임라인에 기록을 표시합니다.

연결된 C++ 프로젝트 새로고침 업데이트

구성과 관련 없는 파일을 .cxx/ 폴더에서 build/ 폴더로 이동했습니다. CMake C++ 빌드에는 컴파일 및 링크 단계를 실행하는 데 사용되는 닌자 프로젝트를 생성하는 구성 단계가 필요합니다. CMake로 생성된 프로젝트는 생성하는 데 비용이 많이 들고 Gradle 정리에서 그대로 유지될 것으로 예상됩니다. 이런 이유로 이 프로젝트는 build/ 폴더 옆의 .cxx/ 폴더에 저장됩니다. 일반적으로 Android Gradle 플러그인은 구성 변경사항을 감지하고 자동으로 닌자 프로젝트를 다시 생성합니다. 하지만 모든 사례를 감지할 수는 없습니다. 감지하지 못한 경우 'Refresh Linked C++ Project' 옵션을 사용하여 수동으로 닌자 프로젝트를 다시 생성할 수 있습니다.

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

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

계측 테스트 패널

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

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

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

    기기 세트 수정 대화상자

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

    기기 세트 수정 대화상자

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

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

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

데이터 결합의 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 지원이 코루틴 종속성을 포함한 데이터 결합 기능에 자동으로 포함됩니다.

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

추천 가져오기 개선

추천 가져오기 기능이 지원하는 라이브러리의 수를 개선했으며 색인을 더 자주 업데이트합니다. 추천 가져오기를 사용하면 특정 Google Maven 아티팩트를 클래스 및 Gradle 프로젝트로 쉽고 빠르게 가져올 수 있습니다. Android 스튜디오가 특정 Google 라이브러리에서 확인되지 않은 기호를 감지하면 IDE는 클래스와 프로젝트 모두로 라이브러리를 가져오도록 추천합니다.

빌드 분석 도구의 구성 캐시 지원

이제 빌드 분석 도구는 프로젝트에 구성 캐시가 사용 설정되지 않은 경우 이를 식별하여 최적화를 제공합니다. 빌드 분석 도구는 호환성 평가를 실행하여 구성 캐시를 사용 설정하기 전에 프로젝트에서 구성 캐시에 문제가 있는지 여부를 알려줍니다.

빌드 분석 도구의 구성 캐시 정보

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

이제 Android Gradle 플러그인용 업그레이드 어시스턴트에 완료할 단계 목록이 포함된 영구 도구 창이 있습니다. 도구 창의 오른쪽에 추가 정보도 표시됩니다. 필요한 경우 업그레이드할 다른 버전의 AGP를 선택할 수도 있습니다. Refresh 버튼을 클릭하면 해당하는 업데이트 단계가 업데이트됩니다.

업그레이드 어시스턴트의 새로운 영구 도구 창

비전환 R 클래스 리팩터링

Android Gradle 플러그인과 함께 비전환 R 클래스를 사용하여 여러 모듈이 있는 애플리케이션을 위한 더 빠른 빌드를 구현할 수 있습니다. 이렇게 하면 종속 항목에서 참조를 가져오지 않고 각 모듈의 R 클래스에 자체 리소스 참조만 포함되도록 하여 리소스 중복을 방지할 수 있습니다. 그러면 최신 빌드와 그에 따른 컴파일 방지의 이점이 더 향상됩니다.

Refactor > Migrate to Non-transitive R Classes로 이동하여 이 기능에 액세스할 수 있습니다.

Jetpack Compose 도구 지원

이제 Jetpack Compose를 사용하는 앱을 미리 보고 테스트하는 지원이 추가됩니다. Jetpack Compose로 최적의 환경에서 개발하려면 새 프로젝트 템플릿 및 즉시 Compose UI 미리보기 기능과 같은 스마트 편집기 기능을 활용할 수 있도록 최신 버전의 Android 스튜디오 Arctic Fox를 사용해야 합니다.

Compose 미리보기

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

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

Compose 미리보기 UI

양방향 미리보기

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

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

양방향 미리보기 UI

기기에 배포

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

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

리터럴 실시간 편집

Compose를 사용하는 개발자가 코드에서 리터럴(문자열, 숫자, 부울)을 빠르게 편집하고 컴파일을 기다릴 필요 없이 결과를 즉시 확인할 수 있도록 리터럴 실시간 편집 기능을 추가했습니다. 이 기능의 목표는 코드 변경사항이 미리보기, 에뮬레이터, 실제 기기에 거의 즉시 표시되도록 하여 생산성을 높이는 것입니다.

숫자 및 문자열 업데이트를 미리보기 및 기기에서 즉시 편집

Layout Inspector의 Compose 지원

Layout Inspector를 사용하면 연결된 기기에서 실행 중인 앱의 레이아웃에 관한 다양한 세부정보를 볼 수 있습니다. 앱과 상호작용하고 도구에서 실시간 업데이트를 확인하여 발생할 수 있는 문제를 빠르게 디버그할 수 있습니다.

새로운 Android 선언형 UI 프레임워크인 Jetpack Compose로 작성된 레이아웃을 검사할 수 있습니다. 앱이 Compose로 완전히 작성된 레이아웃을 사용하든 Compose와 Views의 하이브리드를 사용하는 레이아웃을 사용하든 Layout Inspector를 사용하면 실행 중인 기기에서 레이아웃이 렌더링되는 방식을 이해할 수 있습니다.

시작하기

시작하려면 연결된 기기에 앱을 배포한 다음 View > Tool Windows > Layout Inspector를 선택하여 Layout Inspector 창을 엽니다. Layout Inspector가 앱 프로세스에 자동으로 연결되지 않으면 프로세스 풀다운에서 원하는 앱 프로세스를 선택합니다. 곧 도구 창에서 앱 레이아웃이 렌더링됩니다. Compose 레이아웃 검사를 시작하려면 렌더링에 표시되는 레이아웃 구성요소를 선택하거나 Component Tree에서 구성요소를 선택합니다.

Layout Inspector UI

Attributes 창에는 현재 선택된 Compose 함수에 관한 자세한 정보가 표시됩니다. 이 창에서 수정자와 람다 표현식을 포함하여 함수의 매개변수와 값을 검사할 수 있습니다. 람다 표현식의 경우 검사기는 소스 코드 내의 표현식으로 이동하는 데 도움이 되는 바로가기를 제공합니다.

Layout Inspector는 호출 스택에서 앱의 레이아웃에 구성요소를 내보내는 모든 Compose 함수를 보여줍니다. 대부분의 경우 Compose 라이브러리에서 내부적으로 호출되는 Compose 함수가 포함됩니다. 앱이 직접 호출하는 Compose 함수만 Component Tree에서 보려면 필터 작업을 클릭합니다. 그러면 트리에 표시되는 노드 수를 검사하려는 노드로 줄일 수 있습니다.

배포 드롭다운 개선

이제 기기 드롭다운은 선택한 기기 설정 내의 다양한 종류의 오류를 구분합니다. 이제 아이콘과 변경된 스타일이 오류(구성 손상을 초래하는 기기 선택)와 경고(예기치 않은 동작을 초래할 수 있지만 여전히 실행 가능한 기기 선택)를 구분합니다.

또한 이제 오류나 경고와 관련 있는 기기로 프로젝트를 시작하려고 하면 Android 스튜디오에서 경고를 표시합니다.

새로운 Wear OS 페어링 어시스턴트

새로운 Wear OS 페어링 어시스턴트를 통해 개발자는 Android 스튜디오에서 직접 단계별로 Wear OS 에뮬레이터를 실물 휴대전화나 가상 전화와 페어링할 수 있습니다. 어시스턴트를 사용하면 휴대전화에 정확한 Wear OS 호환 앱을 설치하고 두 기기 사이의 연결을 설정할 수 있습니다. 기기 드롭다운 > Wear OS Emulator Pairing Assistant로 이동하여 시작할 수 있습니다.

Wear OS 페어링 어시스턴트 데모

반응형 레이아웃 템플릿

이제 Android 스튜디오 Arctic Fox에는 휴대전화, 폴더블, 태블릿, 화면 분할 모드와 같은 다양한 디스플레이 크기 및 앱 크기 조절에 맞게 조정되는 새로운 레이아웃 템플릿이 포함됩니다. 새 프로젝트나 모듈을 만들 때 반응형 활동 템플릿을 선택하면 동적으로 크기가 조절되는 구성요소가 있는 레이아웃을 만들 수 있습니다.

작은 화면의 반응형 레이아웃 템플릿 중간 화면의 반응형 레이아웃 템플릿 큰 화면의 반응형 레이아웃 템플릿

시작하려면 File > New로 이동하여 New ProjectNew Module을 선택하고 Responsive Activity 템플릿을 선택합니다.

새 프로젝트 마법사의 반응형 레이아웃 템플릿

Arctic Fox의 알려진 문제

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

Windows v3.6-v4.1에서 패치가 작동하지 않음

Windows 플랫폼 v3.6-v4.1에서 Android 스튜디오 Arctic Fox 안정화 버전에 대한 패치가 작동하지 않을 수 있습니다.

4.2(2021년 4월)

Android 스튜디오 4.2는 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

4.2.2(2021년 6월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

4.2.1(2021년 5월)

이번 소규모 업데이트는 Kotlin 플러그인 1.5.0을 번들로 제공하며 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

Android Gradle 플러그인 4.2.0

최신 버전의 Android Gradle 플러그인에는 많은 업데이트가 포함되어 있습니다. 자세한 내용은 전체 Android Gradle 플러그인 출시 노트를 참고하세요.

Gradle 호환성 및 구성 변경사항

Android 스튜디오에서 실행될 때 Gradle 빌드 도구는 스튜디오의 번들 JDK를 사용합니다. 이전 출시에서는 JDK 8이 스튜디오와 함께 번들로 제공되었습니다. 그러나 4.2에서는 이제 JDK 11이 대신 번들로 제공됩니다. 새 번들 JDK를 사용하여 Gradle을 실행하면 비호환성이 발생하거나 가비지 컬렉터의 변경사항으로 인해 JVM 성능에 영향을 미칠 수 있습니다. 이러한 문제는 AGP 출시 노트에 설명되어 있습니다.

Gradle 동기화 시간 최적화 옵션

Gradle 동기화 성능을 향상하기 위해 Android 스튜디오는 동기화 중에 작업 목록 빌드를 건너뜁니다. 이렇게 하면 대규모 프로젝트에서 Gradle 동기화를 더 빠르게 완료하고 UI 응답을 향상할 수 있습니다. 이 옵션은 Android 스튜디오 4.2에서 기본적으로 사용 설정되어 있습니다. 이 기능을 사용 중지하려면 File > Settings > Experimental(Mac의 경우 Preferences > Experimental)로 이동하여 Do not build Gradle task list during Gradle sync를 선택 해제하세요.

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에서는 프로세스 연결이 해제된 후에도 앱의 데이터베이스를 계속 검사하는 기능을 추가하여 비정상 종료 후 앱을 더 쉽게 디버그할 수 있습니다.

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

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

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

새로운 Android Gradle 플러그인용 업그레이드 어시스턴트를 사용하면 프로젝트의 AGP 버전을 업데이트할 수 있습니다.

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

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

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

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

CPU 프로파일러에서 시스템 트레이스 기능에 이제 앱 성능을 분석하는 새 측정항목과 함께 다음 항목도 포함됩니다.

  • 이벤트 테이블. 현재 선택된 스레드의 모든 트레이스 이벤트가 나열됩니다.

  • BufferQueue. 디스플레이 섹션에서 이 새 트랙에는 앱의 노출 영역 BufferQueue의 버퍼 수(0이나 1, 2)가 표시되므로 이미지 버퍼가 Android 그래픽 구성요소 간에 이동할 때 이미지 버퍼의 상태를 파악할 수 있습니다.

    시스템 트레이스 버퍼 큐

  • CPU 주파수. CPU 코어 섹션에서 이 새 트랙에는 코어별 CPU 주파수가 표시되어 각 코어의 작동 강도를 나타냅니다.

    시스템 트레이스 CPU 주파수

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

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

자세한 내용은 CPU 프로파일러로 CPU 활동 검사를 참고하세요.

새로운 Layout Inspector 새로고침 작업

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

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

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

Safe Args 지원

Safe Args는 유형 안전성을 갖춰 관련 인수를 탐색하고 액세스하기 위한 간단한 객체 및 빌더 클래스를 생성하는 Gradle 플러그인입니다. 이제 Android 스튜디오에는 Safe Args를 사용할 때 다음과 같이 더 풍부한 지원이 포함됩니다.

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

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

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

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

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

여러 기기에 배포

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

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

    대상 기기 드롭다운 메뉴

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

    기기 세트 수정 대화상자

  3. 앱을 실행합니다.

기능 모듈의 새로운 removable 설정

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

기능 모듈을 삭제 가능한 상태로 유지하려면 제거하려는 모듈에서 dist:removable="true"를 설정합니다.

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

변경사항 적용

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

추가 코드 변경사항 지원

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

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

업데이트된 새 프로젝트 및 새 모듈 마법사

New ProjectNew Module 마법사가 업데이트되어 더 쉽게 탐색하고 템플릿을 선택하며 새 프로젝트나 모듈에 관한 정보를 입력할 수 있습니다.

New Module 마법사에서 Import .JAR/.AAR Package 옵션도 삭제되었습니다. JAR이나 AAR을 프로젝트로 가져오려면 대신 Project Structure 대화상자를 사용하세요.

Kotlin 1.4.31

Android 스튜디오 4.2에는 Kotlin 1.4.31이 번들로 제공됩니다. Kotlin 1.4.0 변경 로그를 확인하여 주요 변경사항을 검토하세요.

ANDROID_SDK_HOME 환경 변수 지원 중단됨

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

Android 스튜디오 4.2의 알려진 문제

이 섹션에서는 Android 스튜디오 4.2에 있는 알려진 문제를 설명합니다. 전체 목록은 알려진 문제 페이지로 이동하세요.

Android 스튜디오 4.2.0에서 잘못된 Kotlin 버전('1.5.0-release-764')의 프로젝트 생성

Android 스튜디오 4.2.0을 사용하고 있고 Kotlin 플러그인 1.5.0으로 업그레이드했다면 스튜디오에서 생성한 새 Kotlin 프로젝트는 다음과 같은 Gradle 동기화 오류로 인해 빌드되지 않습니다. Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.

이 문제를 해결하려면 프로젝트의 build.gradle 파일에서 '1.5.0-release-764'를 '1.5.0'으로 바꿉니다.

키와 키 저장소에 다른 비밀번호를 사용할 때 발생하는 오류

버전 4.2부터는 이제 Android 스튜디오가 JDK 11에서 실행됩니다. 이 업데이트로 인해 서명 키와 관련된 기본 동작이 변경됩니다.

Build > Generate Signed Bundle / APK로 이동하여 App Bundle이나 APK의 앱 서명을 구성하려고 할 때 키와 키 저장소에 다른 비밀번호를 입력하면 다음 오류가 발생할 수 있습니다.

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

이 문제를 해결하려면 키와 키 저장소에 모두 같은 비밀번호를 입력하세요.

4.2 버전을 설치한 후 Android 스튜디오가 시작되지 않음

스튜디오는 이전 .vmoptions를 가져와 JDK 11에서 사용하는 가비지 컬렉터와 함께 작동하도록 정리하려고 합니다. 이 프로세스가 실패하면 .vmoptions 파일에서 맞춤 VM 옵션을 설정한 특정 사용자에게 IDE가 시작되지 않을 수 있습니다.

이 문제를 해결하려면 .vmoptions에서 맞춤 옵션을 주석 처리하는 것이 좋습니다('#' 문자 사용). .vmoptions 파일은 다음 위치에서 찾을 수 있습니다.

Windows

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

macOS

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

Linux

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

이 해결 방법을 시도한 후에도 스튜디오가 시작되지 않으면 아래에서 업그레이드 후 스튜디오가 시작되지 않음을 참고하세요.

4.1(2020년 8월)

Android 스튜디오 4.1은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

4.1.3(2021년 3월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

4.1.2(2021년 1월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

4.1.1(2020년 11월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

Android Gradle 플러그인 4.1.0

최신 버전의 Android Gradle 플러그인에는 많은 업데이트가 포함되어 있습니다. 자세한 내용은 전체 Android Gradle 플러그인 출시 노트를 참고하세요.

새 Database Inspector

Database Inspector를 사용하여 실행 중인 앱의 데이터베이스를 검사하고 쿼리 및 수정합니다. 시작하려면 API 수준 26 이상을 실행하는 기기에 앱을 배포하고 메뉴 바에서 View > Tool Windows > Database Inspector를 선택합니다.

자세한 내용은 Database Inspector로 데이터베이스 디버그를 참고하세요.

Android 스튜디오에서 직접 Android Emulator 실행

이제 Android 스튜디오에서 직접 Android Emulator를 실행할 수 있습니다. 이 기능을 통해 화면 공간을 절약하고 핫키를 사용하여 에뮬레이터와 편집기 창 간에 빠르게 이동하며 단일 애플리케이션 창에서 IDE 및 에뮬레이터 워크플로를 구성합니다.

Android 스튜디오의 도구 창에서 실행되는 에뮬레이터

자세한 내용은 Android Emulator 문서를 참고하세요.

TensorFlow Lite 모델 사용

ML 모델 바인딩을 사용하면 .tflite 모델 파일을 직접 가져와 프로젝트에서 사용할 수 있습니다. Android 스튜디오에서는 사용하기 쉬운 클래스가 생성되므로, 코드를 적게 사용하고 유형 안전성을 높여 모델을 실행할 수 있습니다.

지원되는 모델

현재 ML 모델 바인딩의 구현은 메타데이터로 향상되는 경우 이미지 분류 및 스타일 전송 모델을 지원합니다. 시간이 지남에 따라 객체 감지, 이미지 세분화, 텍스트 분류와 같은 다른 문제 영역으로 지원이 확장됩니다.

메타데이터가 있는 선행 학습된 다양한 모델이 TensorFlow Hub에 제공됩니다. Adding metadata to TensorFlow Lite model(TensorFlow Lite 모델에 메타데이터 추가)에서 설명한 대로 TensorFlow Lite 모델에 메타데이터를 직접 추가할 수도 있습니다.

모델 파일 가져오기

지원되는 모델 파일을 가져오려면 다음 단계를 따르세요.

  1. File 메뉴에서(File > New > Other > TensorFlow Lite Model) TensorFlow Lite 모델 가져오기 대화상자를 엽니다.
  2. 이전에 다운로드했거나 만든 .tflite 모델 파일을 선택합니다.
  3. Finish를 클릭합니다.

그러면 모델 파일을 프로젝트로 가져와 ml/ 폴더에 배치합니다. 디렉터리가 존재하지 않으면 Android 스튜디오에서 자동으로 디렉터리가 만들어집니다.

TensorFlow Lite 모델 가져오기

모델 메타데이터 및 사용법 보기

가져온 모델의 세부정보를 확인하고 앱에서 모델을 사용하는 방법에 관한 안내를 보려면 프로젝트에서 모델 파일을 더블클릭하여 다음을 보여주는 모델 뷰어 페이지를 엽니다.

  • Model: 모델에 관한 대략적인 설명
  • Tensors: 입력 및 출력 텐서에 관한 설명
  • Sample code: 앱에서 모델과 상호작용하는 방법의 예

다음은 mobilenet_v1_0.25_160_quantized.tflite를 사용하는 예입니다.

TensorFlow Lite 모델 뷰어의 스크린샷

예에서 알 수 있듯이 Android 스튜디오는 모델과 상호작용하기 위한 MobilenetV1025160Quantized라는 클래스를 만듭니다.

모델에 메타데이터가 없는 경우 이 화면은 최소한의 정보만 제공합니다.

알려진 문제 및 해결 방법

  • 이미지 분류 및 스타일 전송 이외의 문제 영역과 관련한 TensorFlow Lite 모델은 현재 제한적으로 지원됩니다. 가져오기는 잘 작동하지만 일부 모델 입력 및 출력은 친숙한 유형이 아닌 TensorBuffers로 표현됩니다. 메타데이터가 없는 모델의 경우 모든 모델 입력 및 출력은 TensorBuffers입니다.
  • 입력 데이터 유형과 출력 데이터 유형이 DataType.UINT8 또는 DataType.FLOAT32가 아닌 모델은 지원되지 않습니다.

이 기능은 아직 개발 중이므로 의견을 보내거나 버그를 신고해 주세요.

네이티브 메모리 프로파일러

이제 Android 스튜디오 메모리 프로파일러에 Android 10 이상을 실행하는 실제 기기에 배포된 앱의 네이티브 메모리 프로파일러가 포함됩니다. 네이티브 메모리 프로파일러를 사용하면 네이티브 코드에서 메모리 할당 및 할당 해제를 기록하고 네이티브 객체에 관한 누적 통계를 검사할 수 있습니다.

네이티브 메모리 프로파일러에 관한 자세한 내용은 메모리 프로파일러로 앱의 메모리 사용량 검사를 참고하세요.

알려진 문제 및 해결 방법

  • Android 스튜디오 4.1의 네이티브 메모리 프로파일러는 Android 11 기기에서 작동하지 않습니다. Android 11 기기 프로파일링 지원은 현재 4.2 미리보기 출시에서 제공됩니다.

  • 최초 4.1 버전부터 앱 시작 프로파일링이 사용 중지되었습니다. 이 옵션은 향후 출시에서 사용 설정될 예정입니다.

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

시스템 트레이스 UI: 간편한 선택, 새로운 분석 탭, 추가 프레임 렌더링 데이터

Android 스튜디오 프로파일러의 시스템 트레이스 UI에는 다음 개선사항이 포함되어 있습니다.

  • 박스 선택: 이제 Threads 섹션에서 마우스를 드래그하여 직사각형 영역의 박스 선택을 할 수 있고 이 영역은 오른쪽 상단의 Zoom to Selection 버튼을 클릭하거나 M 단축키를 사용하여 확대할 수 있습니다. 유사한 스레드를 드래그 앤 드롭하여 나란히 두면 여러 스레드를 선택하여 한 번에 모두 검사할 수 있습니다. 예를 들어 여러 작업자 스레드에서 분석을 실행할 수 있습니다.

  • 요약 탭: Analysis 패널의 새로운 Summary 탭은 다음 항목을 표시합니다.

    • 일치하는 항목 수 및 최소/최대 지속 시간 등 모든 일치하는 특정 이벤트 항목의 집계 통계
    • 선택된 일치하는 항목의 트레이스 이벤트 통계
    • 스레드 상태 배포에 관한 데이터
    • 선택된 트레이스 이벤트의 가장 오래 실행되는 일치하는 항목

    다른 일치하는 항목으로 이동하려면 표에서 다른 행을 선택합니다.

  • 데이터 표시: Display 섹션에서 SurfaceFlingerVSYNC의 새로운 타임라인으로 앱 UI에서 렌더링 문제를 조사할 수 있습니다.

시스템 트레이스를 기록하는 방법에 관한 기본 사용법 안내는 CPU 프로파일러를 사용하여 CPU 활동 검사트레이스 기록 섹션을 참고하세요.

독립형 프로파일러 사용 가능

새 독립형 프로파일러를 사용하면 이제 전체 Android 스튜디오 IDE를 실행하지 않아도 앱을 프로파일링할 수 있습니다.

독립형 프로파일러 사용에 관한 안내는 독립형 프로필러 실행을 참고하세요.

Dagger 이동 지원

Dagger 소비자 및 제공업체로 이동하는 IDE 거터 작업

Android 스튜디오를 사용하면 새 거터 작업을 제공하고 Find Usages 창에서 지원을 확장하여 Dagger 관련 코드 간에 더 쉽게 이동할 수 있습니다.

  • 새 거터 작업: Dagger를 사용하는 프로젝트의 경우 IDE에서 Dagger 주석이 달린 코드 간에 이동하는 데 도움이 되는 거터 작업을 제공합니다. 예를 들어 특정 유형을 사용하는 메서드 옆의 거터 작업을 클릭하면 이 유형의 제공업체로 이동합니다. 반대로 거터 작업을 클릭하면 유형이 종속 항목으로 사용되는 위치로 이동합니다.

  • 사용법 찾기 노드: 특정 유형의 제공업체에서 Find Usages를 호출하면 이제 Find 창에 그 유형의 소비자를 나열하는 Dependency consumer(s) 노드가 포함됩니다. 반대로 Dagger 삽입 종속 항목의 소비자에서 이 작업을 호출하면 Find 창에 종속 항목의 제공업체가 표시됩니다.

Material Design 구성요소: 새 프로젝트 템플릿의 업데이트된 테마 및 스타일

애니메이션: 새 머티리얼 디자인 속성으로 Android 스튜디오에서 프로젝트 만들기

이제 Create New Project 대화상자의 Android 스튜디오 템플릿에서 머티리얼 디자인 구성요소(MDC)를 사용하며 업데이트된 테마 및 스타일 안내를 기본적으로 따릅니다. 업데이트 항목:

  • MDC: 프로젝트는 build.gradle.com.google.android.material:material에 의존합니다. 기본 앱 테마는 Theme.MaterialComponents.* 상위 요소를 사용하고 업데이트된 MDC 색상과 'on' 속성을 재정의합니다.
  • 색상 리소스: colors.xml의 색상 리소스는 리터럴 이름을 사용합니다(예: colorPrimary가 아닌 purple_500).
  • 테마 리소스: 테마 리소스는 styles.xml이 아닌 themes.xml에 있으며 Theme.<ApplicationName> 이름을 사용합니다.
  • 어두운 테마: 기본 애플리케이션 테마는 DayNight 상위 요소를 사용하고 res/valuesres/values-night 간에 분할됩니다.
  • 테마 속성: 색상 리소스는 하드 코딩 색상을 피하기 위해 레이아웃과 스타일에서 테마 속성(예: ?attr/colorPrimary)으로 참조됩니다.

IntelliJ IDEA 2020.1

핵심 Android 스튜디오 IDE가 2020.1 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다. 여기에는 버전 제어 작업을 사용 설정하는 새 Commit 창과 View > Appearance > Enter Distraction Free Mode를 선택하여 전환할 수 있는 새 Zen 모드가 포함됩니다.

버전 2020.1의 개선사항에 관한 자세한 내용은 다음 페이지를 참고하세요.

IDE 구성 디렉터리 변경사항

사용자 구성 디렉터리의 위치가 다음과 같이 변경되었습니다.

Windows

구문: %APPDATA%\Google\<product><version>

예: C:\Users\YourUserName\AppData\Roaming\Google\AndroidStudio4.1

macOS

구문: ~/Library/Application Support/Google/<product><version>

예: ~/Library/Application Support/Google/AndroidStudio4.1

Linux

구문: ~/.config/Google/<product><version>

예: ~/.config/Google/AndroidStudio4.1

이러한 새 디렉터리 위치는 Android 스튜디오가 기반하는 IDE인 IntelliJ IDEA의 최근 업데이트와 일치합니다.

Kotlin 1.3.72

Android 스튜디오 4.1에는 Kotlin 강조표시, 검사, 코드 완성을 개선하는 여러 수정사항이 포함되어 있는 Kotlin 1.3.72가 번들로 제공됩니다. 자세한 내용은 1.3.72 Kotlin 변경 로그를 참고하세요.

맞춤 뷰 미리보기

맞춤 뷰를 만들 때(예: View 또는 Button 클래스 확장) 이제 Android 스튜디오에 맞춤 뷰 미리보기가 표시됩니다. 툴바의 드롭다운 메뉴를 사용하여 여러 맞춤 뷰 간에 전환하거나 버튼을 클릭하여 콘텐츠에 세로로 또는 가로로 래핑합니다.

IDE에서 맞춤 뷰 미리보기

네이티브 비정상 종료 보고서 기호화

네이티브 코드에서 비정상 종료나 ANR이 발생하면 시스템은 스택 트레이스를 생성하는데 이 스택 트레이스는 비정상 종료가 발생한 시점까지 프로그램에서 호출된 일련의 중첩 함수를 스냅샷으로 보여줍니다. 이러한 스냅샷은 소스의 문제를 식별하고 수정하는 데 도움이 될 수 있지만 먼저 기호화하여 머신 주소를 다시 사람이 읽을 수 있는 함수 이름으로 변환해야 합니다.

C++와 같은 네이티브 코드를 사용하여 앱이나 게임을 개발하는 경우 이제 각 앱 버전의 디버그 기호 파일을 Play Console에 업로드할 수 있습니다. Play Console에서는 이러한 디버그 기호 파일을 사용하여 앱의 스택 트레이스를 기호화하므로 비정상 종료와 ANR을 쉽게 분석할 수 있습니다. 디버그 기호 파일을 업로드하는 방법을 알아보려면 네이티브 충돌 지원을 참고하세요.

변경사항 적용

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

빠른 배포 속도

애플리케이션을 설치하지 않고 기기에 변경사항을 배포하고 유지하는 방법을 개발하여 반복 속도를 최적화하는 데 집중적으로 투자했습니다. 초기 배포 후 Apply Code Changes 또는 Apply Changes and Restart Activity 를 사용하여 Android 11 기기에 후속 배포하는 속도가 이제 훨씬 빨라졌습니다.

이 두 작업의 차이점에 관해 자세히 알아보려면 변경사항 적용을 참고하세요.

추가 코드 변경사항 지원

Android 11 개발자 프리뷰 3 이상을 실행하는 기기에서는 이제 메서드를 추가하고 Apply Code Changes Apply Changes and Restart Activity 를 클릭하여 이러한 변경사항을 실행 중인 앱에 배포할 수 있습니다.

4.0(2020년 5월)

Android 스튜디오 4.0은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

4.0.1(2020년 7월)

이번 소규모 업데이트에는 다양한 버그 수정 및 Android 11의 패키지 공개 상태의 새 기본 설정 지원이 포함됩니다. 자세한 내용은 Android Gradle 플러그인 4.0.1 출시 노트를 참고하세요.

이번 출시의 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

4.0(2020년 5월)

중요: 업데이트 후 Android 스튜디오를 다시 시작하여 이전 버전의 IDE에서 이전한 메모리 설정을 적용해야 합니다. 자세한 내용은 알려진 문제 페이지를 참고하세요.

Android Gradle 플러그인 4.0.0

최신 버전의 Android Gradle 플러그인에는 이전 버전 Android용 자바 8 디슈가링과 기능별 종속 항목과 같은 많은 업데이트가 포함되어 있습니다. 자세한 내용은 전체 Android Gradle 플러그인 출시 노트를 참고하세요.

또한 Android 스튜디오에는 이제 빌드 성능을 개선하는 데 도움이 되는 새로운 기능이 포함되어 있습니다.

빌드 분석 도구

Android Gradle 플러그인 4.0.0 이상에서 Android 스튜디오 4.0을 사용하는 경우 Build Analyzer 창을 사용하여 최적화 사용 중지, 부적절하게 구성된 작업 등의 빌드 프로세스 문제를 파악하고 진단할 수 있습니다. Build Analyzer 창을 열려면 다음 단계를 따르세요.

  1. 앱을 아직 빌드하지 않은 경우 메뉴 바에서 Build > Make Project를 선택하여 앱을 빌드합니다.
  2. 메뉴 바에서 View > Tool Windows > Build를 선택합니다.
  3. Build 창에서 다음 방법 중 하나를 사용하여 Build Analyzer 창을 엽니다.
    • Android 스튜디오에서 프로젝트 빌드를 완료하면 Build Analyzer 탭을 클릭합니다.
    • Android 스튜디오에서 프로젝트 빌드를 완료하면 Build Output 창의 오른쪽에 있는 링크를 클릭합니다.

발생 가능한 빌드 문제는 Build Analyzer 창의 왼쪽 트리에 정리됩니다. 각 문제를 검사하고 클릭하면 오른쪽 패널에서 세부정보를 조사할 수 있습니다. Android 스튜디오는 빌드를 분석할 때 빌드 기간을 결정하는 작업 집합을 계산하고 각 작업의 영향을 파악할 수 있도록 시각화합니다. Warnings 노드를 펼쳐 경고의 세부정보를 가져올 수도 있습니다.

빌드 기간에 가장 큰 원인이 되는 작업을 검사합니다.

빌드 기간을 결정하는 작업 검사

D8 및 R8의 자바 8 라이브러리 디슈가링

이제 Android 스튜디오에서는 앱의 최소 API 수준을 요구하지 않으며 여러 Java 8 언어 API 사용을 지원합니다.

DEX 컴파일러인 D8은 디슈가링이라는 프로세스를 통해 이미 Android 스튜디오 3.0 이상에서 자바 8 언어 기능을 위한 많은 지원(람다 식, 기본 인터페이스 메서드, try with resources 등)을 하고 있습니다. Android 스튜디오 4.0에서는 자바 언어 API를 디슈가링할 수 있도록 디슈가링 엔진이 확장되었습니다. 즉, 최신 Android 릴리스(java.util.streams 등)에서만 사용할 수 있었던 표준 언어 API를 Android 이전 버전을 지원하는 앱에 포함할 수 있습니다.

이번 버전에서는 다음의 API 집합이 지원됩니다.

  • 순차적 스트림(java.util.stream)
  • java.time의 하위 집합
  • java.util.function
  • 최근 java.util.{Map,Collection,Comparator}에 추가된 사항
  • 선택사항(java.util.Optional, java.util.OptionalIntjava.util.OptionalDouble)과 위의 API에서 유용하게 사용할 수 있는 몇 가지 새로운 클래스
  • 일부 java.util.concurrent.atomic에 추가된 사항(AtomicInteger, AtomicLong, AtomicReference의 새 메서드)
  • ConcurrentHashMap(Android 5.0 버그 수정 포함)

이러한 언어 API를 지원하기 위해 D8에서는 누락된 API의 구현을 포함하는 별도의 라이브러리 DEX 파일을 컴파일하고 앱에 포함합니다. 디슈가링 프로세스를 사용하면 앱 코드를 다시 작성하여 런타임에 이 라이브러리를 대신 사용할 수 있습니다.

이러한 언어 API의 지원을 받으려면 앱 모듈build.gradle 파일에 다음을 포함하세요.

Groovy

android {
    defaultConfig {
        // Required when setting minSdkVersion to 20 or lower
        multiDexEnabled true
    }

    compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
        // Sets Java compatibility to Java 8
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}

Kotlin

android {
    defaultConfig {
        // Required when setting minSdkVersion to 20 or lower
        multiDexEnabled = true
    }

    compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled = true
        // Sets Java compatibility to Java 8
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

dependencies {
    coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.4")
}

다음의 경우 라이브러리 모듈build.gradle 파일에 위 코드 스니펫을 포함해야 할 수 있습니다.

  • 라이브러리 모듈의 계측 테스트가 이러한 언어 API를 직접 또는 라이브러리 모듈이나 모듈의 종속 항목을 통해 사용하는 경우. 이는 누락된 API를 계측 테스트 APK에 제공하기 위함입니다.

  • 라이브러리 모듈에서 린트를 독립적으로 실행하려는 경우. 린트에서 언어 API의 올바른 사용을 인식하고 거짓 경고를 방지할 수 있습니다.

기능별 종속 항목

이전 버전의 Android Gradle 플러그인에서는 모든 기능 모듈이 앱의 기본 모듈에만 종속될 수 있었습니다. Android Gradle 플러그인 4.0.0 이상을 사용하는 경우 이제 다른 기능 모듈에 종속되는 기능 모듈을 포함할 수 있습니다. 즉, 아래 그림과 같이 :video 기능은 기본 모듈에 종속되는 :camera 기능에 종속될 수 있습니다.

기능별 종속 항목

기능 모듈 :video는 기본 :app 모듈에 종속되는 기능 :camera에 종속됩니다.

즉, 앱에서 기능 모듈을 다운로드하도록 요청하면 종속된 다른 기능 모듈도 다운로드됩니다. 앱에 기능 모듈을 생성한 후 모듈의 build.gradle 파일에 기능별 종속 항목을 선언할 수 있습니다. 예를 들면 :video 모듈은 다음과 같이 :camera에 관한 종속 항목을 선언합니다.

Groovy

// In the build.gradle file of the ':video' module.
dependencies {
    // All feature modules must declare a dependency
    // on the base module.
    implementation project(':app')
    // Declares that this module also depends on the 'camera' feature module.
    implementation project(':camera')
    ...
}

Kotlin

// In the build.gradle file of the ':video' module.
dependencies {
    // All feature modules must declare a dependency
    // on the base module.
    implementation(project(":app"))
    // Declares that this module also depends on the 'camera' feature module.
    implementation(project(":camera"))
    ...
}

또한 Android 스튜디오의 기능별 종속 항목 기능을 사용 설정하여 실행 구성을 수정할 때 기능을 지원해야 합니다. 이렇게 하려면 메뉴 바에서 Help > Edit Custom VM Options를 클릭하고 다음 내용을 포함합니다.

-Drundebug.feature.on.feature=true

종속 항목 메타데이터

Android Gradle 플러그인 4.0.0 이상을 사용하여 앱을 빌드할 때 플러그인에는 앱에 컴파일되는 종속 항목을 설명하는 메타데이터가 포함되어 있습니다. 앱을 업로드할 때 Play Console은 이 메타데이터를 검사하여 다음과 같은 이점을 제공합니다.

  • 앱에서 사용하는 SDK 및 종속 항목의 알려진 문제에 관한 알림 받기
  • 문제 해결을 위한 실행 가능한 피드백 받기

데이터는 압축되고 Google Play 서명 키에 의해 암호화되며 출시 앱의 서명 블록에 저장됩니다. 그러나 로컬 중간 빌드 파일에서 <project>/<module>/build/outputs/sdk-dependencies/release/sdkDependency.txt 디렉터리의 메타데이터를 직접 검사할 수 있습니다.

이 정보를 공유하지 않으려면 모듈의 build.gradle 파일에 다음을 포함하여 선택 해제할 수 있습니다.

Groovy

android {
    dependenciesInfo {
        // Disables dependency metadata when building APKs.
        includeInApk = false
        // Disables dependency metadata when building Android App Bundles.
        includeInBundle = false
    }
}

Kotlin

android {
    dependenciesInfo {
        // Disables dependency metadata when building APKs.
        includeInApk = false
        // Disables dependency metadata when building Android App Bundles.
        includeInBundle = false
    }
}

Kotlin DSL 스크립트 파일 지원

이제 Android Gradle 플러그인에서 Kotlin DSL 빌드 스크립트 파일(*.kts)을 지원합니다. Android 스튜디오에서 사용하던 프로젝트 구조 대화상자, 빌드 스크립트 빠른 수정과 같은 특정 IDE 기능을 사용하여 Kotlin 빌드 스크립트 파일을 읽고 쓸 수 있습니다.

CPU 프로파일러 업그레이드

개발자의 의견에 근거하여 Google에서는 두 가지 중요한 방법으로 CPU 프로파일러의 사용자 환경 개선에 노력을 집중했습니다.

첫째, 이전 Android 스튜디오 출시와 비교했을 때 CPU 프로파일러의 CPU 기록 오류율이 많이 감소했습니다.

둘째, 더 직관적인 워크플로를 제공하기 위해 CPU 프로파일러 UI를 개선했습니다. 주목할 만한 UI 변경사항은 다음과 같습니다.

  • 이제 CPU 기록이 기본 프로파일러 타임라인에서 분리되어 더 쉽게 분석할 수 있습니다. 기록된 데이터는 Profiler 창의 왼쪽에 그룹으로 구성됩니다. 창 오른쪽 상단에 있는 옵션 프로파일러의 옵션 아이콘 아이콘을 클릭하거나 그룹 내에서 개별 항목을 드래그 앤 드롭하여 그룹을 위아래로 이동해 목록을 재구성할 수 있습니다.
  • 이제 스레드 활동 타임라인에서 메서드, 함수, 이벤트를 비롯한 모든 스레드 활동을 보면서 더 쉽게 비교 분석할 수 있습니다. 타임라인을 탐색하는 방법에는 여러 가지가 있습니다.
    • 특정 시점에 초점을 맞추려면 왼쪽 상단의 CPU 사용량 차트에서 범위를 드래그합니다.
    • 확대나 축소하려면 Control(MacOS에서는 Command)을 누른 상태에서 마우스 휠을 사용합니다. 왼쪽이나 오른쪽으로 화면 이동하려면 스페이스바를 누른 상태에서 드래그합니다.
    • 또는 세밀하게 확대/축소하려면 W와 A 키를 사용하고 세밀하게 왼쪽과 오른쪽으로 화면 이동하려면 S와 D 키를 사용합니다.
  • 이제 Flame Chart, Top Down, Bottom Up 탭이 오른쪽 열에 표시됩니다. 스레드 그룹에서 시스템 트레이스 기록일 경우에는 스레드가 펼쳐지고 다른 기록 유형일 경우에는 기본적으로 스레드가 접힙니다. 스레드 이름을 더블클릭하거나 Enter 키를 눌러 펼치거나 접습니다.
  • 스크린샷과 같이 시스템 트레이스 UI에도 다음과 같은 개선사항이 포함되어 있습니다.
    • 이제 독특한 색상으로 이벤트를 쉽게 구별할 수 있습니다.
    • 스레드가 스레드 내 트레이스 이벤트 수에 따라 정렬되므로 '더 바쁜' 스레드가 목록에서 상위에 정렬됩니다.
    • 스레드를 하나 이상 선택하여 오른쪽 열에서 선택한 스레드에 관한 분석만 확인할 수 있습니다.
    • 마찬가지로 스레드 내에서 트레이스 이벤트를 선택하여 선택한 이벤트의 분석 데이터를 확인할 수 있습니다.

디자인 도구

이 버전의 Android 스튜디오에는 Layout Inspector, 완전히 새로워진 Motion Editor 등 디자인 도구 업데이트가 포함되어 있습니다.

새 모션 편집기

이제 Android 스튜디오에 MotionLayout 레이아웃 유형에 사용할 수 있는 시각적 디자인 편집기가 포함되어 애니메이션을 더 쉽게 만들고 미리 볼 수 있습니다.

모션 편집기에서는 Android 앱에서 애니메이션의 기초가 되는 MotionLayout 라이브러리의 요소를 조작할 수 있는 간단한 인터페이스가 제공됩니다. 이전 출시에서는 이러한 요소를 만들고 변경할 때 XML 리소스 파일에서 제약 조건을 수동으로 수정해야 했습니다. 이제 시작 및 종료 상태, 키프레임, 전환, 타임라인을 지원하여 모션 편집기에서 XML을 생성할 수 있습니다.

모션 편집기를 사용하는 방법에 관한 자세한 내용은 사용자 가이드를 참고하세요.

Live Layout Inspector

업데이트된 Live Layout Inspector로 레이아웃을 디버그하세요. 이 기능을 사용하면 기기에 배포된 앱의 UI에 관해 유용한 전체 정보를 실시간으로 확인할 수 있습니다.

Layout Inspector 창을 열려면 View > Tools Windows > Layout Inspector로 이동하세요. Live Layout Inspector에는 기존 Layout Inspector와 동일한 기능이 많이 있을 뿐만 아니라 다음의 기능도 포함되어 있습니다.

  • 동적 레이아웃 계층 구조: 기기의 뷰가 변경되면 업데이트됩니다.

동적 레이아웃 계층 구조

  • 속성값 해상도 스택: 소스 코드에서 리소스 속성값의 출처를 조사한 후 속성 창에서 하이퍼링크를 따라 출처 위치로 이동합니다.

속성값 해상도 스택

  • 3D 뷰: 고급 3D 시각화를 통해 런타임 시 앱의 뷰 계층 구조를 확인합니다. 이 기능을 사용하려면 Live Layout Inspector 창에서 레이아웃을 클릭하고 회전하세요.

Layout Inspector: 3D 뷰

앱을 API 수준 29 이상을 실행하는 기기나 에뮬레이터에 배포할 때만 Live Layout Inspector를 사용할 수 있습니다. Live Layout Inspector를 사용 설정하려면 File > Settings > Experimental로 이동하여 Enable Live Layout Inspector옆에 있는 체크박스를 선택합니다. 그런 다음 Layout DisplayLive updates 옆에 있는 체크박스를 클릭합니다.

Layout Validation

Layout Validation은 다양한 기기 및 구성에서 레이아웃을 동시에 미리 볼 수 있는 시각적 도구로, 쉽게 레이아웃 오류를 감지하고 액세스 가능한 앱을 만드는 데 도움이 됩니다.

Layout Validation 창에서 맞춤설정된 레이아웃 미리보기 만들기

이 기능은 IDE 창의 오른쪽 상단에 있는 Layout Validation 탭을 클릭하여 액세스할 수 있습니다.

Android 스튜디오의 Layout Validation 탭

Layout Validation 창에서 다음과 같은 네 가지 구성 세트 중에서 선택할 수 있습니다.

  • Pixel Devices: 다양한 Pixel 기기에서 앱을 미리 봅니다.
  • Custom: 화면 방향이나 언어와 같은 맞춤 디스플레이 옵션을 사용하여 앱을 미리 봅니다.
  • Color Blind: 일반적인 색맹 유형 시뮬레이션을 사용하여 앱을 미리 봅니다.
  • Font Sizes: 다양한 글꼴 크기를 사용하여 앱을 미리 봅니다.

Layout Validation 사용에 관한 자세한 내용은 Layout Inspector로 레이아웃 디버그를 참고하세요.

코드 축소기 규칙을 위한 스마트 편집기 기능

이제 Android 스튜디오에서 구문 강조표시, 코드 작성, 오류 검사 등 R8의 코드 축소기 규칙 파일을 열 때 스마트 편집기 기능을 사용할 수 있습니다. 편집기가 Android 스튜디오 프로젝트와 통합되어 모든 클래스, 메서드, 필드에 모든 기호를 작성하고 빠른 탐색과 리팩터링을 할 수 있습니다.

R8 규칙 파일 수정 시 스마트 편집기 기능

Kotlin Android 라이브 템플릿

이제 Android 스튜디오에 Kotlin 클래스용 Android 라이브 템플릿이 포함됩니다. 예를 들면 이제 toast를 입력한 후 Tab 키를 눌러 토스트 메시지를 빠르게 삽입할 수 있습니다. 사용 가능한 라이브 템플릿의 전체 목록을 보려면 메뉴 바에서 File > Settings(macOS의 경우 Android Studio > Preferences)를 클릭하여 Editor > Live Templates로 이동합니다.

프래그먼트 마법사 및 새 프래그먼트 템플릿

이제 탐색 편집기에서 File > New > Fragment > Gallery로 이동하거나 Create new destination을 클릭하면 새 Android 프래그먼트 마법사와 프래그먼트 템플릿을 사용할 수 있습니다.

Android Emulator의 카메라 지원 확장

Android 11 이미지를 사용할 때 Android Emulator 카메라에는 다음과 같은 새로운 기능이 포함됩니다.

  • RAW 캡처
  • YUV 재처리
  • 레벨 3 기기
  • 로지컬 카메라 지원

Android 11용 개발에 관한 자세한 내용은 Android 11 문서를 참고하세요.

이제 C++ 코드 편집기에서 clangd 사용 가능

Android 스튜디오의 C++ 언어 지원의 기반 기술인 Jetbrains CLion이 이제 LLVM clangdclang-tidy에 기반한 검사 엔진을 사용하여 C/C++ 코드 완성 속도를 높이고 clang-tidy와의 더 원활한 통합을 제공합니다.

이제 Android 스튜디오 C++ 코드 편집기에서 사용할 수 있는 clangd 및 clang-tidy가 모두 오픈소스 LLVM 추가 도구의 일부입니다.

  • clangd는 코드 완성, 편집기에서 오류 메시지 컴파일, 정의 탐색으로 이동 기능을 제공합니다.
  • clang-tidy는 일반적인 프로그래밍 오류를 진단하고 수정하는 확장 가능한 프레임워크가 포함된 C++ 린터 도구입니다.

이전 출시에서 Android 스튜디오 사용자는 NDK를 통해 clang-tidy를 사용할 수 있었습니다. 이러한 변경으로 Android 스튜디오는 더 이상 Clang-tidy 기능 사용을 위해 NDK에 의존하지 않습니다.

local.properties 파일의 ndk.dir 설정이 지원 중단됨

ndk.dir 값을 더 이상 앱의 local.properties 파일에 설정하지 않아야 하고 이 ndk.dir 설정 지원은 향후 버전에서 삭제될 예정입니다. Android Gradle 플러그인은 기본적으로 NDK 버전을 설정하지만 특정 버전의 NDK가 필요한 경우 build.gradleandroid.ndkVersion을 설정하면 됩니다.

NDK 설정에 관한 자세한 내용은 NDK 및 CMake 설치 및 구성을 참고하세요.

IntelliJ IDEA 2019.3.3

핵심 Android 스튜디오 IDE가 2019.3.3 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

버전 2019.3.3과 함께 누적적으로 포함된 다른 IntelliJ 버전의 개선사항에 관한 자세한 내용은 다음 페이지를 참고하세요.

3.6(2020년 2월)

Android 스튜디오 3.6은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

또한 이번 버전을 출시하는 데 도움을 준 모든 커뮤니티 참여자분들께 감사의 인사를 전합니다.

3.6.3(2020년 4월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

3.6.2(2020년 3월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

3.6.1(2020년 2월)

이번 소규모 업데이트는 다양한 버그 수정을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

디자인 도구

이 Android 스튜디오 버전에는 Layout Editor, Resource Manager 등 여러 디자인 도구의 업데이트가 포함되어 있습니다.

디자인 편집기의 분할 뷰 및 확대/축소

분할 뷰는 디자인 뷰와 텍스트 뷰를 동시에 표시합니다.

이 버전에는 시각적 디자인 편집기의 다음과 같은 업데이트가 포함되었습니다.

  • 이제 Layout Editor, Navigation Editor와 같은 디자인 편집기에서 UI의 디자인코드 뷰를 동시에 확인할 수 있는 분할 뷰를 제공합니다. 이제 편집기 창의 오른쪽 상단에 뷰 옵션 간 전환할 수 있는 다음 세 가지 버튼 뷰 아이콘이 표시됩니다.

    • 분할 뷰를 사용 설정하려면 Split 아이콘 분할 뷰 아이콘을 클릭합니다.
    • XML 소스 뷰를 사용 설정하려면 Source 아이콘 소스 뷰 아이콘을 클릭합니다.
    • 디자인 보기를 사용 설정하려면 Design 아이콘 디자인 보기 아이콘을 클릭합니다.
  • 디자인 편집기의 확대/축소 및 화면 이동 컨트롤이 편집기 창의 오른쪽 하단에 있는 플로팅 패널로 이동했습니다.

자세한 내용은 Layout Editor로 UI 빌드를 참고하세요.

Color Picker Resource 탭

이제 XML 또는 디자인 도구에서 색상 선택 도구를 사용할 때 앱의 색상 리소스 값을 빠르게 업데이트할 수 있도록 IDE에서 색상 리소스 값을 자동으로 채웁니다.

색상 값이 채워진 색상 선택 도구

Resource Manager

Resource Manager에는 다음과 같은 업데이트가 포함되어 있습니다.

  • Resource Manager에서 이제 대부분의 리소스 유형을 지원합니다.
  • 리소스를 검색할 때 이제 Resource Manager에서 모든 프로젝트 모듈의 결과를 표시합니다. 이전에는 선택된 모듈에서만 결과를 반환했습니다.
  • 필터 버튼을 사용하면 로컬 종속 모듈, 외부 라이브러리, Android 프레임워크의 리소스를 확인할 수 있습니다. 필터를 사용하여 테마 속성을 표시할 수도 있습니다.
  • 이제 가져오기 과정 동안 리소스 위의 텍스트 상자를 클릭하여 리소스의 이름을 바꿀 수 있습니다.

자세히 알아보려면 Resource Manager를 사용하여 앱의 UI 리소스 관리하기를 참고하세요.

Android Gradle 플러그인 업데이트

Android Gradle 플러그인의 최신 버전에는 빌드 속도에 최적화, Maven 게시 플러그인 지원, 뷰 결합 지원 등 여러 업데이트가 포함되어 있습니다. 자세한 내용은 전체 출시 노트를 참고하세요.

뷰 결합

뷰 결합을 사용하면 각 XML 레이아웃 파일의 결합 클래스를 생성하여 뷰와 상호작용하는 코드를 더 쉽게 작성할 수 있습니다. 이 클래스에는 관련 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됩니다.

뷰 결합이 findViewById()를 대체하므로 잘못된 뷰 ID로 인해 null 포인터 예외가 발생할 위험이 없습니다.

뷰 결합을 사용 설정하려면 Android Gradle 플러그인 3.6.0 이상을 사용하고 각 모듈의 build.gradle 파일에 다음을 포함해야 합니다.

Groovy

android {
    buildFeatures.viewBinding = true
}

Kotlin

android {
    buildFeatures.viewBinding = true
}

변경사항 적용

이제 Apply Code Changes Apply Code Changes 아이콘 또는 Apply Changes and Restart Activity Apply Changes 아이콘를 클릭하여 실행 중인 앱에 클래스를 추가한 후 코드 변경사항을 배포할 수 있습니다.

이 두 작업의 차이점에 관해 자세히 알아보려면 변경사항 적용을 참고하세요.

인스턴트 앱 지원을 사용 설정하는 메뉴 옵션 리팩터링

이제 다음과 같이 언제든지 앱 프로젝트를 생성한 후 기본 모듈을 즉시 사용 설정할 수 있습니다.

  1. 메뉴 바에서 View > Tool Windows > Project를 선택하여 Project 패널을 엽니다.
  2. 보통 '앱'이라고 하는 기본 모듈을 마우스 오른쪽 버튼으로 클릭한 후 Refactor > Enable Instant Apps Support를 선택합니다.
  3. 대화상자가 표시되면 드롭다운 메뉴에서 기본 모듈을 선택합니다.
  4. OK를 클릭합니다.

자세한 내용은 Google Play 인스턴트 개요를 참고하세요.

APK Analyzer에서 클래스 및 메서드 바이트 코드 가독화

APK Analyzer를 사용하여 DEX 파일을 검사할 때 다음과 같이 클래스 및 메서드 바이트 코드를 가독화할 수 있습니다.

  1. 메뉴 바에서 Build > Analyze APK를 선택합니다.
  2. 대화상자가 나타나면 검사하려는 APK로 이동하여 선택합니다.
  3. Open을 클릭합니다.
  4. APK Analyzer에서 검사하려는 DEX 파일을 선택합니다.
  5. DEX 파일 뷰어에서 분석 중인 APK의 ProGuard 매핑 파일을 로드합니다.
  6. 검사하려는 클래스나 메서드를 마우스 오른쪽 버튼으로 클릭하고 Show bytecode를 선택합니다.

네이티브 도구

다음 업데이트는 Android 스튜디오에서 네이티브(C/C++) 개발을 지원합니다.

Kotlin 지원

이전에 자바로 지원되었던 Android 스튜디오의 다음과 같은 NDK 기능이 이제 Kotlin으로도 지원됩니다.

  • JNI 선언에서 상응하는 C/C++ 구현 함수로 이동합니다. 관리되는 소스 코드 파일의 행 번호 근처에 있는 C 또는 C++ 항목 아이콘 위로 마우스를 가져가 이 매핑을 확인하세요.
  • JNI 선언의 스터브 구현 함수를 자동으로 생성합니다. 먼저 JNI 선언을 정의한 다음 C/C++ 파일에 'jni' 또는 메서드 이름을 입력하여 활성화하세요.

  • 사용되지 않은 네이티브 구현 함수는 소스 코드에 경고로 강조표시됩니다. 구현이 누락된 JNI 선언도 오류로 강조표시됩니다.

  • 네이티브 구현 함수의 이름을 바꾸면(리팩터링하면) 상응하는 모든 JNI 선언이 업데이트됩니다. 네이티브 구현 함수를 업데이트하려면 JNI 선언의 이름을 바꾸세요.

  • 암시적으로 바인드된 JNI 구현의 서명 확인

다른 JNI 개선사항

Android 스튜디오의 코드 편집기는 이제 개선된 유형 힌트, 자동 완성, 검사, 코드 리팩터링 등 더 원활한 JNI 개발 워크플로를 지원합니다.

네이티브 라이브러리용 APK 새로고침

프로젝트의 APK가 IDE 외부에서 업데이트될 경우에는 더 이상 새 프로젝트를 만들 필요가 없습니다. Android 스튜디오에서는 APK의 변경사항을 감지하고 다시 가져올 수 있는 옵션을 제공합니다.

Kotlin 전용 APK 소스 연결

이제 사전 빌드 APK를 프로파일링하고 디버그할 때 Kotlin 전용 외부 APK 소스를 연결할 수 있습니다. 자세한 내용은 Kotlin/자바 소스 연결을 참고하세요.

메모리 프로파일러에서 누수 감지

이제 메모리 프로파일러의 힙 덤프를 분석할 때 Android 스튜디오에서 앱의 ActivityFragment 인스턴스에서 메모리 누수가 의심되는 프로파일링 데이터를 필터링할 수 있습니다.

필터에 표시되는 데이터 유형은 다음과 같습니다.

  • 삭제되었지만 아직 참조되고 있는 Activity 인스턴스
  • 유효한 FragmentManager가 없지만 아직 참조되고 있는 Fragment 인스턴스

다음과 같은 특정 상황에서는 필터에 거짓양성이 표시됩니다.

  • Fragment를 생성하였지만 아직 사용하지 않은 경우
  • Fragment가 캐시되고 있지만 FragmentTransaction의 일부가 아닌 경우

이 기능을 사용하려면 먼저 힙 덤프를 캡처하거나 Android 스튜디오로 힙 덤프 파일을 가져옵니다. 메모리 누수가 발생할 수 있는 프래그먼트와 활동을 표시하려면 메모리 프로파일러의 힙 덤프 창에서 Activity/Fragment Leaks 체크박스를 선택합니다.

프로파일러: 메모리 누수 감지

메모리 누수를 일으키는 힙 덤프 필터링

에뮬레이터

Android 스튜디오 3.6을 사용하면 아래에 설명된 대로 Android Emulator 29.2.7 이상에 포함된 여러 업데이트를 활용할 수 있습니다.

위치 지원 기능 개선

Android Emulator 29.2.7 이상에서는 GPS 좌표와 경로 정보를 에뮬레이션할 수 있는 기능을 추가로 지원합니다. 에뮬레이터 Extended controls를 열면 이제 Location 탭이 Single pointsRoutes의 두 탭 아래에 구성됩니다.

Single points

Single points 탭에서 Google 지도 WebView를 사용하여 스마트폰이나 브라우저에서 Google 지도를 사용할 때처럼 관심 장소를 검색할 수 있습니다. 지도에서 위치를 검색하거나 클릭할 때 지도 하단에서 Save point를 선택하여 위치를 저장할 수 있습니다. 저장된 모든 위치는 Extended controls 창 오른쪽에 표시됩니다.

에뮬레이터 위치를 지도에서 선택한 위치로 설정하려면 Extended controls 창의 오른쪽 하단에 있는 Set location 버튼을 클릭하세요.

에뮬레이터 Extended Controls의 Single Points 탭

Routes

Single points 탭과 마찬가지로 Routes 탭에서는 두 개 이상의 위치 간에 경로를 만드는 데 사용할 수 있는 Google 지도 WebView를 제공합니다. 경로를 만들고 저장하려면 다음 단계를 따르세요.

  1. 지도뷰에서 텍스트 필드를 사용하여 경로의 첫 번째 목적지를 검색합니다.
  2. 검색결과에서 위치를 선택합니다.
  3. 탐색 Google 지도의 탐색 버튼 버튼을 선택합니다.
  4. 지도에서 경로의 출발지를 선택합니다.
  5. (선택사항) 경로에 경유지를 추가하려면 Add destination을 클릭합니다.
  6. 지도뷰에서 Save route를 클릭하여 경로를 저장합니다.
  7. 경로 이름을 지정하고 Save를 클릭합니다.

저장한 경로를 따라 에뮬레이터를 시뮬레이션하려면 Saved routes 목록에서 경로를 선택하고 Extended controls 창의 오른쪽 하단에 있는 Play route를 클릭합니다. 시뮬레이션을 중지하려면 Stop route를 클릭하세요.

에뮬레이터 Extended Controls의 Routes 탭

지정된 경로에 따라 에뮬레이터를 계속 시뮬레이션하려면 Repeat playback 옆에 있는 스위치를 사용 설정합니다. 에뮬레이터가 지정된 경로를 따라가는 속도를 변경하려면 Playback speed 드롭다운에서 옵션을 선택합니다.

다중 디스플레이 지원

Android Emulator를 사용하면 이제 맞춤설정 가능한 측정기준을 지원하는 여러 디스플레이에 앱을 배포하고 멀티 윈도우다중 디스플레이를 지원하는 앱을 테스트할 수 있습니다. 가상 기기가 실행되는 동안 다음과 같이 최대 두 개의 디스플레이를 추가할 수 있습니다.

  1. Extended controls를 열고 Displays 탭으로 이동합니다.
  2. Add secondary display를 클릭하여 다른 디스플레이를 추가합니다.
  3. Secondary displays 아래 드롭다운 메뉴에서 다음 작업을 실행합니다.

    1. 미리 설정된 가로세로 비율 중 하나를 선택합니다.
    2. custom을 선택하고 맞춤 디스플레이의 height, width, dpi를 설정합니다.
  4. (선택사항) Add secondary display를 클릭하여 세 번째 디스플레이를 추가합니다.

  5. Apply changes를 클릭하여 지정된 디스플레이를 실행 중인 가상 기기에 추가합니다.

에뮬레이터 Extended Controls Display 탭에 여러 디스플레이 추가

Android Automotive OS용 새 가상 기기 및 프로젝트 템플릿

Android 스튜디오를 사용하여 새 프로젝트를 만들 때 이제 Create New Project 마법사의 Automotive 탭에서 No Activity, Media service, Messaging service의 세 가지 템플릿을 선택할 수 있습니다. 기존 프로젝트의 경우 Android Automotive 기기용 지원 기능을 추가하려면 메뉴 바에서 File > New > New Module을 선택하고 Automotive Module을 선택해야 합니다. 그러면 Create New Module 마법사에서 Android Automotive 프로젝트 템플릿 중 하나를 사용하여 새 모듈을 만드는 과정을 안내합니다.

Android Automotive 프로젝트 템플릿 선택.

또한 이제 Virtual Device Configuration 마법사의 Automotive 탭에서 다음 옵션 중 하나를 선택하여 Android Automotive OS 기기용 Android Virtual Device(AVD)를 만들 수 있습니다.

  1. Polestar 2: Polestar 2 헤드 유닛을 에뮬레이션하는 AVD를 만듭니다.
  2. Automotive (1024p landscape): 일반 1024x768px Android Automotive 헤드 유닛용 AVD를 만듭니다.

Android Automotive 가상 기기 선택

재개 가능한 SDK 다운로드

이제 Android 스튜디오에서 SDK Manager를 사용하여 SDK 구성요소와 도구를 다운로드할 때 네트워크 문제 등으로 다운로드가 중단되는 경우 다운로드를 처음부터 다시 시작하는 대신 중단된 부분부터 재개할 수 있습니다. 이 개선사항은 인터넷 연결이 불안정한 상태에서 Android Emulator나 시스템 이미지와 같은 대용량 파일을 다운로드하는 경우에 특히 유용합니다.

또한 백그라운드에서 SDK 다운로드 작업을 실행 중인 경우 상태 표시줄의 컨트롤을 사용하여 다운로드를 일시중지하거나 다시 시작할 수 있습니다.

다운로드를 일시중지하거나 이어서 할 수 있는 새로운 컨트롤이 있는 상태 표시줄의 백그라운드 다운로드 작업

다운로드를 일시중지하거나 이어서 할 수 있는 새로운 컨트롤이 있는 상태 표시줄의 백그라운드 다운로드 작업

Win32 지원 중단됨

Windows 32비트 버전의 Android 스튜디오는 2019년 12월 이후 더 이상 업데이트를 받을 수 없으며 2020년 12월 이후에는 더 이상 지원을 받을 수 없습니다. Android 스튜디오를 계속 사용할 수는 있습니다. 하지만 추가 업데이트를 받으려면 워크스테이션을 Windows 64비트 버전으로 업그레이드하세요.

자세한 내용은 Windows 32비트 지원 중단 블로그를 확인해 보세요.

Gradle 동기화 시간 최적화를 위한 새로운 옵션

이전 출시의 Android 스튜디오에서는 Gradle 동기화 중에 모든 Gradle 작업 목록을 가져왔습니다. 대규모 프로젝트의 경우 작업 목록을 가져오면 동기화 시간이 느려질 수 있습니다.

Gradle 동기화 성능을 향상하려면 File > Settings > Experimental로 이동하여 Do not build Gradle task list during Gradle sync를 선택합니다.

이 옵션을 사용 설정하면 동기화 중에 Android 스튜디오에서 작업 목록 빌드를 건너뛰어 Gradle 동기화를 더 빨리 완료하고 UI 응답을 개선할 수 있습니다. IDE에서 작업 목록 빌드를 건너뛰면 Gradle 패널의 작업 목록이 비어 있고 빌드 파일의 작업 이름 자동 완성이 작동하지 않습니다.

Gradle의 오프라인 모드를 전환할 새 위치

Gradle의 오프라인 모드를 사용하거나 사용 중지하려면 먼저 메뉴 바에서 View > Tool Windows > Gradle을 선택합니다. 그런 다음 Gradle 창의 상단 근처에서 Toggle Offline Mode Gradle 패널의 Gradle 오프라인 버튼를 클릭합니다.

IntelliJ IDEA 2019.2

핵심 Android 스튜디오 IDE가 2019.2 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

버전 2019.2와 함께 누적적으로 포함된 다른 IntelliJ 버전의 개선사항에 관한 자세한 내용은 다음 페이지를 참고하세요.

커뮤니티 참여자

버그를 발견하고 Android 스튜디오 3.5 개선을 위한 다른 방법을 찾도록 도와주신 모든 커뮤니티 참여자분께 감사의 말씀을 전합니다. 특히 버그를 신고해 주신 다음 분들께 감사드립니다.

  • 앨버트 로
  • 알렉세이 로트
  • 안드레아 레간자
  • 베네닉트 콜브
  • 세자르 푸에르타
  • 커티스 크로치
  • 데미언 비초레크
  • 댄 류
  • 데이비드 버스트롬
  • 디판슈
  • 에고르 안드레비치
  • 엘리 그래버
  • 에민 코칼라리
  • 에반 타타르카
  • 프란티섹 나기
  • 그레그 모엔스
  • 한네스 아클라이트너
  • 한스 페터 아이데
  • 헤닝 벙크
  • 휴고 비세르
  • 이고르 에스코도르
  • 이냐키 빌라르
  • 자벤티라 리에나타
  • 조 로저스
  • 크리스토퍼 대니얼슨
  • 리란 바르시사
  • 루이스 캐드
  • 로란트 핀터
  • 루카스 바실코프스키
  • 루크 필케
  • 말빈 수탄토
  • 마사토시 쿠보데
  • 매튜 윈터스
  • 마이클 베일리
  • 미할 고르니
  • 미하이 네악수
  • 마이크 스카멜
  • 몬테 크레아소르
  • 넬슨 오사키
  • 넬슨 오사키
  • 닉 피르마니
  • 니클라스 안스만 기어츠
  • 니클라스 크론
  • 니콜라스 리히트마이어
  • 니에크 하아르만
  • 닐스 반 호브
  • 니클라스 바우디
  • 레나토 곤칼베스
  • 로어 그뢴모
  • 루슬란 바라토프
  • 시난 코작
  • 슬라보미르 체르빈스키
  • 스테판 울프
  • 스테판 드이미코
  • 타오 왕
  • 토마스 클라덱
  • 토마스 프로차즈카
  • 토니 로발릭
  • 토르뵈른 쇠를리
  • 워렌 허
  • 옌치 린
  • 잭 스위어스
  • 3.5(2019년 8월)

    Android 스튜디오 3.5는 주요 버전으로, Project Marble의 결과입니다. Android 스튜디오 3.3 버전부터 진행된 Project Marble 이니셔티브는 여러 출시에 걸쳐 IDE의 세 가지 주요 영역인 시스템 상태, 기능 개선 및 버그 수정 향상에 중점을 두고 있습니다.

    이 업데이트 및 기타 Project Marble 업데이트에 관한 자세한 내용은 Android 개발자 블로그 게시물 또는 아래 섹션을 참고하세요.

    또한 이번 출시에 도움을 주신 모든 커뮤니티 참여자 여러분께 감사의 인사를 드리고 싶습니다.

    3.5.3(2019년 12월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다.

    3.5.2(2019년 11월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

    3.5.1(2019년 10월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

    Project Marble: 시스템 상태

    이 섹션에서는 시스템 상태 개선에 중점을 둔 Android 스튜디오 3.5의 변경사항에 관해 설명합니다.

    권장 메모리 설정

    이제 Android 스튜디오는 코어 IDE, Gradle 데몬 및 Kotlin 데몬과 같이 OS가 Android 스튜디오 프로세스에 할당해야 하는 최대 RAM 양을 늘려 성능을 개선할 수 있음을 감지하면 이 사실을 알려줍니다. 알림에서 작업 링크를 클릭하여 권장 설정을 수락하거나 File > Settings(macOS에서는 Android Studio > Preferences)를 선택한 후 Appearance & Behavior > System Settings 아래에서 Memory Settings 섹션을 찾아 이러한 설정을 수동으로 조정할 수 있습니다. 자세한 내용은 최대 힙 크기를 참고하세요.

    권장 메모리 설정 관련 알림

    권장 메모리 설정 관련 알림

    메모리 사용량 보고서

    Android 스튜디오의 메모리 문제는 때때로 재현하고 신고하기 어렵습니다. 이 문제를 해결하는 데 도움이 되도록 Android 스튜디오에서는 메뉴 바에서 Help > Analyze Memory Usage를 클릭하여 메모리 사용량 보고서를 생성할 수 있습니다. 이렇게 보고서를 생성할 때 IDE는 메모리 문제의 원인을 파악할 수 있도록 지원하기 위해 개인 정보용 데이터를 Android 스튜디오 팀에 전송할지 여부를 묻기 전에 이러한 데이터를 로컬에서 삭제합니다. 자세한 내용은 메모리 사용량 보고서 실행을 참고하세요.

    메모리 사용량 보고서

    메모리 사용량 보고서

    Windows: 바이러스 백신 파일 I/O 최적화

    Android 스튜디오는 이제 특정 프로젝트 디렉터리가 실시간 바이러스 백신 검사에서 제외되는지 여부를 자동으로 확인합니다. 조정을 통해 빌드 성능을 개선할 수 있을 때 Android 스튜디오는 이 사실을 알리고 바이러스 백신 구성을 최적화하는 방법을 안내해줍니다. 자세한 내용은 바이러스 백신 소프트웨어가 빌드 속도에 미치는 영향 최소화를 참고하세요.

    Project Marble: 기능 개선

    이 섹션에서는 기존 기능의 개선에 중점을 둔 Android 스튜디오 3.5의 변경사항에 관해 설명합니다.

    변경사항 적용

    Apply Changes를 사용하면 앱을 다시 시작하지 않고, 경우에 따라 현재 활동을 다시 시작하지 않고 코드 및 리소스 변경사항을 실행 중인 앱에 푸시할 수 있습니다. Apply Changes는 앱의 상태를 보존하는 완전히 새로운 방법을 구현합니다. APK의 바이트 코드를 다시 작성한 Instant Run과 달리 Apply Changes는 Android 8.0(API 수준 26) 이상에서 지원되는 런타임 계측을 활용하여 클래스를 즉시 재정의합니다.

    자세히 알아보려면 Apply Changes를 참고하세요.

    Apply Changes를 위한 툴바 버튼

    Apply Changes를 위한 툴바 버튼

    앱 배포 흐름

    IDE에는 앱을 배포할 기기를 빠르게 선택할 수 있는 새로운 드롭다운 메뉴가 있습니다. 이 메뉴에는 한 번에 여러 기기에서 앱을 실행할 수 있게 하는 새로운 옵션도 포함되어 있습니다.

    대상 기기 드롭다운 메뉴

    대상 기기 드롭다운 메뉴

    Gradle 동기화 및 캐시 감지 향상

    IDE는 이제 Gradle이 하드 디스크 사용을 줄일 때 언제 빌드 캐시를 주기적으로 지우는지를 더 잘 감지합니다. 이전 버전에서는 이 상태로 인해 IDE가 종속 항목 누락을 보고하고 Gradle 동기화가 실패했습니다. 이제 IDE는 필요에 따라 종속 항목을 간단히 다운로드하여 Gradle 동기화가 성공적으로 완료될 수 있도록 합니다.

    빌드 오류 출력 향상

    Build Build 창 아이콘 창은 이제 다음 빌드 프로세스의 파일 링크 및 보고된 오류 행과 같은 더 나은 오류 보고를 제공합니다.

    • AAPT 컴파일 및 링크
    • R8 및 ProGuard
    • 덱싱
    • 리소스 병합
    • XML 파일 파싱
    • Javac, Kotlinc 및 CMake 컴파일

    프로젝트 업그레이드

    IDE 및 Android Gradle 플러그인을 업데이트하는 데 도움이 되는 추가 정보와 작업을 제공하도록 업데이트 환경을 개선했습니다. 예를 들어 추가 동기화 및 빌드 오류에는 업데이트 시 오류를 완화하는 데 도움이 되는 작업이 포함됩니다.

    Android Gradle 플러그인과 같은 다른 구성요소와 독립적으로 IDE를 업데이트할 수 있다는 사실에 유의해야 합니다. 따라서 최신 버전이 출시되는 즉시 IDE를 안전하게 업데이트하고 나중에 다른 구성요소를 업데이트할 수 있습니다.

    Layout Editor

    Android 스튜디오 3.5에는 레이아웃 시각화, 관리 및 상호작용과 관련한 몇 가지 개선사항이 포함되어 있습니다.

    ConstraintLayout 작업 시 Attributes 패널의 새로운 Constraints 섹션에는 선택한 UI 구성요소의 제약 조건 관계가 나열됩니다. 디자인 화면 또는 제약 조건 목록에서 제약 조건을 선택하여 두 영역의 제약 조건을 강조표시할 수 있습니다.

    선택한 UI 요소의 제약 조건 관계

    선택한 UI 요소의 제약 조건 관계

    마찬가지로 이제 제약 조건을 선택하고 Delete 키를 눌러 제약 조건을 삭제할 수 있습니다. 또한 Control 키(macOS에서는 Command)를 누른 채 제약 조건 앵커를 클릭하여 제약 조건을 삭제할 수도 있습니다. 참고로 Control 또는 Command 키를 누른 채 앵커 위로 마우스를 가져가면 관련 제약 조건이 빨간색으로 바뀌어 제약 조건을 클릭하여 삭제할 수 있음을 나타냅니다.

    뷰를 선택하면 다음 이미지에서와 같이 Attributes 패널의 Constraint Widget 섹션에서 + 아이콘을 클릭하여 제약 조건을 생성할 수 있습니다. 개발자가 새 제약 조건을 생성하면 이제 Layout Editor는 제약 조건을 선택하여 강조표시함으로써 방금 추가된 항목과 관련한 즉각적인 시각적 피드백을 제공합니다.

    제약 조건 위젯을 사용하여 제약 조건을 생성하는 방법을 보여주는 애니메이션

    제약 조건 위젯을 사용하여 제약 조건 생성

    제약 조건을 생성할 때 Layout Editor에는 이제 제약 가능한 적합한 앵커 포인트만 표시됩니다. 이전에는 제약 가능 여부와 관계없이 Layout Editor가 모든 뷰에서 모든 앵커 포인트를 강조표시했습니다. 또한 이제 파란색 오버레이가 제약 조건의 대상을 강조표시합니다. 이 강조표시는 다른 구성요소와 겹치는 구성요소를 제약하려고 할 때 특히 유용합니다.

    Android 스튜디오 3.4에서 겹치는 구성요소의 제약 조건을 생성하는 방법을 보여주는 애니메이션

    Android 스튜디오 3.4에서 겹치는 구성요소의 제약 조건 생성

    Android 스튜디오 3.5에서 겹치는 구성요소의 제약 조건을 생성하는 방법을 보여주는 애니메이션

    Android 스튜디오 3.5에서 겹치는 구성요소의 제약 조건 생성

    위의 업데이트 외에도 Android 스튜디오 3.5에는 다음과 같은 Layout Editor 개선사항이 포함되어 있습니다.

    • 이제 Constraint Widget 및 기본 여백 드롭다운을 통해 여백에 크기 리소스를 사용할 수 있습니다.
    • Layout Editor 툴바에서 디자인 화면의 크기를 결정하는 기기 목록이 업데이트되었습니다. 또한 크기 조절 중 맞추기 동작이 개선되었으며, 이제 디자인 화면의 크기 조절 핸들이 항상 표시됩니다. 크기를 조절할 때 일반적인 기기 크기를 표시하는 새 오버레이가 나타납니다.
    • Layout Editor에는 일관성을 향상하고 구성요소, 텍스트 및 제약 조건 간의 대비를 줄이는 새로운 색 구성표가 있습니다.
    • 청사진 모드에는 이제 텍스트가 보이지 않는 일부 구성요소의 텍스트 지원이 포함되어 있습니다.

    이러한 변경사항에 관한 자세한 내용은 Android 스튜디오 Project Marble: Layout Editor를 참고하세요.

    데이터 결합

    IDE는 데이터 결합의 증분 주석 처리 지원을 추가할 뿐만 아니라 XML로 데이터 결합 표현식을 생성할 때 스마트 편집기 기능 및 성능을 개선했습니다.

    Android 스튜디오 3.4에서 코드 편집기 성능을 보여주는 애니메이션

    Android 스튜디오 3.4의 코드 편집기 성능

    Android 스튜디오 3.5에서 코드 편집기 성능을 보여주는 애니메이션

    Android 스튜디오 3.5의 향상된 코드 편집기 성능

    C/C++ 프로젝트 지원 향상

    Android 스튜디오 3.5에는 C/C++ 프로젝트 지원을 향상하는 몇 가지 변경사항이 포함되어 있습니다.

    단일 변형 동기화를 위한 Build Variants 패널 개선

    이제 Build Variants 패널에서 활성 빌드 변형과 활성 ABI를 모두 지정할 수 있습니다. 이 기능은 모듈별 빌드 구성을 간소화하고 Gradle 동기화 성능도 향상할 수 있습니다.

    자세히 알아보려면 빌드 변형 변경을 참고하세요.

    ABI에 의한 단일 변형 선택을 보여주는 Build Variants 패널

    ABI에 의한 단일 변형 선택이 표시된 Build Variants 패널

    NDK 병렬 버전

    이제 여러 NDK 버전을 함께 사용할 수 있습니다. 이 기능은 프로젝트를 구성할 때 더 많은 유연성을 제공합니다. 예를 들어 동일한 시스템에서 다양한 버전의 NDK를 사용하는 프로젝트가 있을 때 프로젝트를 더 유연하게 구성할 수 있습니다.

    프로젝트에서 Android Gradle 플러그인 3.5.0 이상을 사용한다면 프로젝트의 각 모듈에서 사용해야 하는 NDK 버전도 지정할 수 있습니다. 이 기능을 사용하면 재현 가능한 빌드를 생성하고 NDK 버전과 Android Gradle 플러그인 간의 비호환성을 완화할 수 있습니다.

    자세히 알아보려면 NDK, CMake 및 LLDB의 설치 및 구성을 참고하세요.

    Chrome OS 지원

    이제 Android 스튜디오는 시스템 요구사항에서 확인할 수 있는 HP Chromebook x360 14, Acer Chromebook 13/Spin 13과 같은 여러 Chrome OS 기기를 공식적으로 지원합니다. 시작하려면 호환되는 Chrome OS 기기에 Android 스튜디오를 다운로드하고 설치 안내를 따르세요.

    기능 모듈의 조건부 제공

    조건부 제공을 사용하면 앱 설치 중에 기능 모듈을 자동으로 다운로드하기 위한 특정한 기기 설정 요구사항을 지정할 수 있습니다. 예를 들어 증강 현실(AR)을 지원하는 기기에서만 앱 설치 시에 AR을 제공하도록 하는 기능이 포함된 기능 모듈을 구성할 수 있습니다.

    이 제공 메커니즘을 통해 현재 다음과 같은 기기 설정을 기반으로 앱 설치 시 모듈의 다운로드를 관리할 수 있습니다.

    • 기기 하드웨어 및 소프트웨어 기능(OpenGL ES 버전 포함)
    • 사용자 국가
    • API 수준

    기기가 지정된 모든 요구사항을 충족하지 않으면 모듈이 앱 설치 시에 다운로드되지 않습니다. 그러나 앱에서 나중에 Play Core 라이브러리를 사용하여 주문형으로 모듈을 다운로드하도록 요청할 수 있습니다. 자세한 내용은 조건부 제공 구성을 참고하세요.

    IntelliJ IDEA 2019.1

    핵심 Android 스튜디오 IDE가 2019.1 출시를 통해 테마 맞춤설정과 같은 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

    Android 스튜디오에 포함된 마지막 IntelliJ 버전은 2018.3.4입니다. 이 Android 스튜디오 버전에 누적적으로 포함된 다른 IntelliJ 버전의 개선사항에 관한 자세한 내용은 다음 버그 수정 업데이트를 참고하세요.

    Android Gradle 플러그인 3.5.0 업데이트

    증분 주석 처리 및 캐시 가능한 단위 테스트 지원 향상과 같은 Android Gradle 플러그인 3.5.0의 새로운 기능에 관한 자세한 내용은 출시 노트를 참고하세요.

    커뮤니티 참여자

    버그를 발견하고 Android 스튜디오 3.5 개선을 위한 다른 방법을 찾도록 도와주신 모든 커뮤니티 참여자 여러분께 감사의 말씀을 전합니다. 특히 P0 및 P1 버그를 신고해 주신 다음 분들께 감사드립니다.

    3.4(2019년 4월)

    Android 스튜디오 3.4는 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

    3.4.2(2019년 7월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

    3.4.1(2019년 5월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

    3.4.0 알려진 문제

    • Android Q 베타를 실행하는 기기에 앱을 배포하면 프로파일링이 사용 중지됩니다.

    • 데이터 결합 라이브러리를 사용하면 LiveDataListener.onChanged()가 NPE와 함께 실패할 수 있습니다. 이 문제의 수정사항은 Android 스튜디오 3.4.1에 포함되며 Android 스튜디오 3.5의 최신 미리보기 버전에서는 이미 사용 가능합니다. (문제 #122066788 참고)

    IntelliJ IDEA 2018.3.4

    핵심 Android 스튜디오 IDE가 2018.3.4 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

    Android Gradle 플러그인 3.4.0 업데이트

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

    새로운 Project Structure Dialog

    새로운 PSD(Project Structure Dialog)를 사용하면 간편하게 종속 항목을 업데이트하고 모듈, 빌드 변형, 서명 구성, 빌드 변수 등 프로젝트의 여러 측면을 구성할 수 있습니다.

    메뉴 바에서 File > Project Structure를 선택하여 PSD를 열 수 있습니다. 또한 Windows 및 Linux에서 Ctrl+Shift+Alt+S를 누르거나 macOS에서 Command+;(세미콜론)을 눌러서 PSD를 열 수도 있습니다. 아래에서 PSD의 신규 및 업데이트된 섹션에 관한 설명을 몇 가지 확인할 수 있습니다.

    변수

    PSD의 새로운 변수 섹션에서는 프로젝트 전체에서 종속 항목의 버전 번호를 일관성 있게 유지하는 등의 기능을 하는 빌드 변수를 만들고 관리하는 작업을 할 수 있습니다.

    • 프로젝트의 Gradle 빌드 스크립트에 이미 있는 빌드 변수를 빠르게 보고 수정합니다.
    • PSD에서 바로 프로젝트 또는 모듈 수준의 새 빌드 변수를 추가합니다.

    모듈

    기존 모듈의 모든 빌드 변형에 적용되는 속성을 구성하거나 Modules 섹션에서 프로젝트에 새 모듈을 추가하세요. 예를 들어 여기에서 defaultConfig 속성을 구성하거나 서명 구성을 관리할 수 있습니다.

    종속 항목

    프로젝트 동기화 중에 Gradle에서 해결한 대로 다음 단계에 따라 프로젝트의 종속 항목 그래프에 있는 각 종속 항목을 검사하고 시각화하세요.

    1. PSD의 왼쪽 창에서 Dependencies를 선택합니다.
    2. Modules 창에서 해결된 종속 항목을 검사하려는 모듈을 선택합니다.
    3. PSD의 오른쪽에서 아래에 표시된 Resolved Dependencies 창을 엽니다.

    PSD의 Dependencies 섹션에서 모듈을 선택하고 Declared Dependencies 섹션에서 (+) 버튼을 클릭한 다음 추가하려는 종속 항목 유형을 선택하여 빠르게 종속 항목을 검색하고 프로젝트에 추가할 수도 있습니다.

    선택하는 종속 항목 유형에 따라 아래와 비슷한 대화상자가 표시되며 이 대화상자에서 모듈에 종속 항목을 추가할 수 있습니다.

    빌드 변형

    PSD의 이 섹션에서는 프로젝트의 각 모듈에 사용할 빌드 변형과 제품 버전을 만들고 구성합니다. 매니페스트 자리표시자와 ProGuard 파일을 추가하고 서명 키를 할당하는 등의 작업을 할 수 있습니다.

    추천

    아래 표시된 것처럼 Suggestions 섹션에서 프로젝트 종속 항목 및 빌드 변수에 관한 추천 업데이트를 확인하세요.

    새로운 Resource Manager

    Resource Manager는 앱에서 리소스를 가져오고 만들고 관리하고 사용할 수 있는 새로운 도구 창입니다. 메뉴 바에서 View > Tool Windows > Resource Manager를 선택하여 도구 창을 열 수 있습니다. Resource Manager를 사용하면 다음 작업을 할 수 있습니다.

    • 리소스 시각화: 드로어블, 색상, 레이아웃을 미리보기하여 필요한 리소스를 빠르게 찾을 수 있습니다.
    • 일괄 가져오기: Resource Manager 도구 창으로 드래그 앤 드롭하거나 Import Drawables 마법사를 사용하여 한 번에 여러 드로어블 애셋을 가져올 수 있습니다. 마법사에 액세스하려면 도구 창의 왼쪽 상단에서 (+) 버튼을 선택한 후 드롭다운 메뉴에서 Import Drawables를 선택하세요.
    • SVG를 VectorDrawable 객체로 변환: Import Drawables 마법사를 사용하여 SVG 이미지를 VectorDrawable 객체로 변환할 수 있습니다.
    • 애셋 드래그 앤 드롭: Resource Manager 도구 창에서 Layout Editor의 디자인 및 XML 뷰로 드로어블을 드래그 앤 드롭할 수 있습니다.
    • 대체 버전 보기: 이제 Tool 창에서 리소스를 더블클릭하여 리소스의 대체 버전을 볼 수 있습니다. 이 보기에는 만들어 둔 다른 버전과 포함된 한정자가 표시됩니다.
    • 타일 및 목록 보기: 도구 창에서 보기를 변경하여 다른 배열로 리소스를 시각화할 수 있습니다.

    자세한 내용은 앱 리소스 관리 방법에 관한 가이드를 참고하세요.

    APK 프로파일링 및 디버깅 시 빌드 ID 확인

    개발자가 APK 내부에서 .so 공유 라이브러리의 디버깅 기호 파일을 제공하면 Android 스튜디오는 제공된 기호 파일의 빌드 ID와 APK 내 .so 라이브러리의 빌드 ID가 일치하는지 확인합니다.

    빌드 ID를 사용하여 APK에서 네이티브 라이브러리를 빌드하면 Android 스튜디오는 기호 파일의 빌드 ID가 네이티브 라이브러리의 빌드 ID와 일치하는지 확인하고 일치하지 않으면 기호 파일을 거부합니다. 빌드 ID를 사용하여 빌드하지 않은 경우에는 잘못된 기호 파일을 제공하면 디버깅에 문제가 발생할 수 있습니다.

    R8이 기본적으로 사용 설정됨

    R8은 디슈가링, 축소, 난독화, 최적화, 덱싱 등을 모두 한 단계로 통합하여 빌드 성능을 눈에 띄게 개선합니다. R8은 Android Gradle 플러그인 3.3.0에서 도입되었으며 이제 플러그인 3.4.0 이상을 사용하는 앱 및 Android 라이브러리 프로젝트 모두에서 기본적으로 사용 설정됩니다.

    아래 이미지는 R8이 도입되기 전의 컴파일 프로세스를 개략적으로 보여줍니다.

    R8 이전에는 ProGuard가 덱싱 및 디슈가링과 다른 컴파일 단계였습니다.

    이제 R8을 사용하면 아래 그림과 같이 디슈가링, 축소, 난독화, 최적화, 덱싱(D8)이 모두 한 단계로 완료됩니다.

    R8에서는 디슈가링, 축소, 난독화, 최적화, 덱싱이 모두 하나의 컴파일 단계에서 실행됩니다.

    주의사항: R8은 기존 ProGuard 규칙과 호환하도록 설계되었으므로 별다른 조치를 취하지 않아도 R8을 활용할 수 있습니다. 그러나 R8은 Android 프로젝트용으로 특별히 설계된 ProGuard와는 다른 기술이기 때문에 ProGuard와는 달리 축소 및 최적화로 인해 코드가 삭제될 수 있습니다. 드문 경우이긴 하지만 코드가 삭제되면 코드를 빌드 출력에 유지하기 위해 규칙을 추가해야 할 수도 있습니다.

    R8을 사용하는 동안 문제가 발생하면 R8 호환성 FAQ를 읽고 문제 해결 방법이 있는지 확인하세요. 해결 방법이 문서화되어 있지 않으면 버그를 신고하세요. 프로젝트의 gradle.properties 파일에 다음 행 중 하나를 추가하여 R8을 사용 중지할 수 있습니다.

    # Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    

    Navigation 구성요소에서 지원되는 모든 인수 유형이 이제 Navigation Editor에서 지원됩니다. 지원되는 유형에 관한 자세한 내용은 대상 간 데이터 전달을 참고하세요.

    Layout Editor 개선사항

    Layout Editor의 Attributes 창이 단일 페이지로 간소화되었으며 이 페이지에 포함된 섹션을 펼치면 구성할 수 있는 속성이 표시됩니다. Attributes 창에는 다음 업데이트도 포함됩니다.

    • 새로운 Declared Attributes 섹션에는 레이아웃 파일에서 지정하는 속성이 나열되며 새로운 속성을 빠르게 추가할 수 있습니다.
    • 이제 Attributes 창의 각 속성 옆에는 표시기가 있으며 속성의 값이 리소스 참조일 때는 표시기가 채워져 있고() 리소스 참조가 아니면 비어있습니다().
    • 이제 오류 또는 경고가 있는 속성은 강조표시됩니다. 빨간색 강조표시는 오류(예: 잘못된 레이아웃 값을 사용할 때)를 나타내며 주황색 강조표시는 경고(예: 하드 코딩 값을 사용할 때)를 나타냅니다.

    종속 항목을 빠르게 가져오는 새로운 의도 작업

    코드에서 특정 Jetpack 및 Firebase 클래스를 사용하기 시작하면 새로운 의도 작업에서 아직 프로젝트에 필수 Gradle 라이브러리 종속 항목을 추가하지 않았다면 추가하라고 제안합니다. 예를 들어 필수 android.arch.work:work-runtime 종속 항목을 먼저 가져오지 않고 WorkManager 클래스를 참조하면 아래와 같이 의도 작업을 통해 클릭 한 번으로 간편하게 가져올 수 있습니다.

    특히 Jetpack은 더 쉽게 관리하고 업데이트할 수 있는 별개의 패키지로 지원 라이브러리를 리패키징했기 때문에 이 의도 작업을 통해 사용할 Jetpack 구성요소에 필요한 종속 항목만 빠르게 추가할 수 있습니다.

    3.3(2019년 1월)

    Android 스튜디오 3.3은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

    3.3.2(2019년 3월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다. 중요한 버그 수정 목록을 보려면 업데이트 출시 블로그에서 관련 게시물을 읽어보세요.

    3.3.1(2019년 2월)

    이번 소규모 업데이트는 다양한 버그 수정 및 성능 개선을 포함합니다.

    IntelliJ IDEA 2018.2.2

    핵심 Android 스튜디오 IDE가 2018.2.2 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

    Android Gradle 플러그인 업데이트

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

    Navigation Editor에서는 탐색 아키텍처 구성요소를 사용하여 탐색을 빠르게 시각화하고 앱에 빌드할 수 있습니다.

    자세한 내용은 탐색 아키텍처 구성요소를 통한 탐색 구현을 참고하세요.

    사용되지 않은 Android 스튜디오 디렉터리 삭제

    주요 버전의 Android 스튜디오를 처음 실행하면 설치되지 않은 버전의 Android 스튜디오와 관련된 캐시, 설정, 색인, 로그를 포함하는 디렉터리를 찾는 작업이 진행됩니다. Delete Unused Android Studio Directories 대화상자에 이런 사용되지 않은 디렉터리의 위치, 크기 및 마지막 수정 시간이 표시되고 삭제 옵션이 제공됩니다.

    Android 스튜디오에서 삭제 대상으로 고려하는 디렉터리는 다음과 같습니다.

    • Linux: ~/.AndroidStudio[Preview]_X.Y_
    • Mac: ~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]_X.Y_
    • Windows: %USER%\.AndroidStudio[Preview]_X.Y_

    린트 개선사항

    린트가 Gradle에서 호출되는 속도가 훨씬 빨라지며, 대규모 프로젝트에서는 린트가 최대 4배 더 빠르게 실행될 수 있습니다.

    Create New Project 마법사

    Create New Project 마법사의 디자인이 새로워졌으며 새로운 Android 스튜디오 프로젝트를 더 간편하게 만들 수 있는 업데이트가 포함되었습니다.

    자세한 내용은 프로젝트 만들기를 참고하세요.

    프로파일러 업데이트

    Android 스튜디오 3.3에는 여러 개별 프로파일러에 대한 업데이트가 포함되었습니다.

    성능 개선

    사용자의 의견에 따라 프로파일러 사용 중 렌더링 성능을 크게 향상했습니다. 특히 성능 문제가 지속되는 경우 계속 의견을 제공해 주세요.

    프로파일러 메모리 할당 추적 옵션

    프로파일링하는 동안 앱 성능을 개선하기 위해 이제 메모리 프로파일러가 기본적으로 메모리 할당 샘플을 주기적으로 추출합니다. 원한다면 Android 8.0(API 수준 26) 이상을 실행하는 기기에서 테스트할 때 Allocation Tracking 드롭다운을 사용하여 이 동작을 변경할 수 있습니다.

    Allocation Tracking 드롭다운을 사용하여 다음 모드 중에서 선택할 수 있습니다.

    • Full: 모든 객체 메모리 할당을 캡처합니다. 앱에서 많은 객체를 할당하는 경우 프로파일링 중 심각한 성능 문제가 발생할 수 있습니다.
    • Sampled: 객체 메모리 할당의 주기적 샘플을 캡처합니다. 이는 기본 동작으로 프로파일링하는 동안 앱 성능에 미치는 영향이 적습니다. 짧은 기간 내에 많은 객체를 할당하는 앱에서는 일부 성능 문제가 발생할 수 있습니다.
    • Off: 메모리 할당을 사용 중지합니다. 아직 선택하지 않았다면 CPU를 기록하는 동안 이 모드가 자동으로 사용 설정되며 기록이 완료되면 이전 설정으로 돌아갑니다. CPU 기록 구성 대화상자에서 이 동작을 변경할 수 있습니다.

      추적은 자바 객체 및 JNI 참조에 모두 영향을 줍니다.

    프레임 렌더링 데이터 검사

    이제 CPU 프로파일러에서 자바 앱이 기본 UI 스레드 및 RenderThread의 각 프레임을 렌더링하는 데 걸리는 시간을 검사할 수 있습니다. 이 데이터는 UI 버벅거림 현상 및 프레임 속도 저하를 유발하는 병목 현상을 조사할 때 도움이 될 수 있습니다. 예를 들어 원활한 프레임 속도를 유지하는 데 필요한 16ms보다 오래 걸리는 각 프레임은 빨간색으로 표시됩니다.

    프레임 렌더링 데이터를 보려면 시스템 호출을 추적할 수 있는 구성을 사용하여 트레이스를 기록하세요. 트레이스를 기록한 후 아래와 같이 FRAMES라는 섹션에서 각 프레임에 관한 정보와 기록의 타임라인을 찾아보세요.

    프레임 속도 문제 조사 및 수정에 관한 자세한 내용은 느린 렌더링을 참고하세요.

    이벤트 타임라인의 프래그먼트

    이제 이벤트 타임라인에 프래그먼트가 연결 및 분리된 시점이 표시됩니다. 또한 프래그먼트에 마우스를 가져가면 프래그먼트 상태가 도움말에 표시됩니다.

    네트워크 프로파일러에서 연결 페이로드의 서식이 지정된 텍스트 보기

    이전에는 네트워크 프로파일러에 연결 페이로드의 원시 텍스트만 표시되었습니다. Android 스튜디오 3.3에서는 기본적으로 JSON, XML 및 HTML을 포함한 특정 텍스트 유형의 서식을 지정합니다. ResponseRequest 탭에서 View Parsed 링크를 클릭하면 서식이 지정된 텍스트가 표시되며 View Source 링크를 클릭하면 원시 텍스트가 표시됩니다.

    자세한 내용은 네트워크 프로파일러를 사용하여 네트워크 트래픽 검사를 참고하세요.

    SDK 구성요소 자동 다운로드

    프로젝트에 SDK 플랫폼, NDK 또는 CMake의 SDK 구성요소가 필요할 때 이전에 SDK Manager를 사용하여 관련 라이선스 계약에 동의했다면 이제 Gradle이 필수 패키지를 자동으로 다운로드합니다.

    자세한 내용은 Gradle을 사용하여 누락된 패키지 자동 다운로드를 참고하세요.

    Clang-Tidy 지원

    Android 스튜디오에서는 이제 네이티브 코드가 포함된 프로젝트에 Clang-Tidy를 사용하는 정적 코드 분석을 지원합니다. Clang-Tidy 지원을 사용 설정하려면 r18 이상으로 NDK를 업데이트하세요.

    그런 다음 Settings 또는 Preferences 대화상자를 열고 Editor > Inspections > C/C++ > General > Clang-Tidy로 이동하여 검사를 사용 설정하거나 다시 사용 설정할 수 있습니다. Settings 또는 Preferences 대화상자에서 이 검사를 선택하면 가장 오른쪽에 있는 패널의 Option 섹션에서 사용 설정 및 사용 중지된 Clang-Tidy 검사 목록을 확인할 수도 있습니다. 추가 검사를 사용 설정하려면 목록에 추가한 후 Apply를 클릭하세요.

    추가 옵션으로 Clang-Tidy를 구성하려면 Configure Clang-Tidy Checks Options를 클릭한 후 표시되는 대화상자에서 추가하세요.

    C++ 맞춤설정 옵션의 삭제

    C++ 지원 맞춤설정 대화상자에서 다음 옵션이 삭제되었습니다.

    • 예외 지원(-fexceptions)
    • 런타임 유형 정보 지원(-ftti)

    각 동작은 Android 스튜디오를 통해 생성된 모든 프로젝트에 사용 설정됩니다.

    CMake 버전 3.10.2

    이제 CMake 버전 3.10.2가 SDK Manager에 포함됩니다. Gradle에서는 여전히 버전 3.6.0을 기본적으로 사용합니다.

    Gradle에서 사용할 CMake 버전을 지정하려면 모듈의 build.gradle 파일에 다음을 추가하세요.

    android {
        ...
        externalNativeBuild {
            cmake {
                ...
                version "3.10.2"
            }
        }
    }
    

    build.gradle에서 CMake를 구성하는 방법에 관한 자세한 내용은 수동으로 Gradle 구성을 참고하세요.

    새로운 '+' 구문으로 최소 CMake 버전 지정

    기본 모듈의 build.gradle 파일에서 CMake 버전을 지정할 때 이제 '+'를 추가하여 CMake의 cmake_minimum_required() 명령어 동작과 일치시킬 수 있습니다.

    Android App Bundle에서 이제 인스턴트 앱 지원

    이제 Android 스튜디오에서 Google Play 인스턴트를 완전히 지원하는 Android App Bundle을 빌드할 수 있습니다. 즉, 단일 Android 스튜디오 프로젝트에서 설치된 앱과 인스턴트 환경을 모두 빌드하고 배포할 수 있으며, 이들을 하나의 Android App Bundle에 포함할 수 있습니다.

    Create New Project 대화상자를 사용하여 새로운 Android 스튜디오 프로젝트를 만드는 경우 Configure your project > This project will support instant apps 옆의 체크박스를 선택해야 합니다. 이렇게 하면 Android 스튜디오가 평소처럼 새로운 앱 프로젝트를 생성하지만, 앱의 기본 모듈에 인스턴트 앱 지원을 추가하기 위해 매니페스트에 다음 속성을 포함합니다.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    

    그런 다음 메뉴 바에서 File > New > New Module을 선택한 후 Create New Module 대화상자에서 Instant Dynamic Feature Module을 선택하여 인스턴트 지원 기능 모듈을 생성할 수 있습니다. 이 모듈을 만들면 앱의 기본 모듈에도 인스턴트 지원이 적용됩니다.

    로컬 기기에 인스턴트 환경으로 앱을 배포하려면 실행 구성을 수정하고 General > Deploy as instant app 옆의 체크박스를 선택하세요.

    단일 변형 프로젝트 동기화

    빌드 구성과 프로젝트를 동기화하는 단계는 Android 스튜디오가 프로젝트 구성 방식을 이해하는 데 중요합니다. 하지만 프로젝트 규모가 큰 경우 이 과정에 시간이 오래 걸릴 수 있습니다. 프로젝트에서 빌드 변형을 여러 개 사용하는 경우 이제 프로젝트 동기화를 현재 선택한 변형으로만 제한하여 최적화할 수 있습니다.

    이 최적화를 사용 설정하려면 Android 스튜디오 3.3 이상과 Android Gradle 플러그인 3.3.0 이상을 사용해야 합니다. 이러한 요구사항을 충족하면 프로젝트를 동기화할 때 IDE에서 이 최적화를 사용 설정하라는 메시지가 표시됩니다. 최적화는 새로운 프로젝트에도 기본으로 사용 설정됩니다.

    최적화를 수동으로 사용 설정하려면 File > Settings > Experimental > Gradle(Mac은 Android Studio > Preferences > Experimental > Gradle)을 클릭하고 Only sync the active variant 체크박스를 선택합니다.

    자세한 내용은 단일 변형 프로젝트 동기화 사용 설정을 참고하세요.

    빠른 의견 제공

    Android 스튜디오 개선에 도움이 되도록 사용 통계 공유를 선택했다면 IDE 창 하단에 있는 상태 표시줄에 다음과 같이 새로운 아이콘 2개가 표시됩니다.

    현재 IDE 사용 경험을 가장 잘 나타내는 아이콘을 클릭하기만 하면 됩니다. 그러면 IDE가 Android 스튜디오 팀에서 사용자의 사용 소감을 더 잘 이해할 수 있도록 사용 통계를 전송합니다. 때에 따라(예: IDE 사용의 부정적인 경험을 표시할 때) 추가 의견을 제공하라는 메시지가 표시될 수 있습니다.

    아직 사용 설정하지 않았다면 Settings 대화상자(Mac에서는 Preferences)를 열고 Appearance & Behavior > System Settings > Data Sharing으로 이동한 후 Send usage statistics to Google을 선택하여 사용 통계를 공유하도록 설정할 수 있습니다.

    3.2(2018년 9월)

    Android 스튜디오 3.2는 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

    3.2.1(2018년 10월)

    이번 Android 스튜디오 3.2 업데이트에는 다음과 같은 변경 및 수정사항이 포함되어 있습니다.

    • 이제 번들 Kotlin 버전이 1.2.71입니다.
    • 이제 기본 빌드 도구 버전이 28.0.3입니다.
    • 탐색 라이브러리의 인수 유형 이름이 type에서 argType으로 변경되었습니다.
    • 다음 버그가 수정되었습니다.
      • 데이터 결합 라이브러리 사용 시 변수 이름에 밑줄이 포함되어 있으면 컴파일 오류가 발생했습니다.
      • CMake로 인해 IntelliSense 및 기타 CLion 기능이 작동하지 않았습니다.
      • SliceProvider를 추가하면 androidx.* 라이브러리를 사용하지 않는 프로젝트에서 컴파일 오류가 발생했습니다.
      • 일부 Kotlin 단위 테스트가 실행되지 않았습니다.
      • 데이터 결합 문제로 인해 PsiInvalidElementAccessException이 발생했습니다.
      • <merge> 요소로 인해 때로 Layout Editor가 비정상 종료되었습니다.

    3.2.0 알려진 문제

    참고: 이 문제는 Android 스튜디오 3.2.1에서 해결되었습니다.

    • Kotlin 버전 1.2.70을 사용하지 않는 것이 좋습니다.

      Kotlin 버전 1.2.61에서는 Android 스튜디오 중단을 일으킬 수 있는 버그가 수정되었지만, Kotlin 1.2.70에는 포함되지 않았습니다.

      그러나 Kotlin 버전 1.2.71 이상에는 이 수정사항이 포함되었습니다.

    • 일반적으로 빌드 도구 버전을 지정할 필요는 없지만 renderscriptSupportModeEnabledtrue로 설정된 Android Gradle 플러그인 3.2.0을 사용한다면 각 모듈의 build.gradle 파일에 다음을 포함해야 합니다.

      android.buildToolsVersion "28.0.3"

    도우미의 새로운 기능

    새로운 도우미가 Android 스튜디오의 최신 변경사항을 알려줍니다.

    새로 설치하거나 업데이트한 후 Android 스튜디오를 시작할 때 표시할 새 정보가 있음이 감지되면 도우미가 열립니다. Help > What's new in Android Studio를 선택하여 도우미를 열 수도 있습니다.

    Android Jetpack

    Android Jetpack을 사용하면 반복 작업을 제거하고 쉽고 빠르며 테스트하기 쉬운 고품질 앱을 빌드할 수 있게 하는 구성요소, 도구, 가이드를 통해 Android 개발을 가속화할 수 있습니다. Android 스튜디오에는 Jetpack을 지원하기 위한 다음과 같은 업데이트가 포함되어 있습니다. 자세한 내용은 Jetpack 문서를 참조하세요.

    새로운 Navigation Editor가 Android Jetpack의 탐색 구성요소와 통합되어 앱의 탐색 구조를 만들기 위한 그래픽 뷰를 제공합니다. Navigation Editor는 인앱 대상 간 탐색의 디자인과 구현을 단순화합니다.

    Android 스튜디오 3.2에서는 Navigation Editor가 실험 기능입니다. Navigation Editor를 사용 설정하려면 File > Settings(Mac에서는 Android Studio > Preferences)를 클릭하고, 왼쪽 창에서 Experimental 카테고리를 선택한 후 Enable Navigation Editor 옆의 체크박스를 선택하고 Android 스튜디오를 다시 시작합니다.

    자세한 내용은 Navigation Editor 문서를 참고하세요.

    AndroidX 이전

    Jetpack의 일부로 androidx 네임스페이스를 사용하여 Android 지원 라이브러리를 새로운 Android 확장 라이브러리로 이전하고 있습니다. 자세한 내용은 AndroidX 개요를 참고하세요.

    Android 스튜디오 3.2를 사용하면 새로운 이전 기능을 통해 이 과정을 완료할 수 있습니다.

    기존 프로젝트를 AndroidX로 이전하려면 Refactor > Migrate to AndroidX를 선택하세요. AndroidX 네임스페이스로 이전하지 않은 Maven 종속 항목이 있다면 Android 스튜디오 빌드 시스템에서 이러한 프로젝트 종속 항목도 자동으로 변환합니다.

    Android Gradle 플러그인은 gradle.properties 파일에 설정할 수 있는 다음과 같은 전역 플래그를 제공합니다.

    • android.useAndroidX: true로 설정하면 이 플래그는 지금부터 AndroidX 사용을 시작하려고 함을 나타냅니다. 플래그가 없으면 Android 스튜디오는 플래그가 false로 설정된 것처럼 작동합니다.
    • android.enableJetifier: true로 설정하면 이 플래그는 Android Gradle 플러그인의 도구 지원을 사용하여 기존 타사 라이브러리가 AndroidX용으로 작성된 것처럼 자동으로 변환할 것임을 나타냅니다. 플래그가 없으면 Android 스튜디오는 플래그가 false로 설정된 것처럼 작동합니다.

    Migrate to AndroidX 명령어를 사용하면 두 플래그가 true로 설정됩니다.

    AndroidX 라이브러리 사용을 즉시 시작하려고 하며 기존 타사 라이브러리를 변환할 필요가 없다면 android.useAndroidX 플래그를 true로 설정하고 android.enableJetifier 플래그를 false로 설정합니다.

    Android App Bundle

    Android App Bundle은 앱의 컴파일된 코드와 리소스를 모두 포함하지만 APK 생성 및 서명을 Google Play 스토어에 맡기는 새로운 업로드 형식입니다.

    Google Play의 새로운 앱 제공 모델은 App Bundle을 사용하여 각 사용자의 기기 설정에 최적화된 APK를 생성하고 제공하므로, 각 사용자는 앱 실행에 필요한 코드와 리소스만 다운로드하면 됩니다. 개발자가 더 이상 여러 APK를 빌드하고 서명하고 관리할 필요가 없으며 사용자는 더 작고 최적화된 앱을 다운로드하게 됩니다.

    또한 앱 프로젝트에 기능 모듈을 추가하여 App Bundle에 포함할 수 있습니다. 그러면 사용자가 앱의 기능을 필요에 따라 다운로드하여 설치할 수 있습니다.

    번들을 빌드하려면 Build > Build Bundle(s) / APK(s) > Build Bundle(s)를 선택하세요.

    Android App Bundle 빌드 및 분석에 관한 안내를 비롯하여 자세한 내용은 Android App Bundle을 참고하세요.

    Layout Editor의 샘플 데이터

    많은 Android 레이아웃에는 앱 개발의 디자인 단계에서 레이아웃의 모양과 느낌을 시각화하기 어렵게 만들 수 있는 런타임 데이터가 있습니다. 이제는 샘플 데이터가 풍부한 레이아웃 편집기에서 손쉽게 뷰의 미리보기를 볼 수 있습니다. 뷰를 추가하면 Design 창의 뷰 아래에 버튼이 표시됩니다. 이 버튼을 클릭하여 design-time 뷰 속성을 설정할 수 있습니다. 다양한 샘플 데이터 템플릿에서 선택하고 뷰를 채울 샘플 항목 수를 지정할 수 있습니다.

    샘플 데이터를 사용해 보려면 RecyclerView를 새 레이아웃에 추가하고 뷰 아래에 있는 design-time 속성 버튼 을 클릭한 후 샘플 데이터 템플릿의 캐러셀에서 항목을 선택하세요.

    슬라이스

    슬라이스를 사용하면 새로운 방식으로 Android의 다른 사용자 인터페이스 표면에 앱 기능의 일부를 삽입할 수 있습니다. 예를 들어 슬라이스를 사용하여 Google 검색 제안사항에 앱 기능과 콘텐츠를 표시할 수 있습니다.

    Android 스튜디오 3.2에는 새로운 Slice Provider API로 앱을 확장하는 데 도움이 되는 템플릿이 내장되어 있으며, 슬라이스를 구성할 때 권장사항을 따를 수 있게 하는 새로운 린트 검사가 있습니다.

    시작하려면 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭한 후 New > Other > Slice Provider를 선택합니다.

    슬라이스 상호작용을 테스트하는 방법을 비롯하여 자세한 내용은 슬라이스 시작 가이드를 참고하세요.

    Kotlin 1.2.61

    Android 스튜디오 3.2는 Kotlin 1.2.61을 번들로 제공하며, 새로운 Android SDK는 Kotlin과 더 잘 통합됩니다. 자세한 내용은 Android 개발자 블로그를 참고하세요.

    IntelliJ IDEA 2018.1.6

    핵심 Android 스튜디오 IDE가 2018.1.6 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다.

    Android 프로파일러

    Android 스튜디오 3.2에서 다음과 같은 새로운 Android 프로파일러 기능을 사용해 보세요.

    세션

    이제 프로파일러 데이터를 세션으로 저장하여 나중에 다시 확인하고 검사할 수 있습니다. 프로파일러는 IDE가 다시 시작될 때까지 세션 데이터를 유지합니다.

    메서드 트레이스를 기록하거나 힙 덤프를 캡처하면 IDE에서 앱의 네트워크 활동과 함께 그 데이터를 현재 세션에 별도 항목으로 추가하므로 기록을 앞뒤로 손쉽게 전환하여 데이터를 비교할 수 있습니다.

    시스템 트레이스

    CPU 프로파일러에서 새로운 시스템 트레이스 구성을 선택하여 기기의 시스템 CPU와 스레드 활동을 검사할 수 있습니다. 이 트레이스 구성은 systrace 기반으로 구축되며, UI 버벅거림 현상과 같은 시스템 수준 문제를 조사하는 데 유용합니다.

    이 트레이스 구성을 사용하는 동안 네이티브 추적 API로 C/C++ 코드를 계측하거나 Trace 클래스로 자바 코드를 계측하여 프로파일러 타임라인에서 중요한 코드 루틴을 시각적으로 표시할 수 있습니다.

    메모리 프로파일러의 JNI 참조 검사

    Android 8.0(API 수준 26) 이상을 실행하는 기기에 앱을 배포한다면 이제 메모리 프로파일러를 사용하여 앱의 JNI 코드를 위한 메모리 할당을 검사할 수 있습니다.

    앱이 실행되는 동안 아래에서와 같이, 검사하려는 타임라인 부분을 선택하고, 클래스 목록 위에 있는 드롭다운 메뉴에서 JNI heap을 선택합니다. 그런 다음 평소와 같이 힙에 있는 객체를 검사하고 Allocation Call Stack 탭에서 객체를 더블클릭하여 코드에서 JNI 참조가 할당되고 해제된 위치를 확인할 수 있습니다.

    메모리 힙 덤프 파일 가져오기, 내보내기 및 검사하기

    이제 메모리 프로파일러로 생성된 .hprof 메모리 힙 덤프 파일을 가져오고, 내보내고, 검사할 수 있습니다.

    프로파일러의 Sessions 창에서 Start new profiler session 을 클릭한 후 Load from file을 선택하여 .hprof 파일을 가져옵니다. 그런 다음 다른 힙 덤프와 마찬가지로 메모리 프로파일러에서 데이터를 검사할 수 있습니다.

    힙 덤프 데이터를 저장하고 나중에 검토하려면 Sessions 창의 Heap Dump 항목 오른쪽에 있는 Export Heap Dump 버튼을 사용하세요. Export As 대화상자가 표시되면 .hprof 파일 이름 확장자를 사용하여 파일을 저장하세요.

    앱이 시작하는 동안 CPU 활동 기록

    이제 다음과 같이 앱이 시작하는 동안 CPU 활동을 기록할 수 있습니다.

    1. 기본 메뉴에서 Run > Edit Configurations를 선택합니다.
    2. 원하는 실행 구성의 프로파일링 탭에서 시작 시 메서드 추적 기록 시작 옆의 체크박스를 선택합니다.
    3. 드롭다운 메뉴에서 사용할 CPU 기록 구성을 선택합니다.
    4. 실행 > 프로파일을 선택하여 Android 8.0(API 수준 26) 이상을 실행하는 기기에 앱을 배포합니다.

    CPU 트레이스 내보내기

    CPU 프로파일러로 CPU 활동을 기록한 후 데이터를 .trace 파일로 내보내어 다른 사용자와 공유하거나 나중에 검사할 수 있습니다.

    CPU 활동을 기록한 후 트레이스를 내보내려면 다음 단계를 따르세요.

    1. CPU 타임라인에서 내보내려는 기록을 마우스 오른쪽 버튼으로 클릭합니다.
    2. 드롭다운 메뉴에서 추적 내보내기를 선택합니다.
    3. 파일을 저장할 위치로 이동한 다음 저장을 클릭합니다.

    CPU 트레이스 파일 가져오기 및 검사

    이제 Debug API 또는 CPU 프로파일러에서 만든 .trace 파일을 가져와서 검사할 수 있습니다. 현재 시스템 트레이스 기록은 가져올 수 없습니다.

    프로파일러의 Sessions 창에서 Start new profiler session 을 클릭한 후 Load from file을 선택하여 트레이스 파일을 가져옵니다. 그런 다음 평소와 비슷한 방식으로 CPU 프로파일러에서 데이터를 검사할 수 있지만 다음과 같은 몇 가지 예외가 있습니다.

    • CPU 활동은 CPU 타임라인을 따라 표시되지 않습니다.
    • 스레드 활동 타임라인은 각 스레드에서 추적 데이터를 사용할 수 있는 위치만 나타내며 실제 스레드 상태(예: 실행 중, 대기 중, 일시중지 중)를 나타내지는 않습니다.

    Debug API를 사용하여 CPU 활동 기록

    이제 Debug API로 앱을 계측하여 CPU 프로파일러에서 CPU 활동 기록을 시작하고 중지할 수 있습니다. 앱을 기기에 배포하면 프로파일러는 앱이 startMethodTracing(String tracePath)를 호출할 때 CPU 활동 기록을 자동으로 시작하고 앱이 stopMethodTracing()을 호출할 때 기록을 중지합니다. 이 API를 사용하여 트리거된 CPU 활동을 기록하는 동안 CPU 프로파일러는 Debug API를 선택된 CPU 기록 구성으로 표시합니다.

    에너지 프로파일러

    에너지 프로파일러는 앱의 예상 에너지 사용량뿐 아니라 wakelock, 경보 및 작업과 같이 에너지 사용량에 영향을 주는 시스템 이벤트를 시각적으로 표시합니다.

    Android 8.0(API 26) 이상을 실행하는 연결된 기기 또는 Android Emulator에서 앱을 실행하면 Profiler 창 하단에 에너지 프로파일러가 새 행으로 표시됩니다.

    Energy 행을 클릭하면 에너지 프로파일러 뷰가 최대화됩니다. 마우스 포인터를 타임라인 막대 위에 놓으면, CPU, 네트워크, 위치(GPS) 리소스뿐 아니라 관련 있는 시스템 이벤트별로 분석한 에너지 사용 내역을 볼 수 있습니다.

    에너지 사용량에 영향을 미치는 시스템 이벤트는 Energy 타임라인 아래의 System 타임라인에 표시됩니다. Energy 타임라인에서 기간을 선택하면 지정된 기간 내의 시스템 이벤트 세부정보가 이벤트 창에 표시됩니다.

    호출 스택 및 wakelock과 같은 시스템 이벤트의 기타 세부정보를 보려면 이벤트 창에서 선택하세요. 시스템 이벤트에 책임이 있는 코드로 이동하려면 호출 스택에서 항목을 더블클릭하세요.

    린트 검사

    Android 스튜디오 3.2에는 린트 검사의 새롭고 향상된 기능이 많이 포함되어 있습니다.

    새로운 린트 검사는 잠재적인 사용성 문제 관련 경고에서 잠재적인 보안 취약점과 관련된 우선순위가 높은 오류에 이르기까지 일반적인 코드 문제를 찾고 식별하는 데 도움이 됩니다.

    자바/Kotlin 상호 운용성 린트 검사

    자바 코드가 Kotlin 코드와 원활하게 상호 운용되도록, 새 린트 검사에서는 Kotlin 상호 운용성 가이드에 설명된 권장사항을 시행합니다. 이 검사의 예에는 Null 허용 여부 주석이 있는지 찾기, Kotlin 하드 키워드 사용, 람다 매개변수를 마지막에 배치 등이 포함됩니다.

    이 검사를 사용 설정하려면 File > Settings(Mac에서는 Android 스튜디오 > Preferences)를 클릭하여 Settings 대화상자를 열고 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 섹션으로 이동하여 사용 설정하려는 규칙을 선택합니다.

    명령줄 빌드에 이 검사를 사용하려면 build.gradle 파일에 다음 코드를 추가하세요.

    android {
        lintOptions {
            check 'Interoperability'
        }
    }
    

    슬라이스 린트 검사

    새로운 슬라이스 린트 검사를 사용하면 슬라이스를 올바로 구성하는 데 도움이 됩니다. 예를 들어 슬라이스에 기본 작업을 할당하지 않은 경우 린트 검사에서 경고를 표시합니다.

    새로운 Gradle 대상

    새로운 lintFix Gradle 작업을 사용하면 린트 검사에서 제안한 모든 안전한 수정사항을 소스 코드에 직접 적용할 수 있습니다. 적용할 수 있는 안전한 수정사항을 제안하는 린트 검사의 예는 SyntheticAccessor입니다.

    메타데이터 업데이트

    린트 검사가 Android 9(API 수준 28)와 호환되도록 서비스 전송 확인과 같은 다양한 메타데이터가 업데이트되었습니다.

    새로운 변형에서 린트를 실행하는 경우 경고 표시

    이제 Lint에서 기준이 기록된 변형과 버전을 기록하며, 기준이 생성된 변형과 다른 변형에서 Lint를 실행하면 경고를 표시합니다.

    기존 Lint 검사 개선 사항

    Android 스튜디오 3.2에는 기존 린트 검사의 다양한 개선 사항이 포함되어 있습니다. 예를 들어 이제 리소스 주기 검사가 추가 리소스 유형에 적용되며, 번역 감지기가 편집기에서 필요에 따라 누락된 번역을 찾을 수 있습니다.

    더 쉽게 검색 가능한 문제 ID

    이제 문제 ID가 Inspection Results 창을 비롯하여 더 많은 위치에 표시됩니다. 따라서 build.gradlelintOptions를 통해 특정 검사를 사용 설정하거나 중지하는 데 필요한 정보를 더욱 쉽게 찾을 수 있습니다.

    자세한 내용은 Gradle로 린트 옵션 구성을 참고하세요.

    데이터 바인딩 V2

    이제 데이터 결합 V2가 기본적으로 사용 설정되며 V1과 호환됩니다. 즉, V1으로 컴파일된 라이브러리 종속성이 있는 경우 데이터 결합 V2를 사용하는 프로젝트에서 함께 사용할 수 있습니다. 하지만 V1을 사용하는 프로젝트는 V2로 컴파일된 종속성을 사용할 수 없습니다.

    D8 디슈가링

    Android 스튜디오 3.1에서는 실험적 기능으로 D8 도구에 디슈가링 단계를 통합하여 전체 빌드 시간을 줄였습니다. Android 스튜디오 3.2에서는 D8에 디슈가링이 기본적으로 사용 설정됩니다.

    새 코드 축소기

    R8은 ProGuard를 대체하는 코드 축소 및 난독화를 위한 새로운 도구입니다. 프로젝트의 gradle.properties 파일에 다음 코드를 포함하여 R8의 미리보기 버전을 사용할 수 있습니다.

    android.enableR8 = true
    

    여러 APK의 기본 ABI가 변경됨

    각각 다른 ABI를 타겟팅하는 여러 APK를 빌드할 때 플러그인이 더 이상 mips, mips64, armeabi 등 ABI용 APK를 기본적으로 생성하지 않습니다.

    이러한 ABI를 타겟팅하는 APK를 빌드하려면 NDK r16b 이하를 사용하고 아래와 같이 build.gradle 파일에 ABI를 지정해야 합니다.

    Groovy

    splits {
        abi {
            include 'armeabi', 'mips', 'mips64'
            ...
        }
    }
    

    Kotlin

    splits {
        abi {
            include("armeabi", "mips", "mips64")
            ...
        }
    }
    

    CMake 빌드 파일의 편집기 기능이 향상됨

    CMake를 사용하여 C 및 C++ 코드를 프로젝트에 추가하면 이제 Android 스튜디오에서 다음과 같이 CMake 빌드 스크립트를 편집하는 데 유용한 향상된 편집기 기능을 사용할 수 있습니다.

    • 구문 강조표시 및 코드 완성: 이제 IDE에서 일반적인 CMake 명령어를 강조표시하고 코드 완성을 제안합니다. 또한 Control 키(Mac에서는 Command 키)를 누른 상태에서 파일을 클릭하여 파일로 이동할 수 있습니다.
    • 코드 형식 다시 지정: 이제 IntelliJ의 코드 형식 다시 지정 옵션을 사용하여 CMake 빌드 스크립트에 코드 스타일을 적용할 수 있습니다.
    • 안전한 리팩터링: 이제 IDE의 내장된 리팩터링 도구에서 CMake 빌드 스크립트에서 참조하는 파일의 이름이 변경되거나 파일이 삭제되는지 여부도 확인합니다.

    이전 버전의 Android 스튜디오에서는 Project 창을 사용할 때 로컬 프로젝트에서 빌드하는 라이브러리에 속한 헤더 파일만 탐색하고 검사할 수 있었습니다. 이 출시 버전에서는 이제 앱 프로젝트로 가져오는 외부 C/C++ 라이브러리 종속 항목에 포함된 헤더 파일을 보고 검사할 수 있습니다.

    이미 C/C++ 코드 및 라이브러리가 프로젝트에 포함되어 있다면 기본 메뉴에서 View > Tool Windows > Project를 선택하여 IDE의 왼쪽에 있는 Project 창을 열고 드롭다운 메뉴에서 Android를 선택합니다. cpp 디렉터리에서, 앱 프로젝트 범위 내에 있는 모든 헤더는 아래와 같이 각 로컬 C/C++ 라이브러리 종속 항목의 include 노드 아래에 구성됩니다.

    네이티브 멀티덱스가 기본적으로 사용 설정됨

    이전 버전의 Android 스튜디오에서는 Android API 수준 21 이상을 실행하는 기기에 앱의 디버그 버전을 배포할 때 네이티브 멀티덱스를 사용 설정했습니다. 이제는 기기 배포 또는 출시용 APK 빌드 여부와 상관없이, Gradle용 Android 플러그인이 minSdkVersion=21 이상을 설정한 모든 모듈에 네이티브 멀티덱스를 사용하도록 설정합니다.

    AAPT2가 Google의 Maven 저장소로 이동함

    Android 스튜디오 3.2부터는 AAPT2(Android Asset Packaging Tool 2)의 소스가 Google의 Maven 저장소입니다.

    AAPT2를 사용하려면 다음과 같이 build.gradle 파일에 google() 종속 항목이 있어야 합니다.

    Groovy

    buildscript {
        repositories {
            google() // here
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0'
        }
    }
    allprojects {
        repositories {
            google() // and here
            jcenter()
        }
    }
    

    Kotlin

    buildscript {
        repositories {
            google() // here
            jcenter()
        }
        dependencies {
            classpath("com.android.tools.build:gradle:3.2.0")
        }
    }
    allprojects {
        repositories {
            google() // and here
            jcenter()
        }
    }
    

    AAPT2의 새 버전에서는 Windows에서 ASCII가 아닌 문자의 처리 개선을 비롯하여 많은 문제가 해결되었습니다.

    주문형 구성 삭제

    주문형 구성 환경설정이 Android 스튜디오에서 삭제되었습니다.

    Android 스튜디오는 더 이상 --configure-on-demand 인수를 Gradle에 전달하지 않습니다.

    ADB Connection Assistant

    새로운 ADB Connection Assistant에서는 Android 디버그 브리지(ADB) 연결을 통해 기기를 설정하고 사용할 수 있도록 단계별 안내를 제공합니다.

    이 도우미를 사용하려면 Tools > Connection Assistant를 선택하세요.

    ADB 연결 도우미는 도우미 패널의 여러 페이지에 걸쳐 안내, 문맥에 맞는 컨트롤, 연결된 기기 목록을 제공합니다.

    에뮬레이터 개선 사항

    이제 언제든지 Android 에뮬레이터에서 AVD(Android 가상 기기)의 스냅샷을 저장하고 로드하여, 에뮬레이션된 기기를 테스트를 위한 알려진 상태로 쉽고 빠르게 되돌릴 수 있습니다. AVD 관리자를 사용하여 AVD를 수정할 경우 AVD가 시작될 때 로드할 AVD 스냅샷을 지정할 수 있습니다.

    AVD 스냅샷의 저장, 로드 및 관리를 위한 컨트롤이 이제 에뮬레이터 Extended controls 창의 Snapshots 탭에 있습니다.

    자세한 내용은 스냅샷을 참고하세요.

    에뮬레이터의 새로운 기능 및 변경사항에 관한 추가 정보는 에뮬레이터 출시 노트를 참고하세요.

    3.1(2018년 3월)

    Android 스튜디오 3.1.0은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

    3.1.4(2018년 8월)

    이번 Android 스튜디오 3.1 업데이트에는 다음과 같은 변경 및 수정사항이 포함되어 있습니다.

    • 이제 번들 Kotlin 버전이 1.2.50입니다.
    • 새로운 프로젝트는 지원 중단된 kotlin-stdlib-jre* 아티팩트가 아닌 kotlin-stdlib-jdk* artifacts로 생성됩니다.
    • ProGuard 규칙의 R8 파싱이 개선되었습니다.
    • 다음 버그가 수정되었습니다.
      • Kotlin Main 클래스를 실행하려고 하면 "Error: Could not find or load main class..." 오류와 함께 실패했습니다.
      • 특정 최적화를 실행하는 동안 R8에 무한 루프가 발생했습니다.
      • Run 창에서 Rerun failed tests 명령어를 사용하면 가끔 'No tests were found' 메시지가 잘못 반환되었습니다.
      • D8이 invoke-virtual 인스턴스를 올바르게 처리하지 않아 VerifyError: invoke-super/virtual can't be used on private method 메시지와 함께 비정상 종료되었습니다.
      • 데이터 결합 컴파일러가 이전 버전의 com.android.tools:annotations를 사용했습니다. 이제 가능하다면 컴파일러가 기본 프로젝트의 도구 주석을 사용합니다.
      • 프로파일러 사용 시 프래그먼트를 전환하는 중에 Android 스튜디오가 비정상 종료되었습니다.
      • 텍스트 상자가 있는 레이아웃을 디버깅하면 디버거가 비정상 종료되었습니다.
      • D8이 특수문자가 포함된 일부 ZIP 파일을 읽지 못했습니다.

    3.1.3(2018년 6월)

    이번 Android 스튜디오 3.1 업데이트에서는 다음 버그가 수정되었습니다.

    • Layout Editor를 사용한 이후 메모리 누수로 인해 Android 스튜디오가 느려지고 응답하지 않는 문제가 있었습니다. 이번 업데이트에서는 이러한 문제 대부분이 수정되었습니다. 추가 메모리 누수 문제를 해결하기 위해 곧 업데이트를 다시 출시할 예정입니다.
    • D8로 빌드된 일부 애플리케이션이 일부 Verizon Ellipsis 태블릿에서 비정상 종료되었습니다.
    • Android 5.0 또는 5.1(API 수준 21 또는 22)을 실행하는 기기에서 D8로 빌드된 애플리케이션을 설치하면 INSTALL_FAILED_DEXOPT 오류가 발생했습니다.
    • OkHttp 라이브러리를 사용하고 D8로 빌드된 일부 애플리케이션이 Android 4.4(API 수준 19)를 실행하는 기기에서 비정상 종료되었습니다.
    • 때로 Android 스튜디오가 com.intellij.psi.jsp.JspElementType의 클래스 초기화 중에 ProcessCanceledException 오류와 함께 시작하지 못했습니다.

    3.1.2(2018년 4월)

    이번 Android 스튜디오 3.1 업데이트에서는 다음 버그가 수정되었습니다.

    • Android 스튜디오를 종료하는 중에 무기한 중단되는 경우가 있었습니다.
    • Instant Run이 사용 설정되었을 때 소스 세트로 구성된 빌드가 다음 메시지와 함께 실행되지 않았습니다.

      "The SourceSet name is not recognized by the Android Gradle Plugin."

    • Instant Run이 사용 설정되었을 때 Run 명령어로 트리거된 새로운 Kotlin 프로젝트 빌드가 실행되지 않았습니다.
    • build.gradle 파일을 수정하는 동안 가끔 입력한 문자가 화면에 나타나기까지 눈에 띄는 지연 현상이 있었습니다.
    • 많은 모듈 또는 외부 종속 항목이 포함된 일부 프로젝트에서 덱싱하는 동안 다음 오류 메시지와 함께 빌드가 실패했습니다.

      "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

    • D8 기본 DEX 목록의 계산에서 일부 반영된 호출을 고려하지 않았습니다.

    이 업데이트에는 일부 시나리오에서 Gradle의 린트 검사 실행 속도를 훨씬 더 빠르게 하는 변경사항도 포함되어 있습니다.

    3.1.1(2018년 4월)

    이번 Android 스튜디오 3.1 업데이트에서는 다음 버그가 수정되었습니다.

    • Android 스튜디오 3.0에서 만들어진 프로젝트가 Android 스튜디오 3.1에서 처음으로 열릴 때 Gradle-aware Make 작업이 Run/Debug ConfigurationsBefore launch 영역에서 삭제되는 경우가 있었습니다. 그 결과 Run 또는 Debug 버튼을 클릭했을 때 프로젝트가 빌드되지 않아 잘못된 APK 배포와 같은 오류가 발생하고 Instant Run 사용 시 비정상 종료되었습니다.

      이 문제를 해결하기 위해 Android 스튜디오 3.1.1에서는 이 항목이 누락된 프로젝트 구성을 실행하도록 Gradle-aware Make 작업이 추가되었습니다. 이 수정사항은 프로젝트 로드 시 첫 번째 Gradle 동기화 이후에 적용됩니다.

    • 고급 프로파일링이 사용 설정된 경우 텍스트 상자가 있는 레이아웃을 디버깅하면 디버거가 비정상 종료되었습니다.
    • Build Variants를 클릭하면 Android 스튜디오가 정지되었습니다.
    • AAR(Android 보관 파일)이 Gradle 동기화 프로세스 중 한 번, Gradle 빌드 프로세스 중 한 번, 총 두 번 추출되었습니다.
    • SVG 파일에서 가져오는 일부 벡터 드로어블에서 요소가 누락되었습니다.
    • compile 종속 항목 구성의 지원 중단에 관한 경고가 implementationapi 구성에 관한 더 나은 지침과 함께 업데이트되었습니다. compile 구성 사용으로부터의 이전에 관한 세부정보는 새로운 종속 항목 구성에 관한 문서를 참고하세요.

    코딩/IDE

    IntelliJ 2017.3.3

    핵심 Android 스튜디오 IDE가 2017.3.3 출시를 통해 IntelliJ IDEA 개선사항과 함께 업데이트되었습니다. 개선사항에는 컬렉션 및 문자열에 관한 더 나은 제어 흐름 분석, 향상된 null 허용 여부 추론, 새로운 빠른 수정 외 여러 가지가 포함되어 있습니다.

    자세한 내용은 IntelliJ IDEA 버전 2017.22017.3에 관한 JetBrains 출시 노트와 버그 수정 업데이트에 관한 JetBrains 출시 노트를 참고하세요.

    Room을 통한 SQL 편집 개선

    Room 데이터베이스 라이브러리를 사용하면 몇 가지 향상된 SQL 편집 기능을 이용할 수 있습니다.

    • Query 내 코드 작성 시 SQL 테이블(항목), 열, 쿼리 매개변수, 별칭, 조인, 하위 쿼리 및 WITH 절을 이해합니다.
    • 이제 SQL 구문 강조표시가 작동합니다.
    • SQL에서 테이블 이름을 마우스 오른쪽 버튼으로 클릭하여 이름을 변경할 수 있으며, 이렇게 하면 상응하는 자바 또는 Kotlin 코드도 다시 작성됩니다(예를 들면 쿼리의 반환 유형 포함). 그 반대의 경우도 마찬가지로 자바 클래스 또는 필드 이름을 변경하면 상응하는 SQL 코드가 다시 작성됩니다.
    • Find usages(컨텍스트 메뉴의 Find usages를 마우스 오른쪽 버튼으로 클릭하여 선택) 사용 시 SQL 사용량이 표시됩니다.
    • Ctrl(Mac에서는 Command) 키를 누른 상태에서 항목을 클릭하여 자바 또는 Kotlin 코드의 SQL 항목 선언으로 이동할 수 있습니다.

    Room에서 SQL을 사용하는 방법에 관한 자세한 내용은 Room을 사용하여 로컬 데이터베이스에 데이터 저장을 참고하세요.

    데이터 결합 업데이트

    이 업데이트에는 데이터 결합에 관한 몇 가지 개선사항이 포함되어 있습니다.

    • 이제 LiveData 객체를 데이터 결합 표현식의 식별 가능한 필드로 사용할 수 있습니다. ViewDataBinding 클래스는 이제 LiveData 객체를 관찰하는 데 사용하는 새로운 setLifecycle() 메서드를 포함합니다.

    • ObservableField 클래스는 이제 생성자에서 다른 Observable 객체를 허용할 수 있습니다.

    • 데이터 결합 클래스의 새로운 증분 컴파일러를 미리 볼 수 있습니다. 새 컴파일러의 세부정보와 사용 설정 안내는 데이터 결합 컴파일러 V2를 참고하세요.

      새로운 컴파일러의 이점은 다음과 같습니다.

      • ViewBinding 클래스는 자바 컴파일러 이전에 Gradle용 Android 플러그인에 의해 생성됩니다.

      • 라이브러리는 결합 클래스를 매번 재생성하는 대신 앱이 컴파일될 때 생성된 결합 클래스를 유지합니다. 다중 모듈 프로젝트의 성능을 크게 향상시킬 수 있습니다.

    컴파일러 및 Gradle

    D8이 기본 DEX 컴파일러입니다

    이제 DEX 바이트코드 생성에 기본적으로 D8 컴파일러가 사용됩니다.

    새로운 DEX 컴파일러에는 다음을 비롯한 여러 이점이 있습니다.

    • 더 빠른 덱싱
    • 낮은 메모리 사용량
    • 향상된 코드 생성(개선된 레지스터 할당, 더 스마트한 문자열 테이블)
    • 단계별 코드 실행 시 더 나은 디버깅 환경 제공

    이전에 D8 컴파일러를 수동으로 사용 중지하지 않았다면 코드나 개발 워크플로를 변경하지 않아도 이러한 이점을 얻을 수 있습니다. gradle.properties에서 android.enableD8false로 설정했다면 플래그를 삭제하거나 다음과 같이 true로 설정하세요.

    android.enableD8=true
    

    자세한 내용은 새로운 DEX 컴파일러를 참고하세요.

    증분 디슈가링

    자바 8 언어 기능을 사용하는 프로젝트에서 증분 디슈가링이 기본적으로 사용 설정되어 빌드 시간을 개선할 수 있습니다.

    디슈가링은 구문 슈가를 컴파일러가 더 효율적으로 처리할 수 있는 형태로 변환합니다.

    프로젝트의 gradle.properties 파일에 다음을 지정하여 증분 디슈가링을 사용 중지할 수 있습니다.

    android.enableIncrementalDesugaring=false
    

    단순화된 출력 창

    Gradle ConsoleSyncBuild 탭이 포함된 Build 창으로 대체되었습니다.

    단순화된 새로운 Build 창을 사용하는 방법에 관한 자세한 내용은 빌드 프로세스 모니터링을 참고하세요.

    일괄 업데이트 및 색인 생성 동시 실행

    불필요한 많은 색인 생성 작업에 낭비되는 시간을 줄여 Gradle 동기화 및 IDE 색인 생성 프로세스를 훨씬 더 효율적으로 처리할 수 있게 되었습니다.

    C++ 및 LLDB

    C++ 개발의 코딩, 동기화, 빌드 및 디버깅 단계에서 품질과 성능을 크게 개선했습니다. 개선사항에는 다음이 포함됩니다.

    • 대규모 C++ 프로젝트 작업을 하는 경우 기호 작성에 들어가는 시간이 크게 단축됩니다. 대규모 프로젝트의 동기화 시간도 크게 줄어듭니다.

    • 캐시된 결과를 더 적극적으로 재사용함으로써 CMake로 빌드 및 동기화할 때의 성능이 향상되었습니다.

    • 더 많은 C++ 데이터 구조를 위해 형식 지정 도구('pretty printers')를 추가하여 LLDB 출력을 더 쉽게 읽을 수 있습니다.

    • LLDB는 이제 Android 4.1(API 수준 16) 이상에서만 작동합니다.

    Kotlin

    Kotlin이 버전 1.2.30으로 업그레이드됨

    Android 스튜디오 3.1에는 Kotlin 버전 1.2.30이 포함되어 있습니다.

    이제 Kotlin 코드가 명령줄 린트 검사를 통해 분석됨

    이제 명령줄에서 린트를 실행하면 Kotlin 클래스가 분석됩니다.

    린트를 실행하려는 각 프로젝트에서는 Google의 Maven 저장소가 최상위 build.gradle 파일에 포함되어야 합니다. Android 스튜디오 3.0 이상에서 만들어진 프로젝트에는 Maven 저장소가 이미 포함되어 있습니다.

    성능 도구

    CPU 프로파일러를 사용하는 네이티브 C++ 프로세스 샘플

    이제 CPU 프로파일러에는 앱 네이티브 스레드의 샘플링된 트레이스를 기록하는 기본 구성이 포함됩니다. Android 8.0(API 수준 26) 이상을 실행하는 기기에 앱을 배포한 후 CPU 프로파일러의 기록 구성 드롭다운 메뉴에서 Sampled (Native)를 선택하여 이 구성을 사용할 수 있습니다. 그 이후에는 평소와 같이 트레이스를 기록 및 검사할 수 있습니다.

    기록 구성을 만들어 샘플링 간격과 같은 기본 설정을 변경할 수 있습니다.

    자바 스레드 추적으로 다시 전환하려면 Sampled (Java) 또는 Instrumented (Java) 구성을 선택하세요.

    CPU 트레이스, 메모리 할당 결과 및 힙 덤프 필터링

    CPU 프로파일러메모리 프로파일러에는 메서드 트레이스, 메모리 할당 또는 힙 덤프 기록의 결과를 필터링할 수 있는 검색 기능이 포함되어 있습니다.

    검색하려면 창의 오른쪽 상단에서 Filter 를 클릭하고 쿼리를 입력한 후 Enter 키를 누르세요.

    도움말: Control + F(Mac에서는 Command + F)를 눌러 검색 필드를 열 수도 있습니다.

    CPU 프로파일러의 Flame Chart 탭에서 검색어와 관련된 메서드가 포함된 호출 스택이 강조표시되며 차트의 왼쪽으로 이동했습니다.

    메서드, 클래스 또는 패키지 이름을 기준으로 필터링하는 방법을 자세히 알아보려면 메서드 트레이스 기록 및 검사를 참고하세요.

    네트워크 프로파일러의 Request 탭

    이제 네트워크 프로파일러에는 선택한 타임라인 동안의 네트워크 요청에 관한 세부정보를 제공하는 Request 탭이 포함되었습니다. 이전 버전에서는 네트워크 프로파일러에서 네트워크 응답에 관한 정보만 제공했습니다.

    네트워크 프로파일러의 스레드 뷰

    네트워크 프로파일러에서 타임라인의 일부를 선택한 후 다음 탭 중 하나를 선택하여 그 기간 동안의 네트워크 활동에 관한 세부정보를 볼 수 있습니다.

    • Connection View: Android 스튜디오의 이전 버전과 같은 정보를 제공합니다. 앱의 모든 CPU 스레드에 걸쳐 타임라인의 선택된 부분 동안 전송되거나 수신된 파일이 나열됩니다. 각 요청의 크기, 유형, 상태 및 전송 기간을 검사할 수 있습니다.
    • Thread View: 앱의 각 CPU 스레드의 네트워크 활동이 표시됩니다. 이 뷰를 사용하면 각 네트워크 요청에 책임이 있는 앱의 스레드를 검사할 수 있습니다.

    Layout Inspector

    Layout Inspector에는 지원 중단된 Hierarchy Viewer 및 Pixel Perfect 도구에서 이전에 제공되던 일부 기능을 포함한 새로운 기능이 포함되어 있습니다.

    • 레이아웃 탐색 및 검사를 위한 확대/축소 버튼과 단축키
    • 참조 그리드 오버레이
    • 참조 이미지를 로드하고 오버레이로 사용할 수 있는 기능(레이아웃과 UI 모형을 비교하는 데 유용함)
    • 하위 트리 미리보기 렌더링을 통해 복잡한 레이아웃에서 뷰를 분리

    Layout Editor

    Layout EditorPalette에는 다음과 같은 많은 개선사항이 포함되었습니다.

    • 뷰 및 레이아웃의 카테고리 재구성
    • 뷰 및 레이아웃의 새로운 Common 카테고리가 생겼으며 Favorite 명령어로 추가할 수 있음
    • 뷰 및 레이아웃 검색 개선
    • 특정 뷰 또는 레이아웃 요소의 문서를 열기 위한 새로운 명령어

    Component 트리 또는 디자인 편집기에서 새로운 Convert view 명령어를 사용하여 뷰 또는 레이아웃을 다른 유형의 뷰 또는 레이아웃으로 변환할 수 있습니다.

    이제 Attributes 창 상단의 뷰 검사기에서 새로운 Create a connection 버튼을 사용하여 선택된 뷰 근처의 항목에 관한 제약 조건을 쉽게 만들 수 있습니다.

    Run 및 Instant Run

    Select deployment target 대화상자에 있는 Use same selection for future launches 옵션의 동작이 더 일관성 있게 개선되었습니다. Use same selection 옵션이 사용 설정되었다면 선택된 기기가 더 이상 연결되지 않을 때까지는 Run 명령어를 처음으로 사용할 때만 Select deployment target 대화상자가 열립니다.

    Android 8.0(API 수준 26) 이상을 실행하는 기기를 타겟팅할 때는 Instant Run 명령어를 사용하여 애플리케이션을 다시 시작하지 않고도 리소스에 변경사항을 배포할 수 있습니다. 이렇게 할 수 있는 이유는 리소스가 분할 APK에 포함되어 있기 때문입니다.

    에뮬레이터

    Android 스튜디오 3.0 이후 에뮬레이터의 새로운 기능 및 변경사항에 관한 자세한 내용은 버전 27.0.2부터 버전 27.1.12까지의 Android Emulator 출시 노트를 참고하세요.

    주요 개선사항은 다음과 같습니다.

    • Save now 명령어를 사용하여 맞춤 시작 상태를 저장하는 기능을 통해 에뮬레이터 상태를 저장하고 더 빠르게 시작할 수 있는 Quick Boot 스냅샷
    • 창 없는 에뮬레이터 화면
    • Android 8.0(API 수준 26), Android 8.1(API 수준 27) 및 Android P 개발자 프리뷰용 시스템 이미지

    사용자 인터페이스 및 사용자 환경 개선

    더 많은 도움말, 단축키 및 유용한 메시지

    Android 스튜디오 전체에 걸쳐 여러 위치에 도움말과 유용한 메시지 오버레이를 추가했습니다.

    명령어의 단축키를 보려면 도움말이 표시될 때까지 마우스 포인터를 버튼 위에 올려놓으세요.

    Tools > Android 메뉴 삭제됨

    Tools > Android 메뉴가 삭제되었으며, 이전에 이 메뉴에 있던 명령어가 이동했습니다.

    • 대다수의 명령어가 Tools 메뉴 바로 아래로 이동했습니다.
    • Sync project with gradle files 명령어는 File 메뉴로 이동했습니다.
    • Device Monitor 명령어가 아래 설명과 같이 삭제되었습니다.

    명령줄에서 Device Monitor 사용 가능

    Android 스튜디오 3.1에서는 Device Monitor의 역할이 이전보다 줄어들었습니다. Device Monitor를 통해 사용 가능한 기능 대부분이 이제 새롭게 개선된 도구에서 제공됩니다.

    명령줄에서 Device Monitor를 호출하는 방법과 Device Monitor를 통해 사용할 수 있는 도구를 자세히 알아보려면 Device Monitor 문서를 참고하세요.

    3.0(2017년 10월)

    Android 스튜디오 3.0.0은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.

    macOS 사용자: 이전 버전의 Android 스튜디오를 업데이트할 때 'Some conflicts were found in the installation area'라는 업데이트 오류 대화상자가 표시될 수 있습니다. 이 오류를 무시하고 Cancel을 클릭하여 설치를 계속하면 됩니다.

    3.0.1(2017년 11월)

    일반적인 버그 수정 및 성능 개선을 포함하는 Android 스튜디오 3.0의 소규모 업데이트입니다.

    Gradle용 Android 플러그인 3.0.0

    새로운 Gradle용 Android 플러그인은 다양한 개선사항과 새로운 기능을 포함하고 있지만 주로 모듈 수가 많은 프로젝트의 빌드 성능을 개선합니다. 이러한 대규모 프로젝트에서 새 플러그인을 사용하면 다음과 같은 이점이 있습니다.

    • 새로운 지연된 종속 항목 해결로 인해 더 빨라진 빌드 구성 시간
    • 빌드 중인 프로젝트와 변형에서만 변형 인식 종속 항목 해결
    • 코드나 리소스에 간단한 변경사항 적용 시 더 빨라진 증분 빌드 시간

    이 버전에는 다음이 포함됩니다.

    • Android 8.0 지원
    • 언어 리소스를 기반으로 하는 별도의 APK 빌드 지원
    • 자바 8 라이브러리 및 자바 8 언어 기능 지원(Jack 컴파일러 필요 없음)
    • Android 테스트 지원 라이브러리 1.0 지원(Android 테스트 유틸리티 및 Android Test Orchestrator)
    • 향상된 ndk-build 및 cmake 빌드 속도
    • 향상된 Gradle 동기화 속도
    • 이제 AAPT2가 기본적으로 사용 설정됨
    • 이제 ndkCompile 사용이 더 제한됩니다. 대신 CMake나 ndk-build를 사용하여 APK로 패키징하려는 네이티브 코드를 컴파일하여 이전해야 합니다. 자세한 내용은 ndkcompile에서 이전을 읽어보세요.

    변경사항을 자세히 알아보려면 Gradle용 Android 플러그인 출시 노트를 참고하세요.

    새로운 플러그인으로 업그레이드할 준비가 되었다면 Gradle용 Android 플러그인 3.0.0으로 이전을 참고하세요.

    Kotlin 지원

    Google I/O 2017에서 발표된 대로, 이제 Kotlin 프로그래밍 언어가 Android에서 공식적으로 지원됩니다. 이번 출시부터 Android 스튜디오에는 Android 개발을 위한 Kotlin 언어 지원이 포함됩니다.

    자바 파일을 Kotlin으로 변환(Code > Convert Java File to Kotlin File 클릭)하거나 New Project 마법사를 사용해 새로운 Kotlin 지원 프로젝트를 만들어서 Kotlin을 프로젝트에 통합할 수 있습니다.

    시작하려면 프로젝트에 Kotlin 추가 방법을 읽어보세요.

    자바 8 언어 기능 지원

    이제 특정 자바 8 언어 기능을 사용하고 자바 8로 빌드된 라이브러리를 이용할 수 있습니다. 더 이상 Jack이 필요하지 않으므로 기본 도구 모음에 내장되어 있는 개선된 자바 8 지원 기능을 사용하려면 먼저 Jack을 사용 중지해야 합니다.

    새로운 자바 8 언어 도구 모음을 지원하도록 프로젝트를 업데이트하려면 Project Structure 대화상자(File > Project Structure 클릭)에서 Source CompatibilityTarget Compatibility를 1.8로 업데이트하세요. 자세한 내용은 자바 8 언어 기능 사용 방법을 참고하세요.

    Android 프로파일러

    새로운 Android 프로파일러는 Android Monitor 도구를 대체하며 앱의 CPU, 메모리, 네트워크 사용량을 실시간으로 측정할 수 있는 새로운 도구 모음을 제공합니다. 샘플 기반 메서드 추적을 실행하여 코드 실행 시점을 정하고, 힙 덤프를 캡처하고, 메모리 할당을 보고, 네트워크 전송 파일의 세부정보를 검사할 수 있습니다.

    실행하려면 View > Tool Windows > Android Profiler를 클릭합니다(또는 툴바에서 Android Profiler 클릭).

    창 상단의 이벤트 타임라인에는 터치 이벤트, 키 누름 및 활동 변경이 표시되므로 타임라인의 다른 성능 이벤트를 더 잘 파악할 수 있습니다.

    Android 프로파일러의 개요 타임라인에서 CPU, MEMORY 또는 NETWORK 타임라인을 클릭하여 상응하는 프로파일러 도구에 액세스할 수 있습니다.

    CPU 프로파일러

    CPU 프로파일러를 사용하면 샘플 또는 계측된 CPU 트레이스를 트리거하여 앱의 CPU 스레드 사용을 분석할 수 있습니다. 그런 다음 다양한 데이터 뷰 및 필터를 사용하여 CPU 성능 문제를 해결할 수 있습니다.

    자세한 내용은 CPU 프로파일러 가이드를 참고하세요.

    메모리 프로파일러

    메모리 프로파일러는 앱 끊김, 멈춤, 심지어 비정상 종료를 일으킬 수 있는 메모리 누수 및 메모리 변동을 식별하는 데 도움을 줍니다. 메모리 프로파일러는 앱의 메모리 사용 현황을 실시간 그래프로 보여주며 힙 덤프를 캡처하고 가비지 컬렉션을 강제 실행하고 메모리 할당을 추적하는 기능을 제공합니다.

    자세한 내용은 메모리 프로파일러 가이드를 참고하세요.

    네트워크 프로파일러

    네트워크 프로파일러를 사용하면 앱의 네트워크 활동을 모니터링하고 각 네트워크 요청의 페이로드를 검사하고 네트워크 요청을 생성한 코드에 다시 연결할 수 있습니다.

    자세한 내용은 네트워크 프로파일러 가이드를 참고하세요.

    APK 프로파일링 및 디버깅

    이제 Android 스튜디오를 사용하면 Android 스튜디오 프로젝트에서 빌드하지 않고도 APK를 프로파일링하고 디버그할 수 있습니다. 단, APK가 디버깅을 사용하도록 빌드되어야 하며 디버그 기호 및 소스 파일에 액세스할 수 있어야 합니다.

    시작하려면 Android 스튜디오 시작 화면에서 Profile or debug APK를 클릭하세요. 프로젝트가 이미 열려 있는 경우에는 메뉴 바에서 File > Profile or Debug APK를 클릭합니다. 이렇게 하면 압축해제된 APK 파일이 표시되지만, 코드를 디컴파일하지는 않습니다. 따라서 중단점을 올바르게 추가하고 스택 트레이스를 보려면 자바 소스 파일과 네이티브 디버그 기호를 연결해야 합니다.

    자세한 내용은 사전 빌드 APK 프로파일링 및 디버그을 참고하세요.

    Device File Explorer

    새로운 Device File Explorer를 사용하면 연결된 기기의 파일 시스템을 검사하고 기기와 컴퓨터 간에 파일을 전송할 수 있습니다. 이 도구는 DDMS에서 사용할 수 있는 파일 시스템 도구를 대체합니다.

    실행하려면 View > Tool Windows > Device File Explorer를 클릭하세요.

    자세한 내용은 Device File Explorer 가이드를 참고하세요.

    인스턴트 앱 지원

    새로운 Android 인스턴트 앱 지원을 통해 Instant App 모듈과 Feature 모듈이라는 두 가지 새로운 모듈 유형을 사용하여 프로젝트에서 인스턴트 앱을 만들 수 있습니다(인스턴트 앱 개발 SDK를 설치해야 함).

    또한 Android 스튜디오에는 기존 프로젝트에 인스턴트 앱 지원을 추가할 수 있는 새로운 모듈화 리팩터링 작업이 포함되어 있습니다. 예를 들어 인스턴트 앱 기능 모듈에 일부 클래스를 배치하기 위해 프로젝트를 리팩터링하려고 한다면 Project 창에서 클래스를 선택하고 Refactor > Modularize를 클릭합니다. 표시되는 대화상자에서 클래스가 이동해야 할 모듈을 선택하고 OK를 클릭합니다.

    인스턴트 앱을 테스트할 준비가 되면 Run Configuration Launch Options 내에서 인스턴트 앱의 URL을 지정하여 연결된 기기에서 인스턴트 앱 모듈을 빌드하고 실행할 수 있습니다. Run > Edit Configurations를 선택하고 인스턴트 앱 모듈을 선택한 후 Launch Options에서 URL을 설정합니다.

    자세한 내용은 Android 인스턴트 앱을 참고하세요.

    Android Things 모듈

    Android 기반 IOT 기기 개발을 시작하는 데 도움이 되는 New Project 및 New Module 마법사의 새로운 Android Things 템플릿입니다.

    자세한 내용은 Android Things 프로젝트 만들기를 참고하세요.

    Adaptive Icons 마법사

    Image Asset Studio에서는 이제 벡터 드로어블을 지원하며 이전 기기에 사용되는 기존 아이콘('레거시' 아이콘)을 만드는 동시에 Android 8.0을 위한 적응형 런처 아이콘을 만들 수 있습니다.

    시작하려면 프로젝트의 res 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 New > Image Asset을 클릭합니다. Asset Studio 창에서 아이콘 유형으로 Launcher Icons (Adaptive and Legacy)를 선택합니다.

    자세한 내용은 적응형 아이콘을 참고하세요.

    글꼴 리소스 지원

    Android 8.0의 새로운 글꼴 리소스를 지원하기 위해 Android 스튜디오에는 앱에 글꼴을 번들로 제공하거나 기기에 글꼴을 다운로드하도록 프로젝트를 구성(가능한 경우)하도록 돕는 글꼴 리소스 선택기가 포함되었습니다. 또한 Layout Editor를 통해 레이아웃의 글꼴을 미리 볼 수도 있습니다.

    다운로드 가능한 글꼴을 사용하려면 기기 또는 에뮬레이터가 Google Play 서비스 v11.2.63 이상을 실행 중이어야 합니다. 자세한 내용은 다운로드 가능한 글꼴을 참고하세요.

    Firebase 앱 색인 생성 어시스턴트

    Firebase Assistant가 앱 색인 생성을 테스트하기 위한 새로운 가이드와 함께 업데이트되었습니다. Assistant를 열려면 Tools > Firebase를 선택합니다. 그런 다음 App Indexing > Test App Indexing을 선택합니다.

    가이드에는 공개 및 개인 콘텐츠 색인 생성을 테스트하는 새로운 버튼이 포함되어 있습니다.

    • 2단계에서 Preview search results를 클릭하여 URL이 Google 검색결과에 표시되는지 확인합니다.
    • 3단계에서 Check for errors를 클릭하여 앱에서 색인 생성 가능한 객체가 개인 콘텐츠 색인에 추가되었는지 확인합니다.

    Android App Links Assistant가 다음과 같은 새로운 기능과 함께 업데이트되었습니다.

    • 인텐트 필터가 실제 URL을 처리하도록 각 URL 매핑의 URL 테스트를 추가합니다.

      아래에 설명된 <tools:validation> 태그를 사용하여 이러한 URL 테스트를 직접 정의할 수도 있습니다.

    • Google Smart Lock을 지원하도록 적절한 객체 항목으로 디지털 애셋 링크 파일을 만들고 상응하는 asset_statements <meta-data> 태그를 매니페스트 파일에 추가합니다.

    URL 인텐트 필터 검사기

    Android 스튜디오에서는 이제 매니페스트 파일에서 인텐트 필터 URL을 테스트할 수 있는 특수 태그를 지원합니다. 이 태그는 App Links Assistant에서 생성하는 것과 동일한 태그입니다.

    인텐트 필터의 테스트 URL을 선언하려면 <tools:validation> 요소를 상응하는 <intent-filter> 요소와 함께 추가합니다. 예:

    <activity ...>
        <intent-filter>
            ...
        </intent-filter>
        <tools:validation testUrl="https://www.example.com/recipe/1138" />
    </activity>
    

    또한 <manifest> 태그에 xmlns:tools="http://schemas.android.com/tools"도 포함해야 합니다.

    테스트 URL 중 하나라도 인텐트 필터 정의를 통과하지 못하면 린트 오류가 나타납니다. 이러한 오류가 발생해도 디버그 변형을 빌드할 수 있지만 출시 빌드는 손상됩니다.

    Layout Editor

    Layout Editor가 다음을 포함한 여러 가지 개선사항과 함께 업데이트되었습니다.

    • 새로운 툴바 레이아웃 및 아이콘
    • 구성요소 트리의 레이아웃 업데이트
    • 드래그 앤 드롭 뷰 삽입 개선
    • 편집기 아래의 새로운 오류 패널에 모든 문제와 함께 해결을 위한 제안이 표시됨(제안이 있을 때)
    • 다음을 포함하여 ConstraintLayout으로 빌드하기 위한 다양한 UI 개선사항
      • 배리어 만들기를 새롭게 지원
      • 그룹 만들기를 새롭게 지원: 툴바에서 Guidelines > Add Group 선택(ConstraintLayout 1.1.0 베타 2 이상이 필요함)
      • 체인을 만들기 위한 새로운 UI: 여러 뷰를 선택한 다음 마우스 오른쪽 버튼으로 Chain을 클릭하여 선택

    Layout Inspector

    Layout Inspector에는 속성을 공통 카테고리로 그룹화하는 기능과 View TreeProperties 창의 새로운 검색 기능을 포함하여 앱 레이아웃 관련 문제를 더 쉽게 디버그할 수 있는 개선사항이 포함되어 있습니다.

    APK Analyzer

    이제 apkanalyzer 도구를 통해 명령줄에서 APK Analyzer를 사용할 수 있습니다.

    APK Analyzer는 다음 개선사항과 함께 업데이트되었습니다.

    • ProGuard로 빌드된 APK에서는 다음을 포함하여 DEX 뷰어에 기능을 추가하는 ProGuard 매핑 파일을 로드할 수 있습니다.
      • 코드 축소 시 노드를 삭제하면 안 된다는 것을 나타내기 위해 노드를 굵게 표시
      • 축소 과정에서 삭제된 노드를 보여주는 버튼
      • 트리 보기에서 ProGuard에 의해 난독화된 노드의 원래 이름을 복원하는 버튼
    • 이제 DEX 뷰어에 각 패키지, 클래스, 메서드의 예상되는 크기 영향이 표시됩니다.
    • 상단의 새로운 필터링 옵션을 통해 필드와 메서드를 표시하거나 숨길 수 있습니다.
    • 트리 보기에서 DEX 파일에 정의되지 않은 참조인 노드가 기울임꼴로 표시됩니다.

    자세한 내용은 APK Analyzer로 빌드 분석을 참고하세요.

    D8 DEX 컴파일러 미리보기

    Android 스튜디오 3.0에는 D8이라는 새로운 DEX 컴파일러가 포함되었으며 선택적으로 사용할 수 있습니다. 최종적으로는 DX 컴파일러를 대체하게 되지만, 새로운 D8 컴파일러를 바로 사용하도록 선택할 수 있습니다.

    DEX 컴파일은 앱의 빌드 시간, .dex 파일 크기 및 런타임 성능에 직접 영향을 줍니다. 또한 새로운 D8 컴파일러와 기존의 DX 컴파일러를 비교해 보면 D8은 더 빠르게 컴파일하고 더 작은 .dex 파일을 출력하면서 앱 런타임 성능은 동일하거나 더 좋게 유지합니다.

    사용해 보려면 프로젝트의 gradle.properties 파일에 다음을 설정하세요.

    android.enableD8=true
    

    자세한 내용은 D8 컴파일러에 관한 블로그 게시물을 참고하세요.

    Google Maven 저장소

    Android 스튜디오는 이제 Android SDK Manager 대신 Google의 Maven 저장소를 기본적으로 사용하여 Android 지원 라이브러리, Google Play 서비스, Firebase 및 기타 종속 항목 업데이트를 받을 수 있습니다. 이렇게 하면 특히 CI(지속적 통합) 시스템을 사용하는 경우 더 간편하게 라이브러리를 최신 상태로 유지할 수 있습니다.

    이제 새로운 모든 프로젝트에 Google Maven 저장소가 기본적으로 포함됩니다. 기존 프로젝트를 업데이트하려면 다음과 같이 최상위 build.gradle 파일의 repositories 블록에 google()을 추가하세요.

    allprojects {
        repositories {
            google()
        }
    }
    

    여기에서 Google Maven 저장소에 관해 자세히 알아보세요.

    기타 변경사항

    • Android 스튜디오를 사용하는 네이티브 디버깅은 더 이상 32비트 Windows에서 작동하지 않습니다. Google은 이 플랫폼을 사용하는 개발자가 매우 드물기 때문에 다른 플랫폼에 초점을 맞추기로 했습니다. 32비트 Windows를 사용 중인데 네이티브 코드를 디버그할 계획이 있다면 Android 스튜디오 2.3을 계속 사용해야 합니다.
    • 기본 IDE가 IntelliJ 2017.1.2로 업그레이드되어 2016.32017.1의 여러 가지 새로운 기능이 추가되었으며 여기에는 자바 8 언어 리팩터링, 매개변수 힌트, 시맨틱 강조표시, 드래그 가능한 중단점, 순간 검색 결과 등이 있습니다.
    • 다수의 새로운 린트 검사가 추가되었습니다.
    • 최신 Android 에뮬레이터 업데이트도 참고하세요.

    2.3(2017년 3월)

    Android 스튜디오 2.3.0은 주로 버그 수정 및 안정화에 초점을 맞춘 버전이지만, 여러 가지 새로운 기능도 포함되어 있습니다.

    2.3.3(2017년 6월)

    Android O(API 레벨 26) 지원이 추가된 소규모 업데이트입니다.

    2.3.2(2017년 4월)

    다음 변경사항이 포함된 Android 스튜디오 2.3의 소규모 업데이트입니다.

    • 시스템 이미지에서 Google Play를 지원하도록 AVD 관리자 업데이트
    • NDK의 R14 이상을 사용할 때 NDK 빌드의 버그 수정

    Android 에뮬레이터 26.0.3의 해당 업데이트도 참조하세요.

    2.3.1(2017년 4월)

    일부 실제 Android 기기가 Instant Run과 제대로 호환되지 않는 문제가 수정된 Android 스튜디오 2.3의 소규모 업데이트입니다(문제 #235879 참고).

    새로운 기능

    • Android 스튜디오는 이제 PNG, BMP, JPG 및 정적 GIF 파일을 WebP 형식으로 변환할 수 있습니다. WebP는 Google에서 제공하는 이미지 파일 형식으로, 손실 압축(예: JPEG)과 투명도(예: PNG)를 제공하지만 JPEG나 PNG보더 더 나은 압축을 제공할 수 있습니다. 자세한 내용은 Android 스튜디오에서 WebP로 이미지 변환을 참고하세요.
    • 새로운 App Links Assistant는 단계별 마법사로 앱에 Android 앱 링크를 추가하는 절차를 간소화합니다. Android 앱 링크는 Android 앱의 특정 콘텐츠로 곧바로 사용자를 안내하는 HTTP URL입니다.
    • Layout Editor는 이제 다음과 같은 두 가지 새로운 ConstraintLayout 기능을 지원합니다.
      • 가로세로 비율에 따라 뷰 크기를 정의합니다.
      • 제약 조건 체인을 사용하여 압축, 펼치기 및 가중치가 적용된 선형 그룹을 만듭니다.
      자세한 내용은 ConstraintLayout으로 반응형 UI 빌드를 참고하세요.
    • 이제 Layout Editor에서 즐겨찾기 속성 목록을 만들 수 있으므로 가장 많이 사용하는 속성에 액세스하기 위해 View all attributes를 클릭하지 않아도 됩니다.
    • Vector Import 대화상자(File > New > Vector Asset)를 사용하여 머티리얼 아이콘을 추가할 때 카테고리 또는 아이콘 이름을 기준으로 사용 가능한 목록을 필터링할 수 있습니다. 자세한 내용은 머티리얼 아이콘 추가를 참고하세요.
    • 주석이 새로 추가 및 업데이트되었습니다. 메서드, 클래스 및 패키지의 새로운 @RestrictTo 주석을 사용하여 API를 제한할 수 있습니다. 업데이트된 @VisibleForTesting 주석에는 이제 선택적인 otherwise 인수가 있습니다. 테스트를 위해 가시적으로 만들어야 할 필요가 없다면 이 인수를 통해 메서드 가시성이 어느 수준이어야 하는지 지정할 수 있습니다. 린트에서는 otherwise 옵션을 사용하여 의도하는 메서드 가시성을 강제 적용할 수 있습니다.
    • 새로운 린트 기준 지원을 통해 프로젝트의 현재 경고 세트의 스냅샷을 이후 검사 실행의 기준으로 사용하여 새로운 문제만 보고되도록 만들 수 있습니다. 기준 스냅샷을 사용하면 먼저 모든 기존 문제로 돌아가 문제를 해결하지 않고도 린트를 사용해 새로운 문제의 빌드를 통과시키지 않게 만들 수 있습니다.
    • 새로운 린트 검사에는 다음이 포함됩니다.
      • 더 이상 사용되지 않는 SDK_INT 검사: Android 스튜디오는 더 이상 사용되지 않는, SDK 버전을 확인하는 코드를 삭제합니다.
      • 객체 애니메이터 확인: 린트는 코드를 분석하여 ObjectAnimator 호출이 올바른 서명이 포함된 유효한 메서드를 참조하는지 확인하고 출시 빌드 과정에서 ProGuard가 이러한 메서드의 이름을 바꾸거나 메서드를 삭제하지 못하도록 메서드에 @Keep으로 주석이 달려있는지 확인합니다.
      • 불필요한 항목 데코레이터 카피: 이전 버전의 RecyclerView 라이브러리에는 분할 데코레이터 클래스가 포함되지 않았지만, 지원 데모에서 샘플로 제공되었습니다. 라이브러리의 최근 버전에는 분할 데코레이터 클래스가 포함되어 있습니다. 린트는 오래된 샘플을 찾아 새로운 샘플로 교체하도록 제안합니다.
      • WifiManager 누출: Android 7.0(API 수준 24) 이전에는 Context.getSystemService()WifiManager를 초기화하면 컨텍스트가 애플리케이션 컨텍스트가 아닐 때 메모리 누수가 발생할 수 있습니다. 린트는 이러한 초기화를 살펴보고 컨텍스트가 애플리케이션 컨텍스트인 것을 확인할 수 다면 Context.getApplicationContext()를 사용하여 초기화에 적절한 컨텍스트를 받도록 제안합니다.
      • 향상된 리소스 접두어: 기존 resourcePrefix 린트 검사에는 많은 제한이 있었습니다. 이제 android { resourcePrefix 'my_lib' }와 같은 접두어로 프로젝트를 구성할 수 있으며, 린트는 모든 리소스가 이 접두어를 사용하는지 확인합니다. 스타일과 테마에 따라 이름의 변형을 사용할 수 있습니다. 예를 들어 my_lib 접두어의 경우 이름이 MyLibTheme, myLibAttr, my_lib_layout 등인 테마가 있을 수 있습니다.
      • WebP로 전환: 이 검사에서는 프로젝트의 minSdkVersion 설정에 따라 프로젝트에서 WebP 형식으로 변환할 수 있는 이미지를 식별합니다. 연결된 빠른 수정 프로그램이 이미지를 자동으로 변환하거나 개발자가 직접 이미지를 WebP로 변환할 수 있습니다.
      • 안전하지 않은 WebP: 프로젝트에 이미 WebP 이미지가 포함되어 있다면 이 검사에서 프로젝트를 분석하여 포함된 이미지를 지원할 만큼 minSdkVersion 설정이 충분히 높은지 확인합니다. Android 및 Android 스튜디오의 WebP 지원에 관한 자세한 내용은 WebP를 기본적으로 지원하는 브라우저Android 스튜디오를 사용하여 WebP 이미지 만들기를 참고하세요.

    변경사항

    • Instant Run을 사용하여 변경사항을 푸시하는 별도의 버튼: 앱을 배포한 이후에 Apply Changes 를 클릭하면 Instant Run을 사용하여 실행 중인 앱에 증분 변경사항을 빠르게 푸시할 수 있습니다. 변경사항을 안정적으로 푸시하고 앱을 강제로 다시 시작하려고 할 때 언제든지 Run Debug 버튼을 사용할 수 있습니다.
      • Instant Run은 Android 5.0(API 수준 21) 이상을 실행하는 대상 기기에 앱을 배포할 때만 지원됩니다.
      • CMake 또는 ndk-build를 사용하여 외부 네이티브 프로젝트에 연결하는 프로젝트에서는 더 이상 Instant Run을 사용 중지할 수 없습니다. 그러나 네이티브 코드가 아닌 자바 코드에 증분 변경사항을 푸시할 때는 Instant Run만 사용할 수 있습니다.
      • 이제 콜드 스왑(Run 을 클릭하여 실행 중인 앱에 강제 실행할 수 있음)의 안정성이 개선되었습니다. 콜드 스왑을 강제 실행하면 알림 및 위젯 UI 변경사항이 대상 기기에 업데이트되지 않는 문제가 해결됩니다.
      • 앱을 훨씬 더 빠르게 시작하는 최적화가 포함되어 있습니다. 이러한 최적화는 프로파일링에 영향을 줄 수 있으므로 앱을 프로파일링할 때는 항상 일시적으로 Instant Run을 사용 중지해야 합니다.
    • AVD Manager SDK Manager 버튼이 이제 전체 툴바뿐 아니라 간편 탐색 메뉴에도 포함되어 있습니다. 간편 탐색 메뉴를 사용하려면 View를 클릭하여 View 메뉴를 연 후 Navigation Bar가 선택되어 있고 Toolbar가 선택되어 있지 않은 상태인지 확인합니다.

    • 'Hybrid' 디버거의 이름이 'Dual' 디버거로 변경되었습니다.
    • Run/Debug Configurations 대화상자의 왼쪽 창에 있는 Defaults의 다음 실행 구성 이름이 변경되었으나 동작은 변경되지 않았습니다.
      • JUnit 이름이 Android JUnit으로 변경되었습니다. JUnit 실행 구성을 사용하는 프로젝트가 있는 경우 Android 스튜디오로 프로젝트를 처음 열 때 이러한 구성이 Android JUnit 실행 구성으로 변환됩니다. 이름 변경을 알려주는 대화상자가 표시됩니다.
      • Android Tests 이름이 Android Instrumented Tests로 변경되었습니다.
    • GPU 디버거가 버전 2.3부터 Android 스튜디오에서 삭제되었습니다. 이제 도구의 오픈소스 독립형 버전을 GitHub에서 사용할 수 있습니다.
    • *.gradle build 스크립트를 마우스 오른쪽 버튼으로 클릭할 때 Run/Debug 옵션이 더 이상 제공되지 않습니다.
    • 이제 모든 템플릿이 ConstraintLayout을 기본 레이아웃으로 사용합니다.
    • Layout Editor의 Widgets 팔레트의 디자인이 변경되었습니다.

    이번 출시에는 여러 가지 버그 수정도 포함되어 있습니다. 2.3.0의 모든 버그 수정을 참고하세요.

    알려진 문제: 일부 기기 제조업체는 앱이 기기에 설치된 후 자동으로 실행되는 것을 차단합니다. Android 스튜디오 2.3을 사용하는 실제 기기에 앱을 배포할 때 이 제한으로 인해 Instant Run의 의도된 동작이 중단되며 Error: Not found; no service started 메시지와 함께 오류가 발생합니다. 이 문제를 방지하려면 에뮬레이터를 사용하거나 기기 설정에서 앱 자동 실행을 사용 설정합니다. 이 절차는 기기마다 다르므로 제조업체에서 제공하는 안내를 확인하세요. 이 문제를 자세히 알아보려면 문제 #235879를 참고하세요.

    2.2(2016년 9월)

    2.2.3(2016년 12월)

    Android 스튜디오 2.2의 소규모 업데이트입니다. Gradle, 코어 IDE, 린트를 중심으로 한 버그 수정이 포함되어 있습니다.

    주요 빌드 변경사항은 다음과 같습니다.

    • ProGuard 버전 롤백. ProGuard 5.3.1에서 발견된 정확성 문제로 인해 ProGuard 5.2.1로 롤백했습니다. ProGuard팀과 신속한 해결을 위해 노력하고 있으며 Android 스튜디오 2.3 Canary 3에서 ProGuard 5.3.2를 출시할 것으로 예상됩니다.
    • aaptOptions IgnoreAssetsPattern이 제대로 작동하지 않는 버그 수정(문제 224167)
    • 제약 조건 레이아웃 라이브러리에서 Gradle 자동 다운로드 버그 수정(문제 212128)
    • JDK8/Kotlin 컴파일러 + dx 문제 버그 수정(문제 227729)

    2.2.3의 모든 버그 수정을 참고하세요.

    2.2.2(2016년 10월)

    Android 스튜디오 2.2의 소규모 업데이트입니다. 다음을 포함한 여러 변경사항 및 버그 수정이 포함되었습니다.

    • IDE를 통해 Instant Run 문제를 신고할 때 보고서에는 이제 InstantRun 이벤트의 logcat 출력도 포함됩니다. Instant Run을 개선할 수 있도록 추가 로깅을 사용 설정하고 모든 문제를 신고해 주세요.
    • Gradle의 여러 가지 소규모 버그 수정이 포함되었습니다.
    • 여러 APK 생성과 관련된 문제가 해결되었습니다.

    2.2.1(2016년 10월)

    Android 스튜디오 2.2의 소규모 업데이트입니다. Instant Run 문제를 해결하는 데 도움이 되는 여러 가지 버그 수정 및 추가 로깅을 사용하는 새로운 기능이 포함되었습니다. Instant Run을 개선할 수 있도록 추가 로깅을 사용 설정하고 모든 문제를 신고해 주세요.

    새로운 기능

    • Layout Editor가 완전히 새로워졌으며 ConstraintLayout을 지원하는 맞춤 빌드 도구가 제공됩니다.
    • 새로운 Layout Inspector를 사용하여 에뮬레이터나 기기에서 앱이 실행 중일 때 레이아웃 계층 구조의 스냅샷을 검사할 수 있습니다.
    • 새로운 Assistant 창을 통해 Firebase 서비스를 앱에 통합할 수 있습니다.
    • 새로운 APK Analyzer 도구에서 패키지 앱의 콘텐츠를 검사할 수 있습니다.
    • 새로운 Espresso Test Recorder 도구(현재 베타 상태)를 통해 자체 상호작용을 기록하여 UI 테스트를 생성할 수 있습니다.
    • 새로운 빌드 캐시(현재 실험 단계)를 사용하여 빌드 성능을 향상할 수 있습니다.
    • C/C++ 빌드가 CMake 및 ndk-build와 새롭게 통합되었습니다. APK에 패키징된 새로운 네이티브 코드 또는 기존 네이티브 코드를 컴파일 및 빌드하고 lldb를 사용하여 디버그하세요. 새 프로젝트의 경우 Android 스튜디오가 CMake를 기본적으로 사용하지만, 기존 프로젝트에는 ndk-build도 지원합니다. Android 애플리케이션에 네이티브 코드를 포함하는 방법을 알아보려면 프로젝트에 C 및 C++ 코드 추가를 참고하세요. lldb로 네이티브 코드를 디버그하는 방법을 알아보려면 네이티브 코드 디버그를 참고하세요.
    • 새로운 샘플 브라우저를 통해 Android 스튜디오 내에서 Google Android 샘플 코드를 간편하게 찾아 앱 개발을 시작할 수 있습니다.
    • 새로운 병합된 매니페스트 뷰어를 통해 모든 프로젝트 빌드 변형에서 매니페스트 파일이 앱 종속 항목과 병합되는 방식을 진단할 수 있습니다.
    • 이제 Run 창에 현재 실행 중인 앱의 로그 메시지가 포함됩니다. 참고로 logcat Monitor 디스플레이는 구성할 수 있지만 Run 창은 구성할 수 없습니다.
    • 새로운 Android Emulator 기능이 다음과 같이 추가되었습니다.
      • Virtual SensorsCellular > Signal Strength 컨트롤이 새로 추가되었습니다.
      • Cellular > Network type 컨트롤에 LTE 옵션이 추가되었습니다.
      • 마우스 휠로 세로 메뉴를 스크롤하기 위한 시뮬레이션된 세로 스와이프가 추가되었습니다.
    • 새로운 실행/디버그 구성 기능이 다음과 같이 추가되었습니다.
      • 이제 Android App 및 Android Tests 템플릿의 Debugger 탭에 LLDB로 디버깅하기 위한 여러 가지 새로운 옵션이 포함되었습니다.
      • Android App 및 Android Tests 템플릿의 Profiling 탭에 GPU 추적을 활성화하기 위한 Capture GPU Commands 옵션이 포함되었습니다. GPU 디버거에 GPU 트레이스를 표시할 수 있습니다(베타 기능).
      • Android Tests 템플릿에 Deployment Target을 위한 Firebase Test Lab Device Matrix 옵션이 포함되었습니다.
      • Native Application 템플릿이 지원 중단되었습니다. 프로젝트에서 이 템플릿을 사용하면 Android 스튜디오가 Android App 템플릿으로 자동으로 변환합니다.
      • Android Application 템플릿의 이름이 Android App으로 변경되었습니다.
    • GPU 디버거의 설치, 구성, 성능 및 UI 기능이 개선되었습니다(현재 베타 상태).
    • Android 스튜디오가 이제 OpenJDK 8과 함께 제공됩니다. 기존 프로젝트는 여전히 File > Project Structure > SDK Location에 지정된 JDK를 사용합니다. File > Project Structure > SDK Location을 클릭하고 Use embedded JDK 체크박스를 선택하여 새로운 번들 JDK를 사용하도록 전환할 수 있습니다.
    • UI에 새로운 도움말 메뉴 및 버튼이 추가되어 온라인 문서를 더 쉽게 찾을 수 있습니다.

    변경사항

    • IDE 코드베이스가 IntelliJ 15에서 IntelliJ 2016.1로 업데이트되었습니다.
    • 이제 Instant Run을 사용하려면 대상 기기 API 수준에 상응하는 플랫폼 SDK가 설치되어 있어야 합니다.
    • 사용자가 직장 프로필에서 또는 보조 사용자로 앱을 실행하면 Instant Run이 자동으로 사용 중지됩니다.
    • 변경사항이 배포되지 않거나 앱이 비정상 종료되는 Instant Run의 여러 안정성 문제가 해결되었습니다.
      • 일부 앱 애셋이 실행 중인 앱에 배포되지 않았습니다. (버그: #213454)
      • Serializable 클래스에 정의된 serialVersionUID가 없으면 사용자가 Instant Run과 비 Instant Run 세션 간에 전환할 때 앱이 비정상 종료되었습니다. (버그: #209006)
      • 스타일 변경사항이 Instant Run에 반영되지 않았습니다. (버그: #210851)
      • Instant Run 세션이 불안정하고 FileNotFoundException을 유발했습니다. (버그: #213083)
      • KitKat에 전체 재구성이 실행될 때까지 드로어블 변경사항이 반영되지 않았습니다. (버그: #21530)
      • 맞춤 sourceSets에 중첩 경로가 포함되었을 때 리소스 변경사항이 Instant Run에 반영되지 않았습니다. (버그: #219145)
      • 변경된 클래스에 enum 값이 있는 주석이 포함되어 있을 때 핫 스왑과 웜 스왑이 작동하지 않았습니다. (버그: #209047)
      • 주석 데이터 변경사항이 Instant Run에 반영되지 않았습니다. (버그: #210089)
      • IDE 외부에서 변경 시 Instant Run이 코드 변경사항을 인식하지 못합니다. (버그: #213205)
      • 보안 토큰 불일치로 인해 Instant Run 세션이 불안정했습니다. (버그: #211989
      • run-as를 올바르게 지원하지 않는 기기에서 콜드 스왑이 작동하지 않았습니다. (버그: #210875)
      • Instant Run을 다시 시작한 후 앱이 비정상 종료되었습니다. (버그: #219744)
      • Instant Run에서 Instant Debug로 전환하면 ClassNotFoundException이 발생했습니다. (버그: #215805)
    • 특히 대규모 프로젝트에서 IDE 내의 Gradle 동기화 성능이 향상되었습니다.
    • 새로운 앱 패키징 코드를 통해 전체 및 증분 빌드의 빌드 시간이 개선되었습니다.
    • 주석 프로세서 및 dexing in process 지원을 포함하여 Jack 컴파일러 성능 및 기능이 개선되었습니다. 자세히 알아보려면 Gradle용 Android 플러그인 2.2.0 출시 노트를 참고하세요.
    • AVD Manager에서 Scale AVD 속성이 삭제되었습니다.
    • 이제 Android Emulator -port-ports 명령줄 옵션에서 에뮬레이터 인스턴스가 사용 중인 포트와 일련번호를 보고하고 지정된 값에 문제가 있으면 경고를 표시합니다.
    • Create New Class 대화상자 및 상응하는 파일 템플릿이 개선되었습니다. 참고: 이전에 AnnotationType, Class, Enum, Interface 또는 Singleton 파일 템플릿을 맞춤설정했다면 새로운 템플릿에 맞춰 기존 템플릿을 수정해야 합니다. 수정하지 않으면 Create New Class 대화상자의 새 필드를 사용할 수 없습니다.
    • Vector Asset Studio 사용자 인터페이스가 개선되었으며 Adobe Photoshop Document(PSD) 파일 지원이 추가되었습니다.
    • Image Asset Studio 사용자 인터페이스가 개선되었습니다.
    • Theme Editor의 리소스 선택도구가 개선되었습니다.
    • Android 스튜디오의 메모리 누수 문제를 해결하고 전체 메모리 사용량을 줄였습니다.
    • SDK ManagerBackground 버튼이 추가되어 백그라운드에서 작업으로 돌아가고 패키지를 설치할 수 있습니다.
    • 스크린 리더 및 키보드 탐색 지원을 포함하여 접근성 기능이 개선되었습니다.
    • 향상된 코드 분석에 자바 8 언어 사용의 코드 품질 검사 및 더 많은 파일 간 분석이 포함되었습니다.
    • 여러 툴바 아이콘이 변경되었습니다.

    2.1(2016년 4월)

    이번 업데이트의 주요 변경사항으로 Android N Preview를 통한 개발을 지원합니다.

    2.1.3(2016년 8월)

    이 업데이트에는 Gradle 2.14.1과의 호환성이 추가되었으며 성능 개선, 새로운 기능, 중요한 보안 수정사항이 포함되어 있습니다. 자세한 내용은 Gradle 출시 노트를 참고하세요.

    기본적으로 Android 스튜디오 2.1.3의 프로젝트에서는 Gradle 2.14.1을 사용합니다. 기존 프로젝트의 경우 IDE에서 Gradle 2.14.1 및 Gradle용 Android 플러그인 2.1.3으로 업그레이드하라는 메시지를 표시하며, 이는 Gradle 2.14.1 이상을 사용할 때 필요합니다.

    2.1.2(2016년 6월)

    이 업데이트에는 여러 가지 소규모 변경사항 및 버그 수정이 포함되어 있습니다.

    • Instant Run 업데이트 및 버그 수정
    • LLDB 성능 및 비정상 종료 알림 개선
    • git rebase 오류를 일으키는 Android 스튜디오 2.1.1 보안 업데이트의 회귀 문제 수정

    2.1.1(2016년 5월)

    보안 버전 업데이트

    Android N 플랫폼에는 자바 8 언어 기능 지원이 추가되었으며 이 기능을 사용하려면 Jack이라는 새로운 실험용 컴파일러가 필요합니다. 현재는 Android 스튜디오 2.1에서만 최신 버전의 Jack이 지원됩니다. 따라서 자바 8 언어 기능을 사용하려면 Android 스튜디오 2.1을 사용하여 앱을 빌드해야 합니다.

    참고: 현재 호환성 문제로 인해 Jack 컴파일러를 사용 설정하면 Instant Run이 사용 중지됩니다.

    현재 Android 스튜디오 2.1이 안정적이지만 여전히 Jack 컴파일러가 실험 단계이므로 build.gradle 파일의 jackOptions 속성을 사용하여 Jack 컴파일러를 사용 설정해야 합니다.

    N Preview 지원 변경사항 외에도 Android 스튜디오 2.1에는 소규모 버그 수정 및 다음 개선사항이 포함되어 있습니다.

    • N 기기 또는 에뮬레이터를 사용하는 중에 Native 디버거 모드를 선택(실행/디버그 구성의 Debugger 탭에서)하면 자바 인식 C++ 디버거가 기본적으로 사용 설정됩니다.

    증분 자바 컴파일 및 dexing-in-process를 포함한 기타 빌드 개선사항을 이용하려면 Gradle용 Android 플러그인을 버전 2.1.0으로 업데이트하세요.

    2.0(2016년 4월)

    참고: N 개발자 프리뷰용으로 개발 중이라면 Android 스튜디오 2.1 미리보기를 사용해야 합니다. Android 스튜디오 2.0에서는 N Preview를 타겟팅하는 데 필요한 모든 기능을 지원하지 않습니다.

    Instant Run:

    • Android 스튜디오에서는 이제 어느 때보다 빠르게 클린 빌드를 배포합니다. 또한 에뮬레이터나 실제 기기로 증분 코드 변경사항을 푸시하면 거의 즉시 반영됩니다. 새로운 디버그 빌드를 재배포하지 않고 또는 대부분의 상황에서 앱을 다시 시작하지 않고 업데이트를 검토할 수 있습니다.
    • Instant Run은 실행 중인 앱에 다음 변경사항을 푸시하도록 지원합니다.
      • 기존 인스턴스 메서드 또는 정적 메서드의 구현 변경사항
      • 기존 앱 리소스 변경사항
      • 메서드 서명 또는 정적 필드와 같은 구조적 코드 변경사항(API 수준 21 이상을 실행하는 대상 기기 필요)
    • 자세한 내용은 Instant Run 문서를 참고하세요.

      참고: Instant Run은 디버그 빌드 변형을 배포하고 Gradle용 Android 플러그인 버전 2.0.0 이상을 사용하며 앱의 모듈 수준 build.gradle 파일을 minSdkVersion 15 이상으로 구성한 때만 지원됩니다. 최상의 성능을 이용하려면 앱을 minSdkVersion 21 이상으로 구성해야 합니다.

    린트의 새로운 추가사항:

    • 모든 상수가 처리되도록 @IntDef 주석이 달린 정수를 사용하는 switch 구문을 검사합니다. 누락된 구문을 빠르게 추가하려면 의도 작업 드롭다운 메뉴를 사용하고 Add Missing @IntDef Constants를 선택합니다.
    • build.gradle 파일에 버전 번호를 삽입하기 위해 문자열 보간 유형을 사용하는 잘못된 시도에 플래그를 지정합니다.
    • Fragment 클래스를 확장하는 익명 클래스에 플래그를 지정합니다.
    • res/asset/ 폴더와 같이 안전하지 않은 위치의 네이티브 코드에 플래그를 지정합니다. 이 플래그는 libs/ 폴더에 네이티브 코드를 보관하도록 유도하며, 이렇게 하면 설치 시 애플리케이션의 data/app-lib/ 폴더로 안전하게 패키징됩니다. AOSP: #169950
    • Runtime.load()System.load()의 안전하지 않은 호출에 플래그를 지정합니다. AOSP: #179980
    • 메뉴 바에서 Refactor > Remove Unused Resources를 선택하여 사용하지 않는 리소스를 찾아 삭제합니다. 사용하지 않는 리소스 감지는 사용되지 않는 리소스에서 참조하는 리소스, .html 이미지 참조와 같은 원시 파일의 참조, Gradle 리소스 축소기에서 사용되는 tools:keeptools:discard 속성만 지원하며 비활성 소스 세트(예: 기타 빌드 버전에서 사용되는 리소스)를 고려하고 정적 필드 가져오기를 올바르게 처리합니다.
    • minSdkVersion에서 타겟팅하는 모든 플랫폼에서 암시적 API 참조가 지원되는지 확인합니다.
    • RecyclerViewParcelable의 부적절한 사용에 플래그를 지정합니다.
    • @IntDef, @IntRange@Size 검사에서는 이제 int 배열 및 varargs도 확인합니다.

    추가 개선사항:

    • 어느 때보다 빠르고, 광범위한 가상 기기를 지원하며 UI가 대폭 개선된 Android Emulator 2.0에 최적화되었습니다. 새로운 에뮬레이터에 관해 자세히 알아보려면 SDK 도구 출시 노트를 참고하세요.
    • Android Virtual Device Manager가 다음과 같이 개선되었습니다.
      • 이제 시스템 이미지가 Recommended, x86Other 탭으로 분류됩니다.
      • 고급 설정에서 멀티코어 지원을 사용 설정하고 에뮬레이터가 사용할 수 있는 코어 수를 지정할 수 있습니다.
      • 고급 설정에서 다음 옵션 중 하나를 선택하여 에뮬레이터에서 그래픽이 렌더링되는 방식을 결정할 수 있습니다.
        • Hardware: 컴퓨터 그래픽 카드를 사용하여 렌더링 속도를 높입니다.
        • Software: 소프트웨어 기반 렌더링을 사용합니다.
        • Auto: 에뮬레이터가 최적의 옵션을 선택하도록 합니다. 기본 설정입니다.
    • 앱이 빌드되기 전에 배포 타겟을 지정하여 AAPT 패키징 시간을 단축했습니다. 따라서 Android 스튜디오는 지정된 기기에 필요한 리소스만 효율적으로 패키징할 수 있습니다.
    • 클라우드 테스트 실험실 통합을 추가하여 클라우드 서비스의 편리함과 확장성을 갖춘 주문형 앱 테스트를 제공합니다. Android 스튜디오에서 클라우드 테스트 실험실을 사용하는 방법을 자세히 알아보세요.
    • 새로운 GPU 디버거의 미리보기가 추가되었습니다. 이제 그래픽 집약적인 애플리케이션을 위해 시각적으로 OpenGL ES 코드를 단계별로 점검하여 앱이나 게임을 최적화할 수 있습니다.
    • Google 앱 색인 생성 테스트가 추가되었습니다. 이에 따라 URL, 앱 색인 생성 및 검색 기능 지원을 앱에 추가하여 앱에 더 많은 트래픽을 유도하고 가장 많이 사용되는 앱 콘텐츠를 확인하고 신규 사용자를 확보할 수 있습니다. Android 스튜디오에서 앱의 URL을 모두 테스트하고 검사할 수 있습니다. Android 스튜디오에서 URL 및 앱 색인 생성 지원을 참고하세요.
    • 향상된 코드 분석과 성능을 포함하여 최신 IntelliJ 15 출시의 업그레이드가 적용되었습니다. 새로운 기능 및 개선사항에 관한 전체 설명은 IntelliJ의 새로운 기능을 참고하세요.
    • 이제 XML 편집기 자동 완성에서 속성을 완료할 때 따옴표를 추가합니다. 이 옵션이 사용 설정되어 있는지 확인하려면 Setting 또는 Preferences 대화상자를 열고 Editor > General > Smart Keys로 이동한 다음 Add quotes for attribute value on attribute completion 옆의 체크박스를 선택하세요. 문제: 195113
    • 이제 XML 편집기에서 데이터 결합 표현식을 위한 코드 완성을 지원합니다.

    이전 출시