Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Android 스튜디오 출시 노트

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

최신 버전을 다운로드하려면 Help > Check for updates(Mac에서는 Android Studio > Check for updates)를 클릭하세요.

여기에서 Android 스튜디오를 다운로드할 수도 있습니다.

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

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

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

3.4(2019년 4월)

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

3.4.2(2019년 7월)

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

3.4.1(2019년 5월)

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

3.4.0 알려진 문제

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

  • Data Binding 라이브러리를 사용하는 경우 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의 이 섹션에서는 프로젝트의 각 모듈에 사용할 빌드 변형과 제품 버전을 만들고 구성합니다. manifest 자리표시자와 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월)

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

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_

Lint 개선사항

Lint가 Gradle에서 호출되는 속도가 훨씬 빨라지며, 대규모 프로젝트에서는 Lint가 최대 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 관리자를 사용하여 관련 라이선스 계약에 동의했다면 이제 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 관리자에 포함됩니다. 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에 다음 속성을 포함합니다.

<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 Plugin 3.3.0 이상을 사용해야 합니다. 이러한 요구사항을 충족하면 프로젝트를 동기화할 때 IDE에서 이 최적화를 사용 설정하라는 메시지가 표시됩니다. 최적화는 새로운 프로젝트에도 기본적으로 사용 설정됩니다.

이 최적화를 수동으로 사용 설정하려면 File > Settings > Experimental > Gradle(Mac은 Android 스튜디오 > 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입니다.
  • Navigation 라이브러리의 인수 유형 이름이 type에서 argType으로 변경되었습니다.
  • 다음 버그가 수정되었습니다.
    • Data Binding 라이브러리 사용 시 변수 이름에 밑줄이 포함되어 있으면 컴파일 오류가 발생했습니다.
    • 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의 일부로 Android 지원 라이브러리를 androidx 네임스페이스를 사용하여 새로운 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의 새로운 앱 게재 모델인 Dynamic Delivery가 App Bundle을 사용하여 각 사용자의 기기 설정에 최적화된 APK를 생성하고 게재하므로 각 사용자는 앱 실행에 필요한 코드와 리소스만 다운로드하면 됩니다. 더 이상 여러 APK를 빌드, 서명, 관리할 필요가 없으며 사용자는 더 작고 최적화된 다운로드를 받습니다.

또한 앱 프로젝트에 동적 기능 모듈을 추가하여 App Bundle에 포함할 수 있습니다. 사용자는 Dynamic Delivery를 통해 필요에 따라 앱의 동적 기능을 다운로드하고 설치할 수 있습니다.

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

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

Layout Editor의 샘플 데이터

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

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

슬라이스

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

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

시작하려면 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 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 버벅거림 현상과 같은 시스템 수준 문제를 조사하는 데 유용합니다.

이 트레이스 구성을 사용하는 동안 native tracing 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. 원하는 실행 구성의 Profiling 탭에서 Start recording a method trace on startup 옆의 체크박스를 선택합니다.
  3. 드롭다운 메뉴에서 사용할 CPU 기록 구성을 선택합니다.
  4. Run > Profile을 선택하여 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 기록 구성으로 표시합니다.

에너지 프로파일러

에너지 프로파일러는 앱의 예상 에너지 사용량뿐 아니라 wake lock, 알람, 작업과 같이 에너지 사용량에 영향을 미치는 시스템 이벤트를 시각적으로 표시합니다.

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

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

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

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

Lint 검사

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

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

자바/Kotlin 상호운용성 Lint 검사

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

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

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

android {
        lintOptions {
            check 'Interoperability'
        }
    }
    

슬라이스 Lint 검사

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

새로운 Gradle 대상

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

메타데이터 업데이트

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

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

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

기존 Lint 검사 개선사항

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

더 쉽게 검색 가능한 문제 ID

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

자세한 내용은 Gradle로 Lint 옵션 구성을 참조하세요.

데이터 바인딩 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를 지정해야 합니다.

    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 노드 아래에 구성됩니다.

네이티브 multidex가 기본적으로 사용 설정됨

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

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

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

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

      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 연결 도우미

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

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

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

에뮬레이터 개선사항

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

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

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

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

3.1(2018년 3월)

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

3.1.4(2018년 8월)

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

  • 이제 번들 Kotlin 버전이 1.2.50입니다.
  • 새로운 프로젝트가 kotlin-stdlib-jdk* artifacts로 생성되며, kotlin-stdlib-jre* 아티팩트는 지원 중단되었습니다.
  • 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 스튜디오가 ProcessCanceledException 오류와 함께 시작되지 않았습니다(com.intellij.psi.jsp.JspElementType 클래스 초기화 중).

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의 Lint 검사 실행 속도를 훨씬 더 빠르게 하는 변경사항도 포함되어 있습니다.

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 사용량이 표시됩니다.
  • Control(Mac에서는 Command) 키를 누른 상태에서 엔티티를 클릭하여 자바 또는 Kotlin 코드의 SQL 엔티티 선언으로 이동할 수 있습니다.

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

데이터 바인딩 업데이트

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

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

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

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

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

    • 자바 컴파일러에 앞서 Gradle용 Android 플러그인에서 ViewBinding 클래스를 생성합니다.

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

컴파일러 및 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 코드가 명령줄 Lint 검사를 통해 분석됨

이제 명령줄에서 Lint를 실행하면 Kotlin 클래스를 분석합니다.

Lint를 실행하려는 각 프로젝트에서는 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 뷰 명령어를 사용하여 뷰 또는 레이아웃을 다른 유형의 뷰 또는 레이아웃으로 변환할 수 있습니다.

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 에뮬레이터 출시 노트를 참조하세요.

주요 개선사항은 다음과 같습니다.

  • Save now 명령어를 사용하여 맞춤 시작 상태를 저장하는 기능을 통해 에뮬레이터 상태를 저장하고 더 빠르게 시작할 수 있는 Quick Boot 스냅샷
  • 창 없는 에뮬레이터 화면
  • Android 8.0(API 레벨 26), Android 8.1(API 레벨 27) 및 Android P Developer Preview용 시스템 이미지

사용자 인터페이스 및 사용자 환경 개선

더 많은 도움말, 단축키 및 유용한 메시지

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 플러그인에는 다양한 개선사항과 새로운 기능이 포함되어 있지만, 주로 모듈 수가 많은 프로젝트의 빌드 성능을 개선합니다. 이러한 대규모 프로젝트에서 새 플러그인을 사용하면 다음과 같은 이점이 있습니다.

  • 새로운 지연된 종속성 해결로 인해 더 빨라진 빌드 구성 시간
  • 빌드 중인 프로젝트와 변형에 대해서만 변형 인식 종속성 해결
  • 코드나 리소스에 간단한 변경사항 적용 시 더 빨라진 증분 빌드 시간

이 버전에는 다음이 포함됩니다.

변경사항을 자세히 알아보려면 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 대화상자에서 Source CompatibilityTarget Compatibility를 1.8로 업데이트하세요(File > Project Structure 클릭). 자세한 내용은 자바 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 모듈이라는 두 가지 새로운 모듈 유형을 사용하여 프로젝트에서 인스턴트 앱을 만들 수 있습니다(Instant Apps Development 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 스튜디오에는 앱에 글꼴을 번들로 제공하거나 기기에 글꼴을 다운로드하도록 프로젝트를 구성(가능한 경우)하도록 돕는 글꼴 리소스 선택기가 포함되었습니다. 레이아웃 편집기가 레이아웃의 글꼴을 미리 볼 수도 있습니다.

다운로드 가능한 글꼴을 사용하려면 기기 또는 에뮬레이터가 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를 클릭하여 앱에서 색인 생성 가능한 개체가 개인 콘텐츠 색인에 추가되었는지 확인합니다.

앱 링크 도우미가 다음과 같은 새로운 기능을 포함하도록 업데이트되었습니다.

  • 인텐트 필터가 실제 URL을 처리하도록 각 URL 매핑에 대해 URL 테스트를 추가합니다.

    아래 설명된 <tools:validation> 태그를 사용하여 이러한 URL 테스트를 직접 정의할 수도 있습니다.

  • Google Smart Lock을 지원하도록 적절한 개체 항목으로 Digital Asset Links 파일을 만들고 해당 asset_statements <meta-data> 태그를 manifest 파일에 추가합니다.

URL 인텐트 필터 검사기

Android 스튜디오에서는 이제 manifest 파일에서 인텐트 필터 URL을 테스트할 수 있는 특수 태그를 지원합니다. 이 태그는 앱 링크 도우미에서 생성하는 것과 동일한 태그입니다.

인텐트 필터에 대한 테스트 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 중 하나라도 인텐트 필터 정의를 통과하지 못하면 Lint 오류가 나타납니다. 이러한 오류가 발생해도 디버그 변형을 빌드할 수 있지만 출시 빌드는 손상됩니다.

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 관리자 대신 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 언어 리팩터링, 매개변수 힌트, 시맨틱 강조표시, 드래그 가능한 중단점, 순간 검색결과 등의 기능이 포함되었습니다.
  • 다수의 새로운 Lint 검사가 추가되었습니다.
  • 최신 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는 손실이 있는 압축(예: JPEG) 및 투명도(예: PNG)를 제공하지만 JPEG 또는 PNG보다 더 나은 압축을 제공할 수 있는 Google의 이미지 파일 형식입니다. 자세한 내용은 Android 스튜디오에서 이미지를 WebP로 변환을 참조하세요.
  • 새로운 앱 링크 도우미는 단계별 마법사로 앱에 Android 앱 링크를 추가하는 절차를 간소화합니다. Android 앱 링크는 Android 앱의 특정 콘텐츠로 곧바로 사용자를 안내하는 HTTP URL입니다.
  • Layout Editor는 이제 두 가지 새로운 ConstraintLayout 기능을 지원합니다.
    • 가로세로 비율에 따라 뷰 크기를 정의합니다.
    • 제약 조건 체인을 사용하여 압축, 펼치기 및 가중치가 적용된 선형 그룹을 만듭니다.
    자세한 정보는 ConstraintLayout으로 반응형 UI 빌드를 참조하세요.
  • 이제 Layout Editor에서 즐겨찾기 속성 목록을 만들 수 있으므로 가장 많이 사용하는 속성에 액세스하기 위해 View all attributes를 클릭하지 않아도 됩니다.
  • 벡터 가져오기 대화상자(File > New > Vector Asset)를 사용하여 머티리얼 아이콘을 추가할 때 카테고리 또는 아이콘 이름을 기준으로 사용 가능한 목록을 필터링할 수 있습니다. 자세한 내용은 머티리얼 아이콘 추가를 참조하세요.
  • 주석이 새로 추가 및 업데이트되었습니다. 메서드, 클래스 및 패키지의 새로운 @RestrictTo 주석을 사용하여 API를 제한할 수 있습니다. 업데이트된 @VisibleForTesting 주석에는 테스트를 위해 가시적으로 만들어야 할 필요가 없었다면 메서드 가시성이 어느 수준이어야 하는지 지정할 수 있는 선택적인 otherwise 인수가 있습니다. Lint에서는 otherwise 옵션을 사용하여 메서드의 원하는 가시성을 강제 적용할 수 있습니다.
  • 새로운 Lint 기준 지원을 통해 프로젝트의 현재 경고 세트의 스냅샷을 이후 검사 실행의 기준으로 사용하여 새로운 문제만 보고되도록 만들 수 있습니다. 기준 스냅샷을 사용하면 먼저 모든 기존 문제로 돌아가 문제를 해결하지 않고도 Lint를 사용해 새로운 문제의 빌드를 통과시키지 않게 만들 수 있습니다.
  • 새로운 Lint 검사에는 다음이 포함됩니다.
    • 사용되지 않는 SDK_INT 검사: Android 스튜디오에서 SDK 버전을 확인하는 사용되지 않는 코드를 삭제합니다.
    • 개체 애니메이터 검사기: Lint가 ObjectAnimator 호출이 올바른 서명이 포함된 유효한 메서드를 참조하는지 확인하기 위해 코드를 분석하고 출시 빌드 과정에서 ProGuard가 이러한 메서드의 이름을 바꾸거나 메서드를 삭제하지 못하도록 @Keep으로 주석이 달려있는지 확인합니다.
    • 불필요한 항목 데코레이터 카피: 이전 버전의 RecyclerView 라이브러리에는 분할 데코레이터 클래스가 포함되지 않았지만, 지원 데모에서 샘플로 제공되었습니다. 라이브러리의 최근 버전에는 분할 데코레이터 클래스가 포함되어 있습니다. Lint는 오래된 샘플을 찾아 새로운 샘플로 교체하도록 제안합니다.
    • WifiManager 누출: Android 7.0(API 레벨 24) 이전에는 Context.getSystemService()WifiManager를 초기화하면 컨텍스트가 애플리케이션 컨텍스트가 아닌 경우 메모리 누출이 발생할 수 있습니다. Lint는 이러한 초기화를 살펴보고 컨텍스트가 애플리케이션 컨텍스트인 것을 확인할 수 없는 경우 Context.getApplicationContext()를 사용하여 초기화에 적절한 컨텍스트를 받도록 제안합니다.
    • 향상된 리소스 접두어: 기존 resourcePrefix Lint 검사에는 많은 제한이 있었습니다. 이제 android { resourcePrefix 'my_lib' }와 같은 접두어로 프로젝트를 구성할 수 있으며, Lint는 모든 리소스가 이 접두어를 사용하는지 확인합니다. 스타일과 테마에 따라 이름의 변형을 사용할 수 있습니다. 예를 들어 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 관리자 SDK 관리자 버튼이 이제 전체 툴바뿐 아니라 간편 탐색 메뉴에도 포함되어 있습니다. 간편 탐색 메뉴를 사용하려면 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 오류를 일으킵니다. 이 문제를 방지하려면 에뮬레이터를 사용하거나 기기 설정에서 앱 자동 실행을 사용 설정하세요. 절차는 기기마다 다르므로 제조업체에서 제공하는 안내를 확인하세요. 예를 들어 영향을 받는 일부 Asus 기기에서는 자동 시작 관리자를 사용하여 앱을 허용 목록에 추가해야 합니다. 이 문제를 자세히 알아보려면 문제 #235879를 참조하세요.

2.2(2016년 9월)

2.2.3(2016년 12월)

Android 스튜디오 2.2의 소규모 업데이트입니다. Gradle, 코어 IDE, Lint를 중심으로 한 버그 수정이 포함되어 있습니다.

주요 빌드 변경사항은 다음과 같습니다.

  • ProGuard 버전 롤백. ProGuard 5.3.1에서 발견된 정확성 문제로 인해 ProGuard 5.2.1로 롤백했습니다. ProGuard팀과 신속한 해결을 위해 노력하고 있으며 Android 스튜디오 2.3 Canary 3에서 ProGuard 5.3.2를 출시할 것으로 예상됩니다.
  • aaptOptions IgnoreAssetsPattern이 제대로 작동하지 않는 버그 수정(문제 224167)
  • Constraint Layout 라이브러리에서 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 샘플 코드를 간편하게 찾아 앱 개발을 시작할 수 있습니다.
  • 새로운 Merged Manifest Viewer를 통해 프로젝트 빌드 변형 전반에 걸쳐 manifest 파일이 앱 종속성과 병합되는 방식을 진단할 수 있습니다.
  • Run 창에 현재 실행 중인 앱의 로그 메시지가 포함됩니다. 참고로 logcat Monitor 디스플레이는 구성할 수 있지만 Run 창은 구성할 수 없습니다.
  • 새로운 Android 에뮬레이터 기능이 추가되었습니다.
    • Virtual SensorsCellular > Signal Strength 컨트롤이 새로 추가되었습니다.
    • Cellular > Network type 컨트롤에 LTE 옵션이 추가되었습니다.
    • 마우스 휠로 세로 메뉴를 스크롤하기 위한 시뮬레이션된 세로 스와이프가 추가되었습니다.
  • 새로운 Run/Debug 구성 기능이 추가되었습니다.
    • 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 Debugger의 설치, 구성, 성능 및 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 출시 노트를 참조하세요.
  • 업데이트된 AccelerometerPlay 샘플이 추가되어 에뮬레이터 Accelerometer 컨트롤을 시험해 볼 수 있습니다. File > New > Import Sample을 선택하여 프로젝트를 가져오세요.
  • AVD 관리자에서 Scale AVD 속성이 삭제되었습니다.
  • 이제 Android 에뮬레이터 -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 관리자Background 버튼이 추가되어 백그라운드에서 작업으로 돌아가고 패키지를 설치할 수 있습니다.
  • 스크린 리더와 키보드 탐색 지원을 포함한 접근성 기능이 향상되었습니다.
  • 향상된 코드 분석에 자바 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월)

보안 버전 업데이트

AAndroid 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 Developer Preview용으로 개발 중인 경우 Android 스튜디오 2.1 Preview를 사용해야 합니다. Android 스튜디오 2.0에서는 N Preview를 타겟팅하는 데 필요한 모든 기능을 지원하지 않습니다. 자세한 내용은 N Preview에 맞는 올바른 개발자 환경 설정 방법을 참조하세요.

Instant Run:

  • Android 스튜디오에서는 이제 어느 때보다 빠르게 클린 빌드를 배포합니다. 또한 에뮬레이터나 실제 기기로 증분 코드 변경사항을 푸시하면 거의 즉시 반영됩니다. 새로운 디버그 빌드를 재배포하지 않고 또는 대부분의 경우 앱을 다시 시작하지 않고 업데이트를 검토할 수 있습니다.
  • Instant Run은 실행 중인 앱에 다음 변경사항을 푸시하도록 지원합니다.
    • 기존 인스턴스 메소드 또는 정적 메소드의 구현 변경사항
    • 기존 앱 리소스 변경사항
    • 메소드 서명 또는 정적 필드와 같은 구조적 코드 변경사항(API 레벨 21 이상을 실행하는 대상 기기 필요)
  • 자세한 내용은 Instant Run 문서를 참조하세요.

    참고: Instant Run은 디버그 빌드 변형을 배포하고, Gradle용 Android 플러그인 버전 2.0.0 이상을 사용하고, 앱의 모듈 레벨 build.gradle 파일을 minSdkVersion 15 이상으로 구성한 경우에만 지원됩니다. 최상의 성능을 이용하려면 앱을 minSdkVersion 21 이상으로 구성하세요.

Lint의 새로운 추가사항:

  • 모든 상수가 처리되도록 @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 에뮬레이터 2.0에 최적화되었습니다. 새로운 에뮬레이터에 대해 자세히 알아보려면 SDK 도구 출시 노트를 참조하세요.
  • Android 가상 기기 관리자가 개선되었습니다.
    • 이제 시스템 이미지가 Recommended, x86Other 탭으로 분류됩니다.
    • 고급 설정에서 멀티코어 지원을 사용 설정하고 에뮬레이터에서 사용할 수 있는 코어 수를 지정할 수 있습니다.
    • 고급 설정에서 다음 옵션 중 하나를 선택하여 에뮬레이터에서 그래픽이 렌더링되는 방식을 결정할 수 있습니다.
      • Hardware: 컴퓨터 그래픽 카드를 사용하여 렌더링 속도를 높입니다.
      • Software: 소프트웨어 기반 렌더링을 사용합니다.
      • Auto: 에뮬레이터가 최적의 옵션을 선택하도록 합니다. 기본 설정입니다.
  • 앱이 빌드되기 전에 배포 타겟을 지정하여 AAPT 패키징 시간을 단축했습니다. 이를 통해 Android 스튜디오는 지정된 기기에 필요한 리소스만 효율적으로 패키징할 수 있습니다.
  • Cloud Test Lab 통합을 추가하여 클라우드 서비스의 편리함과 확장성을 갖춘 주문형 앱 테스트를 제공합니다. Android 스튜디오에서 Cloud Test Lab을 사용하는 방법을 자세히 알아보세요.
  • 새로운 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 편집기에서 데이터 바인딩 표현식을 위한 코드 완성을 지원합니다.

이전 출시