이전 출시

다음은 Android 스튜디오 3.6 이하 및 Android Gradle 플러그인 3.6.0 이하의 출시 노트입니다.

이전 버전의 Android 스튜디오

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의 DesignCode 뷰를 동시에 확인할 수 있는 Split 뷰를 제공합니다. 이제 편집기 창의 오른쪽 상단에 뷰 옵션 간 전환할 수 있는 다음 세 가지 버튼 뷰 아이콘이 표시됩니다.

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

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

색상 선택 도구 리소스 탭

이제 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 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를 클릭합니다.

참고: Create New Project 마법사에서 기본 앱 모듈에 인스턴트 지원을 적용하는 옵션은 삭제되었습니다.

자세한 내용은 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 지원

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

  • JNI 선언에서 상응하는 C/C++ 구현 함수로 이동합니다. 관리되는 소스 코드 파일의 줄 번호 근처에 있는 C 또는 C++ 항목 마커 위로 마우스를 가져가 이 매핑을 확인하세요.

  • JNI 선언의 스텁 구현 함수를 자동으로 생성합니다. 먼저 JNI 선언을 정의한 다음 C/C++ 파일에 'jni' 또는 메서드 이름을 입력하여 활성화하세요.

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

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

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

다른 JNI 개선사항

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

네이티브 라이브러리용 APK 다시 로드 {:#3.6-reload-apk}

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

Kotlin 전용 APK 소스 연결

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

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

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

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

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

Kotlin 전용 APK 소스 연결

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

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

이제 메모리 프로파일러의 힙 덤프를 분석할 때 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. Navigate 버튼을 선택합니다.
  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 아래 드롭다운 메뉴에서 다음 작업을 실행합니다.

  4. 미리 설정된 가로세로 비율 중 하나를 선택합니다.

  5. custom을 선택하고 맞춤 디스플레이의 height, width, dpi를 설정합니다.

  6. (선택사항) Add secondary display를 클릭하여 세 번째 디스플레이를 추가합니다.

  7. 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.6 개선을 위한 다른 방법을 찾도록 도와주신 모든 커뮤니티 참여자 여러분께 감사의 말씀을 전합니다. 특히 버그를 신고해 주신 다음 분들께 감사드립니다.

  • 앨버트 로
  • 알렉세이 로트
  • 안드레아 레간자
  • 베네닉트 콜브
  • 세자르 푸에르타
  • 커티스 크로치
  • 데미언 비초레크
  • 댄 류
  • 데이비드 버스트롬
  • 디판슈
  • 에고르 안드레비치
  • 엘리 그래버
  • 에민 코칼라리
  • 에반 타타르카
  • 프란티섹 나기
  • 그레그 모엔스
  • 한네스 아클라이트너
  • 한스 페터 아이데
  • 헤닝 벙크
  • 휴고 비세르
  • 이고르 에스코도르
  • 이냐키 빌라르
  • 자벤티라 리에나타
  • 조 로저스
  • 크리스토퍼 대니얼슨
  • 리란 바르시사
  • 루이스 캐드
  • 로란트 핀터
  • 루카스 바실코프스키
  • 루크 필케
  • 말빈 수탄토
  • 마사토시 쿠보데
  • 매튜 윈터스
  • 마이클 베일리
  • 미할 고르니
  • 미하이 네악수
  • 마이크 스카멜
  • 몬테 크레아소르
  • 넬슨 오사키
  • 넬슨 오사키
  • 닉 피르마니
  • 니클라스 안스만 기어츠
  • 니클라스 크론
  • 니콜라스 리히트마이어
  • 니에크 하아르만
  • 닐스 반 호브
  • 니클라스 바우디
  • 레나토 곤칼베스
  • 로어 그뢴모
  • 루슬란 바라토프
  • 시난 코작
  • 슬라보미르 체르빈스키
  • 스테판 울프
  • 스테판 드이미코
  • 타오 왕
  • 토마스 클라덱
  • 토마스 프로차즈카
  • 토니 로발릭
  • 토르뵈른 쇠를리
  • 워렌 허
  • 옌치 린
  • 잭 스위어스
  • 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를 사용하면 앱을 다시 시작하지 않고, 또한 경우에 따라 현재 활동을 다시 시작하지 않고 코드 및 리소스 변경사항을 실행 중인 앱에 푸시할 수 있습니다. 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.4에서 겹치는 구성요소의 제약 조건을 생성하는 방법을 보여주는 애니메이션

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

    위의 업데이트 외에도 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.4에서 코드 편집기 성능을 보여주는 애니메이션

    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의 설치 및 구성을 참고하세요.

    ChromeOS 지원

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

    참고: ChromeOS에서 Android 스튜디오를 사용하는 경우 현재 연결된 하드웨어 기기에만 앱을 배포할 수 있습니다. 자세한 내용은 하드웨어 기기에서 앱 실행을 참고하세요.

    기능 모듈의 조건부 제공

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

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

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

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

    IntelliJ IDEA 2019.1

    2019.1 출시를 통해 핵심 Android 스튜디오 IDE가 테마 맞춤설정과 같은 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

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

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

    Variables

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

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

    참고: 기존 빌드 구성 파일이 복잡한 Groovy 스크립트를 통해 값을 할당하는 경우 PSD를 통해 해당 값을 수정하지 못할 수 있습니다. 또한 PSD를 사용하여 Kotlin으로 작성된 빌드 파일을 수정할 수 없습니다.

    Modules

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

    Dependencies

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

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

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

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

    Build Variants

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

    Suggestions

    아래 표시된 것처럼 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
        
      

    참고: 주어진 빌드 유형의 경우 앱 모듈의 build.gradle 파일에서 useProguardfalse로 설정하면 프로젝트의 gradle.properties 파일에서 R8의 사용 중지 여부와 상관없이 Android Gradle 플러그인이 R8을 사용하여 빌드 유형의 앱 코드를 축소합니다.

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

    Layout 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 체크박스를 선택합니다.

    참고: 이 최적화 기능은 현재 자바 프로그래밍 언어만 포함된 프로젝트를 지원합니다. 예를 들어 IDE가 프로젝트에서 Kotlin 또는 C++ 코드를 감지하면 이 최적화 기능이 자동으로 사용 설정되지 않으며, 수동으로 사용 설정하면 안 됩니다.

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

    빠른 의견 제공

    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으로 변경되었습니다.
    • 다음 버그가 수정되었습니다.
      • 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의 일부로 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 레이아웃에는 앱 개발의 디자인 단계에서 레이아웃의 모양과 느낌을 시각화하기 어렵게 만들 수 있는 런타임 데이터가 있습니다. 이제는 샘플 데이터가 풍부한 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 버벅거림 현상과 같은 시스템 수준 문제를 조사하는 데 유용합니다.

    이 트레이스 구성을 사용하는 동안 네이티브 추적 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 기록 구성으로 표시합니다.

    에너지 프로파일러

    에너지 프로파일러는 앱의 예상 에너지 사용량뿐 아니라 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)와 호환되도록 서비스 전송 확인과 같은 다양한 메타데이터가 업데이트되었습니다.

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

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

    기존 린트 검사 개선사항

    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를 지정해야 합니다.

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

    참고: 이러한 동작 변경은 Android 스튜디오 3.1 RC1 이상에도 포함되어 있습니다.

    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 이상을 실행하는 기기에 앱의 디버그 버전을 배포할 때 네이티브 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()
            }
        }
        
        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 연결 도우미는 Assistant 패널의 여러 페이지에 걸쳐 안내, 문맥에 맞는 컨트롤, 연결된 기기 목록을 제공합니다.

    에뮬레이터 개선사항

    이제 언제든지 Android Emulator에서 AVD(Android Virtual Device)의 스냅샷을 저장하고 로드하여, 에뮬레이션된 기기를 테스트를 위한 알려진 상태로 쉽고 빠르게 되돌릴 수 있습니다. 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의 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

    2017.3.3 출시를 통해 핵심 Android 스튜디오 IDE가 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) 이상에서만 작동합니다.

    참고: Android 스튜디오 3.0 이상을 사용하는 네이티브 디버깅은 32비트 Windows에서 작동하지 않습니다. 32비트 Windows를 사용 중이고 네이티브 코드를 디버그해야 한다면 Android 스튜디오 2.3을 사용하세요.

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

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

    참고: 이러한 개선에는 일부 플러그인 동작, DSL 및 API를 중단시키는 중대한 변경사항이 요구되었습니다. 버전 3.0.0으로 업그레이드하면 빌드 파일 및 Gradle 플러그인을 변경해야 할 수 있습니다.

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

    • Android 8.0 지원
    • 언어 리소스를 기반으로 하는 별도의 APK 빌드 지원
    • 자바 8 라이브러리 및 자바 8 언어 기능 지원(Jack 컴파일러 필요 없음)
    • Android 테스트 지원 라이브러리 1.0 지원(Android 테스트 유틸리티 및 Android Test Orchestrator)
    • 향상된 ndk-build 및 cmake 빌드 속도
    • 향상된 Gradle 동기화 속도
    • 이제 AAPT2가 기본적으로 사용 설정됨
    • 이제 ndkCompile 사용이 더 제한됩니다. 대신 APK로 패키징하려는 네이티브 코드를 컴파일하려면 CMake나 ndk-build를 사용하여 이전해야 합니다. 자세한 내용은 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 언어 기능 지원

    이제 특정 Java 8 언어 기능을 사용하고 Java 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 클릭).

    창 상단의 이벤트 타임라인에는 터치 이벤트, 키 누름 및 활동 변경이 표시되므로 타임라인의 다른 성능 이벤트를 더 잘 파악할 수 있습니다.

    참고: Logcat 뷰도 별도의 창으로 이동했습니다(이전에는 Android Monitor 내에 있었으나 삭제됨).

    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 Apps Development SDK를 설치해야 함).

    또한 Android 스튜디오에는 기존 프로젝트에 인스턴트 앱 지원을 추가할 수 있는 새로운 모듈화 리팩터링 작업이 포함되어 있습니다. 예를 들어 인스턴트 앱 기능 모듈에 일부 클래스를 배치하기 위해 프로젝트를 리팩터링하려고 한다면 Project 창에서 클래스를 선택하고 Refactor > Modularize를 클릭합니다. 표시되는 대화상자에서 클래스가 이동해야 할 모듈을 선택하고 OK를 클릭합니다.

    인스턴트 앱을 테스트할 준비가 되면 구성 실행 시작 옵션 내에서 인스턴트 앱의 URL을 지정하여 연결된 기기에서 인스턴트 앱 모듈을 빌드하고 실행할 수 있습니다. 인스턴트 앱의 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)를 선택합니다.

    참고: 적응형 런처 아이콘을 사용하려면 compileSdkVersion을 26 이상으로 설정해야 합니다.

    자세한 내용은 적응형 아이콘을 참고하세요.

    글꼴 리소스 지원

    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 관리자 대신 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 Emulator 26.0.3의 해당 업데이트도 참조하세요.

    2.3.1(2017년 4월)

    일부 실제 Android 기기가 Instant Run과 제대로 호환되지 않는 문제가 수정된 Android 스튜디오 2.3의 소규모 업데이트입니다 (문제 #235879 참조).

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your project’s
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2(2016년 9월)

    2.2.3 (2016년 12월)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 (2016년 10월)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 (2016년 10월)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    신규

    • Layout Editor가 완전히 새로워졌으며 ConstraintLayout을 지원하는 맞춤 빌드 도구가 제공됩니다.
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    변경사항

    • 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)
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you won’t be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    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, x86, Other 탭으로 분류됩니다.
      • 고급 설정에서 멀티코어 지원을 사용 설정하고 에뮬레이터가 사용할 수 있는 코어 수를 지정할 수 있습니다.
      • 고급 설정에서 다음 옵션 중 하나를 선택하여 에뮬레이터에서 그래픽이 렌더링되는 방식을 결정할 수 있습니다.
        • 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 편집기에서 데이터 결합 표현식을 위한 코드 완성을 지원합니다.

    Android 스튜디오 v1.5.1(2015년 12월)

    수정 및 개선사항:

    • Layout Editor의 렌더링 실패 문제가 수정되었습니다. 문제: 194612
    • 구성에 따라 description 매니페스트 속성에 변화를 주는 기능이 추가되었습니다. 문제: 194705
    • Vector Asset Studio에서 Android 스튜디오 Darcula 디자인 테마의 대비가 개선되었습니다. 문제: 191819
    • Vector Asset Studio에 Help 버튼 지원이 추가되었습니다.
    • 데이터 결합의 % 연산자 지원이 추가되었습니다. 문제: 194045
    • 디버깅을 위해 앱을 실행하면 잘못된 기기에 디버거가 연결되는 문제가 수정되었습니다. 문제: 195167
    • 특정 시나리오에서 앱을 실행하려고 할 때 발생할 수 있는 null 포인터 예외가 수정되었습니다.

    Android 스튜디오 v1.5.0(2015년 11월)

    수정 및 개선사항:

    • Android Monitor에 새로운 메모리 모니터 분석 기능이 추가되었습니다. 이 모니터에서 캡처한 HPROF 파일을 보면 메모리 누수와 같은 문제를 더 빠르게 찾을 수 있도록 더 유용한 디스플레이가 표시됩니다. 이 모니터를 사용하려면 기본 창의 하단에서 Android Monitor를 클릭하고 Android Monitor에서 Memory 탭을 클릭합니다. 모니터가 실행되는 동안 Dump Java Heap 아이콘을 클릭한 후 기본 창에서 Captures를 클릭하고 확인하려는 파일을 더블클릭합니다. 오른쪽의 Capture Analysis를 클릭합니다. Android Device Monitor는 Android Monitor와 동시에 실행할 수 없습니다.
    • 딥 링크 및 앱 링크 지원이 새로 추가되었습니다. Code Editor가 AndroidManifest.xml 파일에서 딥 링크를 위한 인텐트 필터를 자동으로 생성할 수 있습니다. 또한 자바 파일의 활동에서 App Indexing API와 통합하는 데 도움이 되는 코드를 생성할 수도 있습니다. 딥 링크 테스트 기능을 사용하면 지정된 딥 링크가 앱을 실행할 수 있는지 확인할 수 있습니다. Run/Debug Configurations 대화상자의 General 탭에서 딥 링크 실행 옵션을 지정하면 됩니다. Android Monitor logcat 디스플레이를 사용하여 활동에서 App Indexing API 호출을 테스트할 수도 있습니다. 이제 Android lint 도구에 딥 링크 및 App Indexing API와 관련된 특정 문제에 관한 경고가 표시됩니다.
    • Code Editor에서 맞춤 뷰의 코드 완료 시 닉네임을 사용할 수 있는 기능이 추가되었습니다.
    • 이전 버전과의 호환성을 위해 Vector Asset Studio에 더 많은 VectorDrawable 요소 지원이 추가되었습니다. Vector Asset Studio에서는 Android 4.4(API 수준 20) 이하에서 사용할 수 있도록 이러한 요소를 사용하여 벡터 드로어블을 PNG 래스터 이미지로 변환할 수 있습니다.
    • Android TV 및 Android Auto를 위한 새로운 lint 검사가 추가되어 Android 스튜디오에서 실행 가능한 즉각적인 의견과 함께 몇 가지 간편한 수정 기능을 제공합니다. 예를 들어 Android TV에서는 권한, 지원되지 않는 하드웨어, uses-feature 요소 및 누락된 배너 문제를 보고하고 빠른 수정을 제공할 수 있습니다. Android Auto에서는 AndroidManifest.xml 파일에서 참조된 설명어 파일의 올바른 사용을 검사하고 MediaBrowserService 클래스의 인텐트 필터가 없다면 이 사실을 보고하며 특정 음성 작업 문제를 식별할 수 있습니다.
    • 안전하지 않은 broadcast receiver, SSLCertificateSocketFactoryHostnameVerifier 클래스 사용, File.setReadable()File.setWritable() 호출에 관한 lint 검사가 새로 추가되었습니다. 이 검사는 잘못된 매니페스트 리소스 조회를 감지하고, 특히 구성에 따라 달라지는 리소스 조회도 감지합니다.
    • 여러 안정성 문제가 수정되었습니다.

    Android 스튜디오 v1.4.1(2015년 10월)

    수정 및 개선사항:

    • IDE가 다시 시작되었을 때 과도한 Gradle 동기화로 이어질 수 있는 Gradle 모델 캐싱 문제가 수정되었습니다.
    • 네이티브 디버깅 교착 문제가 수정되었습니다.
    • Subversion 1.9 버전 제어 시스템의 사용자를 차단하는 문제가 수정되었습니다.
    • 승인되지 않은 기기를 연결한 후 더 이상 에뮬레이터를 선택할 수 없는 Device Chooser 대화상자 문제가 수정되었습니다. 문제: 189658
    • 지역 한정자와 지역의 번역이 있지만 기본 언어에는 없는 언어의 잘못된 번역 오류 보고가 수정되었습니다. 문제: 188577
    • Layout Editor와의 상호작용과 관련된 Theme Editor의 교착 상태 문제가 수정되었습니다. 문제: 188070
    • 속성이 제대로 업데이트되지 않도록 하는 Theme Editor 새로고침 및 편집 충돌 문제가 수정되었습니다. 문제: 187726
    • Theme Editor 성능이 개선되었습니다.
    • 매니페스트에서 android:required 속성이 무시되는 문제가 수정되었습니다. 문제: 187665

    Android 스튜디오 v1.4.0(2015년 9월)

    수정 및 개선사항:

    • 머티리얼 아이콘과 SVG 파일 등의 벡터 그래픽을 가져오기 위한 Vector Asset Studio 도구가 추가되었습니다. 이 도구를 사용하려면 Project 창의 Android 뷰에서 res 폴더를 마우스 오른쪽 버튼으로 클릭하고 New > Vector Asset을 선택합니다.
    • 새로운 Android Monitor 기능, GPU 및 네트워크가 추가되었습니다. 이 모니터를 사용하려면 기본 창의 하단에서 Android Monitor를 클릭하세요. Android Device Monitor는 Android Monitor와 동시에 실행할 수 없습니다.
    • 새로운 Theme Editor의 조기 미리보기가 추가되었습니다. 이 기능을 사용하려면 Tools > Android > Theme Editor를 선택하세요.
    • 디자인 지원 라이브러리의 Android 템플릿이 업데이트되었습니다. 이제 템플릿에는 이전 버전과의 호환성을 위해 appcompat 지원 라이브러리뿐만 아니라 Material Design 사양 지원이 포함되어 있습니다.

    Android 스튜디오 v1.3.2(2015년 8월)

    수정 및 개선사항:

    • 새로운 화면 밀도의 기기를 만들기 위한 AVD Manager 지원 및 새로운 아이콘을 포함하여 Android 6.0(API 수준 23) 지원이 추가되었습니다.
    • 업데이트 확인 중 발생하는 예외가 수정되었습니다. 문제: 183068
    • 해결되지 않은 뷰 좌표가 Layout Editor의 비정상 종료를 일으킬 수 있는 문제가 수정되었습니다. 문제: 178690
    • 잘못된 리소스 유형 경고 문제가 해결되었습니다. 문제: 182433
    • 리소스를 비공개로 잘못 표시하는 린트 검사 문제가 수정되었습니다. 문제: 183120

    Android 스튜디오 v1.3.1(2015년 8월)

    수정 및 개선사항:

    • Windows에서 Android Wear AVD(Android Virtual Device) 생성을 위한 지원이 추가되었습니다.
    • 입력한 프로젝트 이름을 사용하도록 Project Wizard가 업데이트되었습니다.
    • Android SDK가 읽기 전용 디렉터리에 저장되도록 허용하는 지원이 추가되었습니다.
    • Gradle용 Android 플러그인 버전이 1.3.0으로 업데이트되었습니다.
    • Android 디버그 브리지 (adb) Unix 셸에서 디버그 세션을 실행하는 것과 관련된 문제가 수정되었습니다.
    • 자바 패키지 이름 변경 메시지가 올바른 패키지 이름을 표시하도록 수정되었습니다.

    Android 스튜디오 v1.3.0(2015년 7월)

    수정 및 개선사항:

    • Android 스튜디오 내에서 Google AdMob애널리틱스와 같은 개발자 서비스를 앱에 사용 설정하는 옵션이 추가되었습니다.
    • @RequiresPermission, @CheckResults, @MainThread와 같은 주석이 추가되었습니다.
    • Memory Monitor에서 Java 힙 덤프를 생성하고 스레드 할당을 분석하는 기능이 추가되었습니다. Android 스튜디오에서 Android 전용 HPROF 바이너리 형식 파일을 표준 HPROF 형식으로 변환할 수도 있습니다.
    • SDK Manager가 Android 스튜디오에 통합되어 패키지 및 도구 액세스가 간소화되었으며 업데이트 알림이 제공됩니다.

      참고: 독립형 SDK Manager는 명령줄에서 계속 사용할 수 있지만 독립형 SDK 설치에서만 사용하는 것이 좋습니다.

    • 에뮬레이터 콘솔에 finger 명령어가 추가되어 지문 인증을 시뮬레이션할 수 있습니다.
    • 라이브러리 리소스를 공개 및 비공개 리소스로 지정할 수 있는 <public> 리소스 선언이 추가되었습니다.

      참고: Gradle용 Android 플러그인 버전 1.3 이상이 필요합니다.

    • 애플리케이션 로직을 레이아웃 요소에 결합하는 선언적 레이아웃을 만들기 위한 데이터 결합 지원이 추가되었습니다.
    • Android 스튜디오에서 테스트 APK를 빌드하기 위한 별도의 테스트 APK 모듈 지원이 추가되었습니다.
    • HAXM 최적화와 개선된 알림이 포함되도록 AVD Manager가 업데이트되었습니다.
    • QEMU 2.1을 위한 64비트 ARM 및 MIPS 에뮬레이터 지원이 추가되었습니다.
    • Parcelable 구현 자동 생성과 같은 빠른 수정을 추가하여 린트 경고의 해결을 단순화했습니다.
    • 코드 스니펫을 빠르게 삽입할 수 있는 라이브 템플릿 지원이 추가되었습니다.

    Android 스튜디오 v1.2.2(2015년 6월)

    수정 및 개선사항:

    • 빌드 완성을 차단하던 빌드 문제가 수정되었습니다.

    Android 스튜디오 v1.2.1(2015년 5월)

    수정 및 개선사항:

    • 사소한 성능 및 기능 문제가 수정되었습니다.

    Android 스튜디오 v1.2.0(2015년 4월)

    수정 및 개선사항:

    • Android 런타임 창이 Memory Monitor 도구를 포함하도록 업데이트되고 CPU 성능 모니터링을 위한 탭이 추가되었습니다.
    • 왼쪽 여백에 Captures 탭이 추가되어 CPU 메서드 추적 및 메모리 힙 스냅샷과 같은 캡처된 메모리 및 CPU 성능 데이터 파일을 표시합니다.
    • 추가 메타데이터 주석 및 null 허용 여부 추론을 포함하여 주석 지원이 확장되었습니다.
    • 3자리 언어 및 지역 코드를 사용하는 BCP (Best Current Practice) 47에 대한 추가 지원으로 Translations Editor가 향상되었습니다.
    • IntelliJ 14 및 14.1 기능이 통합되어 향상된 코드 분석과 성능을 제공합니다.
      • 변수 및 참조 객체의 인라인 값을 표시하고 람다 및 연산자 식의 인라인 평가를 실행하도록 디버깅이 향상되었습니다.
      • 탭 및 들여쓰기 크기에 대한 코드 스타일 감지가 추가되었습니다.
      • 프로젝트 파일 없이 코드를 실험하고 프로토타입을 제작할 수 있는 스크래치 파일이 추가되었습니다.
      • HTML 및 XML 파일에서 열기 및 닫기 태그를 동시에 삽입할 수 있는 기능이 추가되었습니다.
      • 내장 자바 클래스 디컴파일러가 추가되어 소스 코드를 사용할 수 없는 라이브러리 내부의 콘텐츠를 볼 수 있습니다.

      새로운 기능 및 개선사항에 관한 전체 설명은 IntelliJ의 새로운 기능을 참고하세요.

    • 프로젝트 관리 및 액세스를 개선하는 Scratches, Project Files, Problems, ProductionTests프로젝트 뷰가 추가되었습니다.
    • 설정 액세스 및 관리를 개선하기 위해 File > Settings 메뉴와 대화상자를 개선했습니다.
    • Windows 및 Linux를 위한 고밀도 디스플레이 지원이 추가되었습니다.
    • res/drawable-280dpi/ 폴더에 280dpi 리소스 지원이 추가되었습니다.

    Android 스튜디오 v1.1.0(2015년 2월)

    다양한 수정 및 개선사항:

    • Android Wear 시계 템플릿 지원이 추가되었습니다.
    • 밀도별 런처 아이콘을 위한 res/mipmap 폴더를 포함하도록 새로운 프로젝트 및 모듈 생성이 수정되었습니다. 이러한 res/mipmap 폴더는 런처 아이콘을 위한 res/drawable 폴더를 대체합니다.
    • 런처 아이콘을 머티리얼 디자인 모양으로 업데이트하고 xxxhdpi 런처 아이콘을 추가했습니다.
    • 지역 및 언어 조합, 런처 아이콘, 리소스 이름 및 기타 일반적인 코드 문제를 위한 린트 검사를 추가하고 개선했습니다.
    • BCP(Best Current Practice) 언어 태그 47 지원이 추가되었습니다.

    Android 스튜디오 v1.0.1(2014년 12월)

    다양한 수정 및 개선사항:

    • AVD 관리자 및 device.xml 파일 잠김 문제가 수정되었습니다.
    • Windows 시스템에서 에뮬레이터 로그 문제가 수정되었습니다.
    • Windows 시스템의 다른 드라이브에 설치된 Android 스튜디오와 Android SDK로 AVD를 생성하는 문제가 수정되었습니다.
    • 신규 다운로드의 기본 업데이트 채널을 Stable로 설정합니다. Android 스튜디오 1.0.0 버전을 설치했는데 안정적인 프로덕션 지원 버전 업데이트를 원한다면 File > Settings > Updates를 사용하여 Stable 업데이트 채널로 변경하세요.

    Android 스튜디오 v1.0(2014년 12월)

    Android 스튜디오의 최초 버전

    Android 스튜디오 v0.8.14(2014년 10월)

    변경사항의 전체 목록은 tools.android.com을 참고하세요.

    Android 스튜디오 v0.8.6(2014년 8월)

    변경사항의 전체 목록은 tools.android.com을 참조하세요.

    Android 스튜디오 v0.8.0(2014년 6월)

    Android Wear 프로젝트 지원이 추가되었습니다.

    변경사항의 전체 목록은 tools.android.com을 참조하세요.

    Android 스튜디오 v0.5.2(2014년 5월)

    Android 스튜디오 v0.4.6(2014년 3월)

    Android 스튜디오 v0.4.2(2014년 1월)

    Android 스튜디오 v0.3.2(2013년 10월)

    Android 스튜디오 v0.2.x(2013년 7월)

    • 최신 IntelliJ 코드베이스 변경사항이 병합되었습니다. Linux 글꼴 크기 및 글꼴 렌더링 조정 등 스튜디오 사용자가 신고한 문제의 수정사항이 포함되어 있습니다.
    • Android Gradle 플러그인이 0.5.0으로 업데이트되었습니다.

      주의: 이번 새 버전은 이전 버전과 호환되지 않습니다. 이전 버전의 플러그인을 사용하는 프로젝트를 열면 스튜디오에서 Gradle <project_name> project refresh failed라는 오류를 표시합니다.

      업데이트된 Gradle 플러그인에는 다음 변경사항이 포함되어 있습니다.

      • DSL을 통해 맞춤설정되었더라도 출력 파일을 포함하도록 IDE 모델을 수정했습니다. 또한 변형 객체에서 출력 파일을 가져오고 설정하여 variant.packageApplication or variant.zipAlign을 사용할 필요가 없도록 DSL을 수정했습니다.
      • 기본 구성, 빌드 유형, 버전을 따로 해결하지 않고 함께 해결하도록 종속 항목 해결 문제가 수정되었습니다.
      • 라이브러리의 모든 종속 항목을 올바르게 포함하도록 라이브러리 프로젝트의 테스트 종속 항목을 수정했습니다.
      • 두 종속 항목의 리프 이름이 동일한 문제를 수정했습니다.
      • Proguard 규칙 파일이 버전에 적용되지 않는 문제를 수정했습니다.

      모든 Gradle 플러그인 출시 노트는 http://tools.android.com/tech-docs/new-build-system에서 확인할 수 있습니다.

    • aapt의 Gradle 오류가 더 이상 build/ 폴더의 병합된 출력 파일을 가리키지 않고 실제 소스 위치를 다시 가리킵니다.
    • 병렬 빌드. 이제 Gradle의 병렬 빌드를 사용할 수 있습니다. 병렬 빌드는 아직 실험 단계입니다(Gradle 문서 참고). 이 기능은 기본적으로 사용 중지되어 있으며 사용하려면 Preferences > Compiler로 이동하여 Compile independent modules in parallel 체크박스를 선택하세요.
    • 레이아웃 렌더링, 편집기에서 리소스 폴딩 등에 사용되는 새로운 리소스 저장소에 관한 추가 작업:
      • .aar 라이브러리 종속 항목을 기본 지원합니다(예: 소스의 로컬 사본 없이 라이브러리 사용). 소스 편집기의 리소스 XML 유효성 검사 및 탐색에는 여전히 작동하지 않습니다.
      • 리소스 참조에서 주기를 감지합니다.
      • 캐럿 아래 문자열의 모든 번역을 표시할 수 있는 Quick Documentation(F1)에서 이제 다양한 Gradle 버전과 빌드 유형의 모든 리소스 오버레이뿐 아니라 라이브러리도 표시합니다. 리소스 오버레이 역순으로 나열되며 마스크된 문자열 버전 위에 취소선이 표시됩니다.
      • 모듈 종속 항목 세트가 변경될 때 병합된 리소스 업데이트를 처리하도록 수정되었습니다.
      • 문자 엔티티 선언과 XML 및 유니코드 이스케이프를 올바르게 처리하도록 XML 렌더링이 수정되었습니다.
    • 레이아웃 미리보기 및 레이아웃 편집기 창에 스크린샷 저장 지원이 추가되었습니다.
    • 템플릿의 버그가 수정되었습니다.
    • Lint 버그가 수정되었습니다.
    • 비정상 종료 보고서의 다양한 문제가 수정되었습니다. 비정상 종료 보고서를 계속 제출해 주세요.

    Android 스튜디오 v0.1.x(2013년 5월)

    • 일반적인 Windows 설치 문제 수정을 포함하여 다양한 버그가 수정되었습니다.

    이전 버전의 Android Gradle 플러그인

    3.6.0(2020년 2월)

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    3.6.4(2020년 7월)

    이번 소규모 업데이트에서는 Android 11의 패키지 공개 상태와 관련된 새로운 기본 설정 및 기능과의 호환성을 지원합니다.

    자세한 내용은 4.0.1 출시 노트를 참고하세요.

    새로운 기능

    이 버전의 Android Gradle 플러그인에는 다음과 같은 새로운 기능이 포함됩니다.

    뷰 결합

    뷰 결합에서는 코드에서 뷰를 참조할 때 컴파일 시간 안전성을 제공합니다. 이제 findViewById()를 자동 생성된 결합 클래스 참조로 대체할 수 있습니다. 뷰 결합을 사용하려면 각 모듈의 build.gradle 파일에 다음을 포함하세요.

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    자세한 내용은 뷰 결합 문서를 참고하세요.

    Maven Publish 플러그인 지원

    Android Gradle 플러그인에는 빌드 아티팩트를 Apache Maven 저장소에 게시할 수 있는 Maven Publish Gradle 플러그인 지원 기능이 포함되어 있습니다. Android Gradle 플러그인은 Maven 저장소에 대한 게시를 맞춤설정하는 데 사용할 수 있는 앱 또는 라이브러리 모듈의 빌드 변형 아티팩트마다 구성요소를 생성합니다.

    자세한 내용은 Maven Publish 플러그인 사용 방법에 관한 페이지를 참고하세요.

    새로운 기본 패키징 도구

    앱의 디버그 버전을 빌드할 때 플러그인은 zipflinger라는 새로운 패키징 도구를 사용하여 APK를 빌드합니다. 이 새로운 도구를 사용하면 빌드 속도가 향상됩니다. 새 패키징 도구가 제대로 작동하지 않으면 버그를 신고하세요. 다음을 gradle.properties 파일에 포함하면 이전 패키징 도구를 사용하도록 되돌릴 수 있습니다.

            android.useNewApkCreator=false
          
    네이티브 빌드 속성

    이제 Clang이 프로젝트의 각 C/C++ 파일을 빌드하고 링크하는 데 걸리는 시간을 결정할 수 있습니다. Gradle은 이러한 컴파일러 이벤트의 타임스탬프를 포함하는 Chrome 트레이스를 출력할 수 있으며 이에 따라 프로젝트를 빌드하는 데 필요한 시간을 더 잘 파악할 수 있습니다. 이 빌드 속성 파일을 출력하려면 다음 단계를 따르세요.

    1. Gradle 빌드를 실행할 때 -Pandroid.enableProfileJson=true 플래그를 추가합니다. 예:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Chrome 브라우저를 열고 검색창에 chrome://tracing을 입력합니다.

    3. 로드 버튼을 클릭하고 <var>project-root</var>/build/android-profile로 이동하여 파일을 찾습니다. 파일 이름은 profile-<var>timestamp</var>.json.gz입니다.

    뷰어 상단에서 네이티브 빌드 속성 데이터를 볼 수 있습니다.

    Chrome의 네이티브 빌드 속성 트레이스

    동작 변경사항

    이 버전의 플러그인을 사용하면 동작에 다음과 같은 변경사항이 나타날 수 있습니다.

    네이티브 라이브러리가 기본적으로 압축되지 않고 패키징됨

    앱을 빌드하면 기본적으로 플러그인이 extractNativeLibs"false"로 설정합니다. 즉, 네이티브 라이브러리가 페이지 정렬되고 압축되지 않은 상태로 패키징됩니다. 이렇게 하면 업로드 크기는 커지지만 사용자에게 다음과 같은 장점이 있습니다.

    • 플랫폼이 라이브러리 사본을 생성하지 않고 설치된 APK에서 직접 네이티브 라이브러리에 액세스할 수 있기 때문에 앱 설치 크기가 더 작습니다.
    • APK 또는 Android App Bundle에 압축되지 않은 네이티브 라이브러리를 포함할 때 일반적으로 Play 스토어에서 압축이 더 많이 되므로 다운로드 크기가 더 작습니다.

    패키지 압축 네이티브 라이브러리 대신 Android Gradle 플러그인을 사용하려면 앱 매니페스트에 다음을 포함하세요.

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    참고: extractNativeLibs 매니페스트 속성은 useLegacyPackaging DSL 옵션으로 대체되었습니다. 자세한 내용은 DSL을 사용하여 압축된 네이티브 라이브러리 패키징 출시 노트를 참고하세요.

    기본 NDK 버전

    여러 버전의 NDK를 다운로드하면 이제 Android Gradle 플러그인이 소스 코드 파일을 컴파일할 때 사용할 기본 버전을 선택합니다. 이전에는 플러그인이 가장 최근에 다운로드한 NDK 버전을 선택했습니다. 모듈의 build.gradle 파일에서 android.ndkVersion 속성을 사용하여 플러그인에서 선택한 기본값을 재정의합니다.

    간소화된 R 클래스 생성

    Android Gradle 플러그인은 프로젝트의 라이브러리 모듈마다 R 클래스 하나만 생성하고 이러한 R 클래스를 다른 모듈 종속 항목과 공유함으로써 컴파일 클래스 경로를 단순화합니다. 이렇게 최적화하면 빌드 속도는 빨라지지만 다음 사항에 유의해야 합니다.

    • 컴파일러가 업스트림 모듈 종속 항목과 R 클래스를 공유하므로 프로젝트에 포함된 각 모듈이 고유한 패키지 이름을 사용해야 합니다.
    • 라이브러리의 R 클래스가 다른 프로젝트 종속 항목에 보이는지 여부는 라이브러리를 종속 항목으로 포함하는 데 사용된 설정에 의해 결정됩니다. 예를 들어 A 라이브러리에 B 라이브러리가 'api' 종속 항목으로 포함되어 있으면 A 라이브러리 및 A 라이브러리에 종속된 다른 라이브러리는 B 라이브러리의 R 클래스에 액세스할 수 있습니다. 하지만 다른 라이브러리는 B 라이브러리의 R 클래스에 액세스하지 못할 수 있습니다. 이는 A 라이브러리가 implementation 종속 항목 구성을 사용하는 경우에 적용됩니다. 자세한 내용은 종속 항목 구성을 참고하세요.
    기본 설정에 없는 리소스 삭제

    라이브러리 모듈의 경우 기본 리소스 세트에 포함하지 않은 언어의 리소스를 포함하면(예: /values-es/strings.xmlhello_world를 문자열 리소스로 포함하며 /values/strings.xml에 이 리소스를 정의하지 않음) Android Gradle 플러그인이 프로젝트를 컴파일할 때 더 이상 해당 리소스를 포함하지 않습니다. 이와 같이 작업을 변경하면서 Resource Not Found 런타임 예외가 줄었고 빌드 속도가 향상되었습니다.

    이제 D8이 주석의 CLASS 보관 정책을 따름

    앱을 컴파일할 때 이제 D8은 주석이 CLASS 보존 정책을 적용할 시점을 따르며 이러한 주석은 더 이상 런타임에 사용할 수 없습니다. 이러한 동작은 앱의 타겟 SDK를 API 수준 23으로 설정할 때도 실시되며 전에는 Android Gradle 플러그인 및 D8의 이전 버전을 사용하는 앱을 컴파일할 때 런타임 동안 이러한 주석에 액세스하도록 허용했습니다.

    기타 동작 변경사항
    • aaptOptions.noCompress는 모든 플랫폼에서 더 이상 대소문자를 구분하지 않으며 (APK 및 번들 모두 해당) 대문자를 사용하는 경로를 우선으로 따릅니다.
    • 이제 데이터 결합이 기본적으로 증가합니다. 자세한 내용은 문제 #110061530을 참고하세요.

    • Roboelectric 단위 테스트를 포함한 모든 단위 테스트는 이제 완전히 캐시 가능합니다. 자세한 내용은 문제 #115873047을 참고하세요.

    버그 수정

    이 Android Gradle 플러그인 버전에서는 다음과 같은 버그가 수정되었습니다.

    • 이제 데이터 결합을 사용하는 라이브러리 모듈에서 Robolectric 단위 테스트가 지원됩니다. 자세한 내용은 문제 #126775542를 참고하세요.
    • 이제 Gradle의 동시 실행 모드가 사용 설정된 동안 여러 모듈에서 connectedAndroidTest 작업을 실행할 수 있습니다.

    알려진 문제

    이 섹션에서는 Android Gradle 플러그인 3.6.0에서 발생한 알려진 문제에 관해 설명합니다.

    Android 린트 작업의 성능 속도 저하

    Android 린트가 일부 프로젝트에서 완료하는 데 훨씬 오래 걸릴 수 있습니다. 이는 파싱 인프라의 회귀 때문으로 특정 코드 구성의 람다 관련 추론된 형식의 계산이 느려집니다.

    이 문제는 IDEA 버그로 신고되었으며 Android Gradle 플러그인 4.0에서 해결될 예정입니다.

    매니페스트 클래스 누락 {:#agp-missing-manifest}

    앱이 매니페스트에 맞춤 권한을 정의하면 Android Gradle 플러그인은 일반적으로 맞춤 권한을 문자열 상수로 포함하는 Manifest.java 클래스를 생성합니다. 플러그인은 이 클래스를 앱과 패키지로 구성하므로 런타임 시 이러한 권한을 더 쉽게 참조할 수 있습니다.

    Android Gradle 플러그인 3.6.0에서 매니페스트 클래스 생성이 손상됩니다. 이 플러그인 버전으로 앱을 빌드하고 매니페스트 클래스를 참조한다면 ClassNotFoundException 예외가 표시됩니다. 이 문제를 해결하려면 다음 중 한 가지를 따르세요.

    • 정규화된 이름으로 맞춤 권한을 참조합니다. 예: "com.example.myapp.permission.DEADLY_ACTIVITY"

    • 아래와 같이 자체 상수를 정의합니다.

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0(2019년 8월)

    Android Gradle 플러그인 3.5.0은 Android 스튜디오 3.5와 함께 제공되는 메이저 버전이며, Android 개발자 도구의 세 가지 주요 영역, 즉 시스템 상태, 기능 개선, 버그 수정을 개선하는 데 중점을 두는 Project Marble의 결과물입니다. 특히 이 업데이트에서는 주로 프로젝트 빌드 속도 개선에 중점을 두었습니다.

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

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    3.5.4(2020년 7월)

    이번 소규모 업데이트에서는 Android 11의 패키지 공개 상태와 관련된 새로운 기본 설정 및 기능과의 호환성을 지원합니다.

    자세한 내용은 4.0.1 출시 노트를 참고하세요.

    3.5.3(2019년 12월)

    이번 소규모 업데이트는 Android 스튜디오 3.5.3을 지원하고 다양한 버그 수정 및 성능 개선을 포함합니다.

    3.5.2(2019년 11월)

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

    3.5.1(2019년 10월)

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

    증분 주석 처리

    gradle.properties 파일에 android.databinding.incremental=true를 설정한 경우 데이터 결합 주석 프로세서는 증분 주석 처리를 지원합니다. 이 최적화에 따라 증분 빌드 성능이 개선됩니다. 최적화된 주석 프로세서의 전체 목록은 증분 주석 프로세서 표를 참조하세요.

    또한 KAPT 1.3.30 이상도 증분 주석 프로세서를 지원하며 이 프로세서는 gradle.properties 파일에 kapt.incremental.apt=true를 포함하여 사용 설정할 수 있습니다.

    캐시 가능한 단위 테스트

    Android 리소스, 애셋, 매니페스트를 사용하기 위해 includeAndroidResourcestrue로 설정하여 단위 테스트를 사용 설정하면 Android Gradle 플러그인에서 절대 경로가 포함된 테스트 구성 파일을 생성하며 이에 따라 캐시 재배치성이 손상됩니다. 대신 상대 경로를 사용하여 테스트 구성 파일을 생성하도록 플러그인에 지시할 수 있으며 이렇게 하면 gradle.properties 파일에 다음이 포함되어 AndroidUnitTest 작업이 완전히 캐시 가능하게 됩니다.

          android.testConfig.useRelativePath = true
        

    알려진 문제

    • Kotlin Gradle 플러그인 1.3.31 이하를 사용하는 경우 프로젝트를 빌드하거나 동기화할 때 다음과 같은 경고가 표시될 수 있습니다.

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      이 문제를 해결하려면 플러그인을 버전 1.3.40 이상으로 업그레이드하세요.

    3.4.0(2019년 4월)

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    3.4.3(2020년 7월)

    이번 소규모 업데이트에서는 Android 11의 패키지 공개 상태와 관련된 새로운 기본 설정 및 기능과의 호환성을 지원합니다.

    자세한 내용은 4.0.1 출시 노트를 참고하세요.

    3.4.2(2019년 7월)

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

    3.4.1(2019년 5월)

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

    새로운 기능

    • 새로운 린트 검사 종속 항목 구성: lintChecks 동작이 변경되고 새로운 종속 항목 구성인 lintPublish가 도입되어 Android 라이브러리에 어떤 린트 검사가 패키징되는지 더 효과적으로 제어할 수 있습니다.

      • lintChecks: 프로젝트를 로컬로 빌드할 때만 실행하려는 린트 검사에 사용해야 하는 기존 구성입니다. 이전에는 lintChecks 종속 항목 구성을 사용하여 게시된 AAR에 린트 검사를 포함했다면 종속 항목을 이전하여 아래에 설명된 새로운 lintPublish 구성을 대신 사용해야 합니다.
      • lintPublish: 게시된 AAR에 포함하려는 린트 검사를 위해 다음과 같이 라이브러리 프로젝트에서 이 새로운 구성을 사용합니다. 라이브러리를 사용하는 프로젝트도 린트 검사를 적용하게 됩니다.

      다음 코드 샘플은 로컬 Android 라이브러리 프로젝트에서 두 가지 종속 항목 구성을 모두 사용합니다.

      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks project(':lint')
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish project(':lintpublish')
      }
              
      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks(project(":lint"))
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish(project(":lintpublish"))
          }
              
      • 일반적으로 패키징 및 서명 작업의 전반적인 빌드 속도가 개선됩니다. 이러한 작업과 관련하여 성능 저하를 발견한 경우 버그를 신고하세요.

    동작 변경사항

    • Android 인스턴트 앱의 Feature 플러그인 지원 중단 경고: 인스턴트 앱 빌드를 위해 com.android.feature 플러그인을 여전히 사용하고 있다면 Android Gradle 플러그인 3.4.0이 지원 중단 경고를 보냅니다. 이후 버전의 플러그인에서 인스턴트 앱을 계속 빌드할 수 있도록 하려면 단일 Android App Bundle에서 설치된 앱 환경과 인스턴트 앱 환경 두 가지를 모두 게시할 수 있는 동적 기능 플러그인을 사용하여 인스턴트 앱을 이전하세요.

    • 기본적으로 사용 설정되는 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
          
        

    참고: 주어진 빌드 유형의 경우 앱 모듈의 build.gradle 파일에서 useProguardfalse로 설정하면 프로젝트의 gradle.properties 파일에서 R8의 사용 중지 여부와 상관없이 Android Gradle 플러그인이 R8을 사용하여 빌드 유형의 앱 코드를 축소합니다.

    • ndkCompile 지원이 중단됨: 이제 ndkBuild를 사용하여 기본 라이브러리를 컴파일하려고 하면 빌드 오류가 발생합니다. 프로젝트에 C 및 C++ 코드를 추가하려면 대신 CMake 또는 ndk-build를 사용해야 합니다.

    알려진 문제

    • 고유한 패키지 이름의 올바른 사용법은 현재 적용되지 않지만 이후 버전의 플러그인에서 엄격하게 적용될 예정입니다. Android Gradle 플러그인 버전 3.4.0에서는 아래 줄을 gradle.properties 파일에 추가하여 프로젝트가 허용되는 패키지 이름을 선언하는지 여부를 검사하도록 선택할 수 있습니다.

                android.uniquePackageNames = true
                
              

      Android Gradle 플러그인을 통한 패키지 이름 설정에 관해 자세히 알아보려면 애플리케이션 ID 설정을 참고하세요.

    3.3.0(2019년 1월)

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    3.3.3(2020년 7월)

    이번 소규모 업데이트에서는 Android 11의 패키지 공개 상태와 관련된 새로운 기본 설정 및 기능과의 호환성을 지원합니다.

    자세한 내용은 4.0.1 출시 노트를 참고하세요.

    3.3.2(2019년 3월)

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

    3.3.1(2019년 2월)

    이번 소규모 업데이트는 Android 스튜디오 3.3.1을 지원하고 다양한 버그 수정 및 성능 개선을 포함합니다.

    새로운 기능

    • 클래스 경로 동기화 개선: 런타임 및 컴파일 시간 클래스 경로에 관한 종속 항목을 확인할 때 Android Gradle 플러그인은 여러 클래스 경로에 나타나는 종속 항목에 관한 특정 다운스트림 버전 충돌을 수정하려고 합니다.

      예를 들어 런타임 클래스 경로에 라이브러리 A 버전 2.0이 포함되고 컴파일 클래스 경로에 라이브러리 A 버전 1.0이 포함된 경우 플러그인은 오류를 방지하기 위해 컴파일 클래스 경로에 관한 종속 항목을 라이브러리 A 버전 2.0으로 자동 업데이트합니다.

      그러나 런타임 클래스 경로에 라이브러리 A 버전 1.0이 포함되고 컴파일 클래스 경로에 라이브러리 A 버전 2.0이 포함된 경우 플러그인은 컴파일 클래스 경로에 관한 종속 항목을 라이브러리 A 버전 1.0으로 다운그레이드하지 않으므로 오류가 발생합니다. 자세한 내용은 클래스 경로 간 충돌 해결을 참고하세요.

    • 주석 프로세서 사용 시 증분 자바 컴파일 개선: 이 업데이트는 주석 프로세서 사용 시 증분 자바 컴파일에 관한 지원을 개선해 빌드 시간을 줄입니다.

      참고: 이 기능은 Gradle 4.10.1 이상과 호환되나 Gradle 문제 8194로 인해 Gradle 5.1은 제외됩니다.

      • Kotlin 전용 프로젝트 및 Kotlin-자바 하이브리드 프로젝트가 대부분인 Kapt를 사용하는 프로젝트의 경우: 데이터 결합이나 레트로 람다 플러그인을 사용하더라도 증분 자바 컴파일이 사용 설정됩니다. Kapt 작업에 의한 주석 처리는 아직 증분되지 않습니다.

      • Kapt를 사용하지 않는 자바 전용 프로젝트의 경우: 사용하는 주석 프로세서가 증분 주석 처리를 모두 지원하는 경우 증분 자바 컴파일이 기본으로 사용 설정됩니다. 증분 주석 프로세서 채택을 모니터링하려면 Gradle 문제 5277을 참고하세요.

        그러나 하나 이상의 주석 프로세서가 증분 빌드를 지원하지 않는다면 증분 자바 컴파일이 사용 설정되지 않습니다. 대신 gradle.properties 파일에 다음 플래그를 포함할 수 있습니다.

        android.enableSeparateAnnotationProcessing=true
                    

        이 플래그를 포함하면 Android Gradle 플러그인이 별도의 작업에서 주석 프로세서를 실행하고 자바 컴파일 작업을 증분식으로 실행할 수 있습니다.

    • 더 이상 사용하지 않는 API를 사용할 때 더 나은 디버그 정보: 플러그인이 더 이상 지원되지 않는 API를 사용하고 있음을 감지하면 이제 API가 사용되는 위치를 판단하는 데 도움이 되는 보다 자세한 정보를 제공할 수 있습니다. 추가 정보를 보려면 프로젝트의 gradle.properties 파일에 다음을 포함해야 합니다.

                android.debug.obsoleteApi=true
              

      명령줄에서 -Pandroid.debug.obsoleteApi=true를 전달하여 플래그를 사용 설정할 수 있습니다.

    • 명령줄에서 기능 모듈에 관한 계측 테스트를 실행할 수 있습니다.

    동작 변경사항

    • 지연된 작업 구성: 플러그인은 이제 Gradle의 새로운 작업 생성 API를 사용하여 현재 빌드 또는 실행 작업 그래프에 없는 작업을 완료하는 데 필요하지 않은 작업의 초기화 및 구성을 방지합니다. 예를 들어 'release' 및 'debug' 빌드 변형과 같은 여러 빌드 변형이 있고 앱의 'debug' 버전을 빌드하고 있다면 플러그인은 앱의 'release' 버전의 작업을 초기화하거나 구성하지 않습니다.

      variant.getJavaCompile()과 같은 Variants API에서 특정 이전 메서드를 호출하면 여전히 작업 구성을 강제할 수도 있습니다. 지연 작업 구성에 빌드가 최적화되어 있는지 확인하려면 variant.getJavaCompileProvider()와 같은 TaskProvider 객체를 반환하는 새로운 메서드를 호출합니다.

      맞춤 빌드 작업을 실행하는 경우 Gradle의 새로운 작업 생성 API에 적응하는 방법을 알아보세요.

    • useProguard false를 설정할 때 지정된 빌드 유형의 경우 플러그인은 이제 ProGuard 대신 R8을 사용하여 앱의 코드와 리소스를 축소 및 난독화합니다. R8에 관한 자세한 내용은 Android 개발자 블로그에서 이 블로그 게시물을 읽어보세요.

    • 라이브러리 프로젝트를 위한 더 빠른 R 클래스 생성: 이전에는 Android Gradle 플러그인이 각 프로젝트의 종속 항목에 관해 R.java 파일을 생성한 다음 R 클래스를 앱의 다른 클래스와 함께 컴파일했습니다. 이제 플러그인은 먼저 중간 R.java 클래스를 빌드하지 않고 앱의 컴파일된 R 클래스를 포함하는 JAR을 직접 생성합니다. 이러한 최적화로 라이브러리 하위 프로젝트 및 종속 항목을 많이 포함하는 프로젝트의 빌드 성능이 크게 개선되고 Android 스튜디오의 색인 생성 속도도 개선될 수 있습니다.

    • 이제 Android App Bundle을 빌드할 때 Android 6.0(API 수준 23) 이상을 타겟팅하는 App Bundle에서 생성된 APK에 압축되지 않은 버전의 네이티브 라이브러리가 기본적으로 포함됩니다. 이러한 최적화로 기기가 라이브러리를 복사하지 않아도 되므로 앱의 디스크 크기가 줄어듭니다. 최적화를 사용 중지하려면 gradle.properties 파일에 다음을 추가합니다.

      android.bundle.enableUncompressedNativeLibs = false
              
    • 플러그인은 일부 서드 파티 플러그인의 최소 버전을 시행합니다.

    • 단일 변형 프로젝트 동기화: 빌드 구성을 사용하여 프로젝트를 동기화하는 것은 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 체크박스를 선택합니다.

      참고: 이 최적화는 자바 및 C++ 언어를 포함하는 프로젝트를 완전히 지원하며 Kotlin을 일부 지원합니다. Kotlin 콘텐츠가 포함된 프로젝트의 최적화를 사용 설정하면 Gradle 동기화는 전체 변형을 내부적으로 사용하는 방식으로 되돌아갑니다.

    • 누락된 SDK 패키지 자동 다운로드: 이 기능은 NDK를 지원하도록 확장되었습니다. 자세한 내용은 Gradle을 사용하여 누락된 패키지 자동 다운로드를 읽어보세요.

    버그 수정

    • Android Gradle 플러그인 3.3.0은 다음 문제를 해결합니다.

      • Jetifier가 사용 설정되었지만 AndroidX 버전 대신 android.support.v8.renderscript.RenderScript를 호출하는 빌드 프로세스
      • 정적으로 번들된 annotation.AnyRes를 포함하는 androidx-rs.jar로 인한 충돌
      • RenderScript를 사용하는 경우 build.gradle 파일에 빌드 도구 버전을 더 이상 수동으로 설정하지 않아도 됨

    3.2.0(2018년 9월)

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    3.2.1(2018년 10월)

    이 업데이트를 통해 더 이상 SDK 빌드 도구의 버전을 지정하지 않아도 됩니다. 이제 Android Gradle 플러그인이 기본적으로 버전 28.0.3을 사용합니다.

    새로운 기능

    • Android App Bundle 빌드 지원: 이 App Bundle은 모든 앱의 컴파일된 코드와 리소스를 포함하는 동시에 APK 생성 및 Google Play 스토어 서명은 지연시키는 새로운 업로드 형식입니다. 더 이상 여러 APK를 빌드, 서명, 관리할 필요가 없으며 사용자는 기기에 최적화된 작은 용량을 다운로드합니다. 자세한 내용은 Android App Bundle 정보를 읽어보세요.

    • 주석 프로세서 사용 시 개선된 증분 빌드 속도 지원: 이제 AnnotationProcessorOptions DSL이 CommandLineArgumentProvider를 확장하여 개발자나 주석 프로세서 작성자가 증분 빌드 속성 유형 주석을 사용하는 프로세서의 인수에 주석을 달 수 있습니다. 이러한 주석을 사용하면 증분 및 캐시된 클린 빌드의 정확성과 성능이 개선됩니다. 자세한 내용은 주석 프로세서에 인수 전달을 읽어보세요.

    • AndroidX용 이전 도구: Android 3.2 이상에서 Android Gradle 플러그인 3.2.0을 사용하는 경우 메뉴 바에서 Refactor > Migrate to AndroidX를 선택하여 프로젝트의 로컬 및 Maven 종속 항목을 이전해 새로운 AndroidX 라이브러리를 사용할 수 있습니다. 이 이전 도구를 사용하면 gradle.properties 파일에서 다음 플래그를 true로 설정하기도 합니다.

      • android.useAndroidX: true로 설정하면 Android 플러그인은 지원 라이브러리 대신 적절한 AndroidX 라이브러리를 사용합니다. 이 플래그를 지정하지 않으면 Android 플러그인은 기본적으로 false로 설정합니다.

      • android.enableJetifier: true로 설정하면 Android 플러그인은 바이너리를 다시 작성해 기존 서드 파티 라이브러리를 자동으로 이전하여 AndroidX를 사용합니다. 이 플래그를 지정하지 않으면 Android 플러그인은 기본적으로 false로 설정합니다. android.useAndroidXtrue로 설정한 경우에만 이 플래그를 true로 설정할 수 있고 그러지 않으면 빌드 오류가 발생합니다.

        자세한 내용은 AndroidX 개요를 읽어보세요.

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

              android.enableR8 = true
              
              android.enableR8 = true
              

    동작 변경사항

    • D8을 사용한 디슈가링이 기본적으로 사용 설정됩니다.

    • 이제 AAPT2가 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()
                  }
                
                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
    • 이제 네이티브 멀티덱스가 기본적으로 사용 설정됩니다. 이전 버전의 Android 스튜디오에서는 Android API 수준 21 이상을 실행하는 기기에 앱의 디버그 버전을 배포할 때 네이티브 멀티덱스를 사용 설정했습니다. 이제 기기에 배포하든 출시용 APK를 빌드하든 Android Gradle 플러그인이 minSdkVersion=21 이상을 설정한 모든 모듈에 네이티브 멀티덱스를 사용 설정합니다.

    • 이제 플러그인이 최소 버전의 protobuf 플러그인(0.8.6), Kotlin 플러그인(1.2.50), Crashlytics 플러그인(1.25.4)을 시행합니다.

    • 이제 기능 모듈 플러그인 com.android.feature가 모듈 이름을 지정할 때 문자, 숫자, 밑줄만을 사용하게 합니다. 예를 들어 기능 모듈 이름에 대시가 포함된 경우 빌드 오류가 발생합니다. 이 동작은 동적 기능 플러그인의 동작과 일치합니다.

    버그 수정

    • 이제 JavaCompile이 데이터 결합이 있는 프로젝트에서 캐시 가능합니다. (문제 #69243050)
    • 데이터 결합이 있는 라이브러리 모듈에 관한 컴파일 방지가 개선됩니다. (문제 #77539932)
    • 일부 예기치 않은 빌드 오류로 인해 이전 버전에서 configure-on-demand를 사용 중지한 경우 이제 이를 다시 사용 설정할 수 있습니다. (문제 #77910727)

    3.1.0(2018년 3월)

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    • Gradle 4.4 이상

      자세한 내용은 Gradle 업데이트하기 섹션을 읽어보세요.

    • 빌드 도구 27.0.3 이상

      주의사항: android.buildToolsVersion 속성을 사용하여 빌드 도구의 버전을 더 이상 지정하지 않아도 됩니다. 플러그인은 필요한 최소 버전을 기본적으로 사용합니다.

    새로운 DEX 컴파일러, D8

    이제 Android 스튜디오는 D8이라 부르는 새로운 DEX 컴파일러를 기본적으로 사용합니다. DEX 컴파일은 Android 런타임(이전 버전 Android의 경우 Dalvik)에서 .class 바이트 코드를 .dex 바이트 코드로 변환하는 프로세스입니다. 이전 컴파일러 DX와 비교할 때 D8은 더 빠르게 컴파일하고 더 작은 DEX 파일을 출력하면서 앱 런타임 성능은 동일하거나 더 좋게 유지합니다.

    D8은 일상적인 앱 개발 워크플로를 변경하지 않습니다. 그러나 새로운 컴파일러와 관련된 문제가 발생하면 버그를 신고하세요. 프로젝트의 gradle.properties 파일에 다음을 포함하여 D8을 일시적으로 사용 중지하고 DX를 사용할 수 있습니다.

          android.enableD8=false
        

    자바 8 언어 기능을 사용하는 프로젝트의 경우 증분 디슈가링이 기본적으로 사용 설정됩니다. 프로젝트의 gradle.properties 파일에 다음을 지정하여 사용 중지할 수 있습니다.

          android.enableIncrementalDesugaring=false.
        

    미리보기 사용자: 이미 D8의 미리보기 버전을 사용하고 있다면 이제 JDK가 아닌 SDK 빌드 도구에 포함된 라이브러리에 대해 컴파일됩니다. 따라서 JDK에는 있지만 SDK 빌드 도구 라이브러리에는 없는 API에 액세스하는 경우 컴파일 오류가 발생합니다.

    동작 변경사항

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

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

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • 이제 Android 플러그인의 빌드 캐시가 30일 이상 된 캐시 항목을 제거합니다.

    • "auto"resConfig로 전달하면 더 이상 자동으로 문자열 리소스를 선택하여 APK로 패키징하지 않습니다. 계속해서 "auto"를 사용하면 플러그인이 앱과 앱의 종속 항목이 제공하는 모든 문자열 리소스를 패키징합니다. 따라서 개발자는 플러그인을 통해 APK로 패키징하고자 하는 각 언어를 대신 지정해야 합니다.

    • 로컬 모듈은 앱의 테스트 APK에 의존할 수 없기 때문에 androidTestImplementation 대신 androidTestApi 구성을 사용하여 계측 테스트에 종속 항목을 추가하면 Gradle에서 다음과 같은 경고가 발생합니다.

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    수정사항

    • Android 스튜디오가 복합 빌드의 종속 항목을 적절히 인식하지 못하는 문제를 해결했습니다.
    • 단일 빌드에서 Android 플러그인을 여러 번 로드할 때 프로젝트 동기화 오류가 발생하는 문제를 해결했습니다. 예: 여러 하위 프로젝트가 빌드 스크립트 클래스 경로에 Android 플러그인을 각각 포함하는 경우

    3.0.0(2017년 10월)

    Android Gradle 플러그인 3.0.0에는 대규모 프로젝트의 성능 문제를 해결하려는 다양한 변경사항이 포함됩니다.

    예를 들어 약 130개의 모듈과 수많은 외부 종속 항목이 있고 코드나 리소스는 없는 샘플 스켈레톤 프로젝트에서 다음과 유사한 성능 개선을 경험할 수 있습니다.

    Android 플러그인 버전 + Gradle 버전 Android 플러그인 2.2.0 + Gradle 2.14.1 Android 플러그인 2.3.0 + Gradle 3.3 Android 플러그인 3.0.0 + Gradle 4.1
    구성(예: ./gradlew --help 실행하기) 약 2분 약 9초 약 2.5초
    한 줄 자바 변경(구현 변경) 약 2분 15초 약 29초 약 6.4초

    이러한 변경사항의 일부는 기존 빌드를 손상합니다. 따라서 새로운 플러그인을 사용하기 전에 프로젝트의 이전을 고려해야 합니다.

    위에 설명한 성능 개선이 발생하지 않으면 버그를 신고하고 Gradle Profiler를 사용하여 빌드의 트레이스를 포함하세요.

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    • Gradle 4.1 이상. 자세한 내용은 Gradle 업데이트하기 섹션을 읽어보세요.
    • 빌드 도구 26.0.2 이상. 이 업데이트를 통해 빌드 도구의 버전을 더 이상 지정하지 않아도 됩니다. 플러그인은 필요한 최소 버전을 기본적으로 사용합니다. 따라서 이제 android.buildToolsVersion 속성을 삭제할 수 있습니다.

    3.0.1 (2017년 11월)

    이번 소규모 업데이트는 Android 스튜디오 3.0.1을 지원하고 일반적인 버그 수정 및 성능 개선을 포함합니다.

    최적화

    • 세밀한 작업 그래프를 통해 다중 모듈 프로젝트의 동시 로드를 개선합니다.
    • 종속 항목을 변경할 때 Gradle은 종속 항목의 API에 액세스할 수 없는 모듈을 다시 컴파일하지 않음으로써 더 빠르게 빌드합니다. 개발자는 Gradle의 새로운 종속 항목 구성implementation, api, compileOnly, runtimeOnly를 사용하여 API를 다른 모듈에 유출하는 종속 항목을 제한해야 합니다.
    • 클래스별 덱싱으로 인해 증분 빌드 속도가 더 빨라집니다. 이제 각 클래스가 별도의 DEX 파일로 컴파일되며 수정된 클래스만 다시 덱싱됩니다. minSdkVersion을 20 이하로 설정하고 레거시 멀티덱스를 사용하는 앱의 빌드 속도도 개선됩니다.
    • 특정 작업을 최적화함으로써 빌드 속도를 개선하여 캐시된 출력을 사용합니다. 이 최적화의 이점을 얻으려면 먼저 Gradle 빌드 캐시를 사용 설정해야 합니다.
    • AAPT2를 사용하여 증분 리소스 처리를 개선하며 이제 이것은 기본적으로 사용 설정됩니다. AAPT2를 사용하는 동안 문제가 발생하면 버그를 신고하세요. gradle.properties 파일에 android.enableAapt2=false를 설정하고 명령줄에서 ./gradlew --stop을 실행하여 Gradle 데몬을 다시 시작함으로써 AAPT2를 사용 중지할 수도 있습니다.

    새로운 기능

    • 변형 인식 종속 항목 관리. 모듈의 특정 변형을 빌드할 때 이제 플러그인이 로컬 라이브러리 모듈 종속 항목의 변형을 빌드 중인 모듈의 변형과 자동으로 일치시킵니다.
    • 새로운 기능 모듈 플러그인을 포함하여 Android 인스턴트 앱SDK Manager를 사용해 다운로드할 수 있는 Android 인스턴트 앱 SDK를 지원합니다. 새로운 플러그인으로 기능 모듈을 생성하는 방법에 관한 자세한 내용은 여러 기능이 있는 인스턴트 앱의 구조를 읽어보세요.
    • 특정 Java 8 언어 기능 및 Java 8 라이브러리 사용을 위한 기본적인 지원이 제공됩니다. 이제 Jack은 지원 중단되고 더 이상 필요하지 않으므로 먼저 Jack을 사용 중지하여 기본 도구 모음에 빌드된 개선된 자바 8 지원을 사용해야 합니다. 자세한 내용은 자바 8 언어 기능 사용을 읽어보세요.
    • Android Test Orchestrator로 실행하는 테스트를 추가로 지원하여 앱의 자체 Instrumentation 호출 내에서 각 앱의 테스트를 실행할 수 있습니다. 각 테스트는 자체 Instrumentation 인스턴스에서 실행되므로 테스트 간의 공유 상태가 기기의 CPU나 메모리에 누적되지 않습니다. 테스트 하나가 비정상 종료되더라도 자체 Instrumentation 인스턴스만 중단하므로 다른 테스트는 계속 실행됩니다.

      • testOptions.execution을 추가하여 기기 내 테스트 조정의 사용 여부를 판단합니다. Android Test Orchestrator를 사용하려면 아래와 같이 ANDROID_TEST_ORCHESTRATOR를 지정해야 합니다. 이 속성은 기본적으로 HOST로 설정되며, 이는 기기 내 조정을 사용 중지하고 테스트를 실행하는 표준 메서드입니다.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 새로운 androidTestUtil 종속 항목 구성으로 Android Test Orchestrator와 같은 계측 테스트를 실행하기 전에 다른 테스트 도우미 APK를 설치할 수 있습니다.

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • testOptions.unitTests.includeAndroidResources를 추가하여 Android 리소스가 필요한 단위 테스트를 지원합니다(예: Roboelectric). 이 속성을 true로 설정하면 플러그인은 단위 테스트를 실행하기 전에 리소스와 애셋, 매니페스트 병합을 실행합니다. 그런 다음 테스트에서 클래스 경로의 com/android/tools/test_config.properties를 검사하여 다음 키가 있는지 확인할 수 있습니다.

      • android_merged_assets: 병합된 assets 디렉터리의 절대 경로입니다.

        참고: 라이브러리 모듈의 경우 병합된 애셋에는 종속 항목 애셋이 포함되지 않습니다. (문제 #65550419)

      • android_merged_manifest: 병합된 매니페스트 파일의 절대 경로입니다.

      • android_merged_resources: 모듈의 모든 리소스 및 모든 종속 항목을 포함하는 병합된 리소스 디렉터리의 절대 경로입니다.

      • android_custom_package: 최종 R 클래스의 패키지 이름입니다. 동적으로 애플리케이션 ID를 수정하면 이 패키지 이름이 앱의 매니페스트에 있는 package 속성과 일치하지 않을 수 있습니다.

    • 리소스로서의 글꼴 지원 (Android 8.0 (API 수준 26)에 도입된 새로운 기능)
    • Android 인스턴트 앱 SDK 1.1 이상에서 언어별 APK를 지원합니다.
    • 이제 아래와 같이 외부 네이티브 빌드 프로젝트의 출력 디렉터리를 변경할 수 있습니다.

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • 이제 Android 스튜디오에서 네이티브 프로젝트를 빌드할 때 CMake 3.7 이상을 사용할 수 있습니다.
    • 새로운 lintChecks 종속 항목 구성으로 맞춤 린트 규칙을 정의하는 JAR을 빌드하고 AAR 및 APK 프로젝트로 패키징할 수 있습니다.

      맞춤 린트 규칙은 단일 JAR을 출력하고 compileOnly 종속 항목만 포함하는 별도의 프로젝트에 속해야 합니다. 그러면 다른 앱 및 라이브러리 모듈이 lintChecks 구성을 사용하여 린트 프로젝트에 종속될 수 있습니다.

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    동작 변경사항

    • Android 플러그인 3.0.0은 특정 API를 삭제하여 이를 사용하면 빌드가 손상됩니다. 예를 들어 더 이상 Variants API를 사용하여 outputFile() 객체에 액세스하거나 processManifest.manifestOutputFile()을 사용하여 각 변형의 매니페스트 파일을 얻을 수 없습니다. 자세한 내용은 API 변경사항을 읽어보세요.
    • 더 이상 빌드 도구의 버전을 지정할 필요가 없으므로 이제 android.buildToolsVersion 속성을 삭제할 수 있습니다. 기본적으로 플러그인은 사용 중인 Android 플러그인 버전에 필요한 빌드 도구의 최소 버전을 자동으로 사용합니다.
    • 이제 아래와 같이 buildTypes 블록에서 PNG 크런칭을 사용 설정/중지합니다. PNG 크런칭은 디버그 빌드를 제외한 모든 빌드에 기본적으로 사용 설정되는데 그 이유는 많은 PNG 파일을 포함한 프로젝트의 빌드 시간이 증가하기 때문입니다. 따라서 다른 빌드 유형의 빌드 시간을 개선하려면 PNG 크런칭을 사용 중지하거나 이미지를 WebP로 변환해야 합니다.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • 이제 Android 플러그인이 외부 CMake 프로젝트에서 구성한 실행 가능한 타겟을 자동으로 빌드합니다.
    • 이제 annotationProcessor 종속 항목 구성을 사용하여 프로세서 클래스 경로에 주석 프로세서를 추가해야 합니다.
    • 지원 중단된 ndkCompile 사용이 더 제한됩니다. 대신 APK로 패키징하려는 네이티브 코드를 컴파일하도록 CMake나 ndk-build를 사용하여 이전해야 합니다. 자세한 내용은 ndkcompile에서 이전을 읽어보세요.

    3.0.0(2017년 10월)

    Android Gradle 플러그인 3.0.0에는 대규모 프로젝트의 성능 문제를 해결하려는 다양한 변경사항이 포함됩니다.

    예를 들어 약 130개의 모듈과 수많은 외부 종속 항목이 있고 코드나 리소스는 없는 샘플 스켈레톤 프로젝트에서 다음과 유사한 성능 개선을 경험할 수 있습니다.

    Android 플러그인 버전 + Gradle 버전 Android 플러그인 2.2.0 + Gradle 2.14.1 Android 플러그인 2.3.0 + Gradle 3.3 Android 플러그인 3.0.0 + Gradle 4.1
    구성(예: ./gradlew --help 실행하기) 약 2분 약 9초 약 2.5초
    한 줄 자바 변경(구현 변경) 약 2분 15초 약 29초 약 6.4초

    이러한 변경사항의 일부는 기존 빌드를 손상합니다. 따라서 새로운 플러그인을 사용하기 전에 프로젝트의 이전을 고려해야 합니다.

    위에 설명한 성능 개선이 발생하지 않으면 버그를 신고하고 Gradle Profiler를 사용하여 빌드의 트레이스를 포함하세요.

    이 버전의 Android 플러그인에는 다음이 필요합니다.

    • Gradle 4.1 이상. 자세한 내용은 Gradle 업데이트하기 섹션을 읽어보세요.
    • 빌드 도구 26.0.2 이상. 이 업데이트를 통해 빌드 도구의 버전을 더 이상 지정하지 않아도 됩니다. 플러그인은 필요한 최소 버전을 기본적으로 사용합니다. 따라서 이제 android.buildToolsVersion 속성을 삭제할 수 있습니다.

    3.0.1 (2017년 11월)

    이번 소규모 업데이트는 Android 스튜디오 3.0.1을 지원하고 일반적인 버그 수정 및 성능 개선을 포함합니다.

    최적화

    • 세밀한 작업 그래프를 통해 다중 모듈 프로젝트의 동시 로드를 개선합니다.
    • 종속 항목을 변경할 때 Gradle은 종속 항목의 API에 액세스할 수 없는 모듈을 다시 컴파일하지 않음으로써 더 빠르게 빌드합니다. 개발자는 Gradle의 새로운 종속 항목 구성implementation, api, compileOnly, runtimeOnly를 사용하여 API를 다른 모듈에 유출하는 종속 항목을 제한해야 합니다.
    • 클래스별 덱싱으로 인해 증분 빌드 속도가 더 빨라집니다. 이제 각 클래스가 별도의 DEX 파일로 컴파일되며 수정된 클래스만 다시 덱싱됩니다. minSdkVersion을 20 이하로 설정하고 레거시 멀티덱스를 사용하는 앱의 빌드 속도도 개선됩니다.
    • 특정 작업을 최적화함으로써 빌드 속도를 개선하여 캐시된 출력을 사용합니다. 이 최적화의 이점을 얻으려면 먼저 Gradle 빌드 캐시를 사용 설정해야 합니다.
    • AAPT2를 사용하여 증분 리소스 처리를 개선하며 이제 이것은 기본적으로 사용 설정됩니다. AAPT2를 사용하는 동안 문제가 발생하면 버그를 신고하세요. gradle.properties 파일에 android.enableAapt2=false를 설정하고 명령줄에서 ./gradlew --stop을 실행하여 Gradle 데몬을 다시 시작함으로써 AAPT2를 사용 중지할 수도 있습니다.

    새로운 기능

    • 변형 인식 종속 항목 관리. 모듈의 특정 변형을 빌드할 때 이제 플러그인이 로컬 라이브러리 모듈 종속 항목의 변형을 빌드 중인 모듈의 변형과 자동으로 일치시킵니다.
    • 새로운 기능 모듈 플러그인을 포함하여 Android 인스턴트 앱SDK Manager를 사용해 다운로드할 수 있는 Android 인스턴트 앱 SDK를 지원합니다. 새로운 플러그인으로 기능 모듈을 생성하는 방법에 관한 자세한 내용은 여러 기능이 있는 인스턴트 앱의 구조를 읽어보세요.
    • 특정 Java 8 언어 기능 및 Java 8 라이브러리 사용을 위한 기본적인 지원이 제공됩니다. 이제 Jack은 지원 중단되고 더 이상 필요하지 않으므로 먼저 Jack을 사용 중지하여 기본 도구 모음에 빌드된 개선된 자바 8 지원을 사용해야 합니다. 자세한 내용은 자바 8 언어 기능 사용을 읽어보세요.
    • Android Test Orchestrator로 실행하는 테스트를 추가로 지원하여 앱의 자체 Instrumentation 호출 내에서 각 앱의 테스트를 실행할 수 있습니다. 각 테스트는 자체 Instrumentation 인스턴스에서 실행되므로 테스트 간의 공유 상태가 기기의 CPU나 메모리에 누적되지 않습니다. 테스트 하나가 비정상 종료되더라도 자체 Instrumentation 인스턴스만 중단하므로 다른 테스트는 계속 실행됩니다.

      • testOptions.execution을 추가하여 기기 내 테스트 조정의 사용 여부를 판단합니다. Android Test Orchestrator를 사용하려면 아래와 같이 ANDROID_TEST_ORCHESTRATOR를 지정해야 합니다. 이 속성은 기본적으로 HOST로 설정되며, 이는 기기 내 조정을 사용 중지하고 테스트를 실행하는 표준 메서드입니다.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 새로운 androidTestUtil 종속 항목 구성으로 Android Test Orchestrator와 같은 계측 테스트를 실행하기 전에 다른 테스트 도우미 APK를 설치할 수 있습니다.

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • testOptions.unitTests.includeAndroidResources를 추가하여 Android 리소스가 필요한 단위 테스트를 지원합니다(예: Roboelectric). 이 속성을 true로 설정하면 플러그인은 단위 테스트를 실행하기 전에 리소스와 애셋, 매니페스트 병합을 실행합니다. 그런 다음 테스트에서 클래스 경로의 com/android/tools/test_config.properties를 검사하여 다음 키가 있는지 확인할 수 있습니다.

      • android_merged_assets: 병합된 assets 디렉터리의 절대 경로입니다.

        참고: 라이브러리 모듈의 경우 병합된 애셋에는 종속 항목 애셋이 포함되지 않습니다. (문제 #65550419)

      • android_merged_manifest: 병합된 매니페스트 파일의 절대 경로입니다.

      • android_merged_resources: 모듈의 모든 리소스 및 모든 종속 항목을 포함하는 병합된 리소스 디렉터리의 절대 경로입니다.

      • android_custom_package: 최종 R 클래스의 패키지 이름입니다. 동적으로 애플리케이션 ID를 수정하면 이 패키지 이름이 앱의 매니페스트에 있는 package 속성과 일치하지 않을 수 있습니다.

    • 리소스로서의 글꼴 지원 (Android 8.0 (API 수준 26)에 도입된 새로운 기능)
    • Android 인스턴트 앱 SDK 1.1 이상에서 언어별 APK를 지원합니다.
    • 이제 아래와 같이 외부 네이티브 빌드 프로젝트의 출력 디렉터리를 변경할 수 있습니다.

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • 이제 Android 스튜디오에서 네이티브 프로젝트를 빌드할 때 CMake 3.7 이상을 사용할 수 있습니다.
    • 새로운 lintChecks 종속 항목 구성으로 맞춤 린트 규칙을 정의하는 JAR을 빌드하고 AAR 및 APK 프로젝트로 패키징할 수 있습니다.

      맞춤 린트 규칙은 단일 JAR을 출력하고 compileOnly 종속 항목만 포함하는 별도의 프로젝트에 속해야 합니다. 그러면 다른 앱 및 라이브러리 모듈이 lintChecks 구성을 사용하여 린트 프로젝트에 종속될 수 있습니다.

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    동작 변경사항

    • Android 플러그인 3.0.0은 특정 API를 삭제하여 이를 사용하면 빌드가 손상됩니다. 예를 들어 더 이상 Variants API를 사용하여 outputFile() 객체에 액세스하거나 processManifest.manifestOutputFile()을 사용하여 각 변형의 매니페스트 파일을 얻을 수 없습니다. 자세한 내용은 API 변경사항을 읽어보세요.
    • 더 이상 빌드 도구의 버전을 지정할 필요가 없으므로 이제 android.buildToolsVersion 속성을 삭제할 수 있습니다. 기본적으로 플러그인은 사용 중인 Android 플러그인 버전에 필요한 빌드 도구의 최소 버전을 자동으로 사용합니다.
    • 이제 아래와 같이 buildTypes 블록에서 PNG 크런칭을 사용 설정/중지합니다. PNG 크런칭은 디버그 빌드를 제외한 모든 빌드에 기본적으로 사용 설정되는데 그 이유는 많은 PNG 파일을 포함한 프로젝트의 빌드 시간이 증가하기 때문입니다. 따라서 다른 빌드 유형의 빌드 시간을 개선하려면 PNG 크런칭을 사용 중지하거나 이미지를 WebP로 변환해야 합니다.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • 이제 Android 플러그인이 외부 CMake 프로젝트에서 구성한 실행 가능한 타겟을 자동으로 빌드합니다.
    • 이제 annotationProcessor 종속 항목 구성을 사용하여 프로세서 클래스 경로에 주석 프로세서를 추가해야 합니다.
    • 지원 중단된 ndkCompile 사용이 더 제한됩니다. 대신 APK로 패키징하려는 네이티브 코드를 컴파일하도록 CMake나 ndk-build를 사용하여 이전해야 합니다. 자세한 내용은 ndkcompile에서 이전을 읽어보세요.

    2.3.0(2017년 2월)

    2.3.3(2017년 6월)

    이번 소규모 업데이트에는 Android 스튜디오 2.3.3과의 호환성이 추가됩니다.

    2.3.2(2017년 5월)

    이번 소규모 업데이트에는 Android 스튜디오 2.3.2와의 호환성이 추가됩니다.

    2.3.1(2017년 4월)

    이번 Android 플러그인 2.3.0의 업데이트는 일부 실제 Android 기기가 Instant Run과 제대로 호환되지 않을 경우에 발생하는 문제를 해결합니다. (문제 #235879)

    종속 항목:
    신규:
    • 성능 개선 및 새로운 기능이 포함된 Gradle 3.3을 사용합니다. 자세한 내용은 Gradle 출시 노트를 참고하세요.
    • 빌드 캐시: 프로젝트를 빌드할 때 Android 플러그인이 생성하는 특정 출력(예: 패키지 해제된 AAR 및 사전 덱싱된 원격 종속 항목)을 저장합니다. 클린 빌드는 캐시를 사용하는 동안 훨씬 더 빠릅니다. 그 이유는 빌드 시스템이 후속 빌드 중에 캐시된 파일을 다시 생성하는 것이 아니라 재사용하면 되기 때문입니다. Android 플러그인 2.3.0 이상을 사용하는 프로젝트는 기본적으로 빌드 캐시를 사용합니다. 자세한 내용은 빌드 캐시로 빌드 속도 개선을 읽어보세요.
    변경사항:

    2.2.0(2016년 9월)

    종속 항목:
    신규:
    • 성능 개선 및 새로운 기능을 포함하는 Gradle 2.14.1을 사용하고 Gradle 데몬을 사용할 때 로컬 권한 에스컬레이션을 허용하는 보안 취약점을 해결합니다. 자세한 내용은 Gradle 출시 노트를 참고하세요.
    • externalNativeBuild {} DSL을 사용하여 이제 Gradle로 네이티브 소스에 연결하고 CMake나 ndk-build를 사용하여 네이티브 라이브러리를 컴파일할 수 있습니다. 네이티브 라이브러리를 빌드한 후에 APK로 패키징합니다. Gradle로 CMake 및 ndk-build를 사용하는 방법에 관한 자세한 내용은 프로젝트에 C 및 C++ 코드 추가를 읽어보세요.
    • 명령줄에서 빌드를 실행하면 이제 Gradle이 누락된 SDK 구성요소나 프로젝트가 종속하는 업데이트를 자동 다운로드하려고 시도합니다. 자세한 내용은 Gradle로 누락된 패키지 자동 다운로드를 읽어보세요.
    • 새로운 실험용 캐싱 기능으로 Gradle이 사전 덱싱된 라이브러리 버전을 사전 덱싱, 저장, 재사용하여 빌드 시간을 단축할 수 있습니다. 이 실험용 기능 사용에 관한 자세한 내용은 빌드 캐시 가이드를 읽어보세요.
    • 작업 한 번으로 압축과 서명, zipaligning을 처리하는 새로운 기본 패키징 파이프라인을 채택해 빌드 성능을 개선합니다. gradle.properties 파일에 android.useOldPackaging=true를 추가하여 이전 패키징 도구를 사용하도록 되돌릴 수 있습니다. 새로운 패키징 도구를 사용하는 동안 zipalignDebug 작업은 사용할 수 없습니다. 그러나 createZipAlignTask(String taskName, File inputFile, File outputFile) 메서드를 호출하여 직접 그 작업을 생성할 수 있습니다.
    • 이제 APK 서명이 기본 JAR 서명 외에도 APK 서명 체계 v2를 사용합니다. 모든 Android 플랫폼이 그 결과로 발생하는 APK를 허용합니다. 서명 후 이러한 APK를 수정하면 v2 서명이 무효화되고 기기에 설치되지도 않습니다. 이 기능을 사용 중지하려면 모듈 수준 build.gradle 파일에 다음을 추가하세요.

      Groovy

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Kotlin

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • 멀티덱스 빌드의 경우 이제 ProGuard 규칙을 사용하여 Gradle이 앱의 기본 DEX 파일로 컴파일해야 하는 클래스를 결정할 수 있습니다. 앱을 시작할 때 Android 시스템이 기본 DEX 파일을 먼저 로드하기 때문에 시작 시 특정 클래스를 기본 DEX 파일로 컴파일하여 우선순위를 정할 수 있습니다. 기본 DEX 파일용으로 특별히 ProGuard 구성 파일을 생성한 후 buildTypes.multiDexKeepProguard를 사용하여 구성 파일의 경로를 Gradle로 전달합니다. 이 DSL을 사용하는 것은 buildTypes.proguardFiles를 사용하는 것과 다르며 앱의 일반적인 ProGuard 규칙을 제공하지만 기본 DEX 파일의 클래스를 지정하지는 않습니다.
    • android:extractNativeLibs 플래그 지원을 추가하여 기기에 앱을 설치할 때 앱의 크기를 줄일 수 있습니다. 앱 매니페스트의 <application> 요소에서 이 플래그를 false로 설정하면 Gradle이 APK로 압축되지 않고 정렬된 버전의 네이티브 라이브러리를 패키징합니다. 이로써 설치하는 동안 PackageManager가 네이티브 라이브러리를 APK에서 기기의 파일 시스템으로 복사할 수 없고 앱의 델타 업데이트 용량이 적어지는 추가 혜택이 있습니다.
    • 이제 제품 버전에 versionNameSuffixapplicationIdSuffix를 지정할 수 있습니다. (문제 59614)
    변경사항:
    • 이제 getDefaultProguardFile가 Gradle용 Android 플러그인이 제공하는 기본 ProGuard 파일을 반환하고 더 이상 Android SDK의 파일을 사용하지 않습니다.
    • Jack 컴파일러 성능 및 기능을 개선합니다.
      • testCoverageEnabledtrue로 설정할 때 이제 Jack이 Jacoco 테스트 적용 범위를 지원합니다.
      • 주석 프로세서 지원을 개선합니다. 클래스 경로의 주석 프로세서(예: compile 종속성)가 빌드에 자동으로 적용됩니다. 모듈 수준 build.gradle 파일에서 javaCompileOptions.annotationProcessorOptions {} DSL을 사용하여 빌드에 주석 프로세서를 지정하고 인수를 전달할 수도 있습니다.

        Groovy

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Kotlin

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        컴파일 시 주석 프로세서를 적용하고 APK에는 이를 포함하지 않으려면 annotationProcessor 종속 항목 범위를 사용하세요.

        Groovy

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Kotlin

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • 설정할 수 있는 매개변수 목록을 보려면 명령줄에서 다음을 실행합니다.

        java -jar /build-tools/jack.jar --help-properties
        
      • 기본적으로 Gradle 데몬의 힙 크기가 1.5GB 이상이면 이제 Jack이 Gradle과 같은 프로세스에서 실행됩니다. 데몬 힙 크기를 조정하려면 다음을 gradle.properties 파일에 추가하세요.
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0(2016년 4월)

    2.1.3 (2016년 8월)

    이 업데이트에는 Gradle 2.14.1 이상이 필요합니다. Gradle 2.14.1에는 성능 개선, 새로운 기능, 중요한 보안 수정사항이 포함됩니다. 자세한 내용은 Gradle 출시 노트를 참조하세요.

    종속 항목:
    신규:
    • Jack 도구 모음을 사용하여 N 개발자 미리보기인 JDK8과 자바 8 언어 기능의 지원을 추가합니다. 자세한 내용은 N 미리보기 가이드를 읽어보세요.

      참고: Instant Run은 현재 Jack과 호환되지 않으며 새로운 도구 모음을 사용하는 동안 사용 중지됩니다. N 미리보기용으로 개발 중이고 지원되는 자바 8 언어 기능을 사용하려는 경우에만 Jack을 사용해야 합니다.

    • 증분 자바 컴파일에 관한 기본 지원을 추가하여 개발하는 동안 컴파일 시간을 단축합니다. 변경되었거나 다시 컴파일해야 하는 소스 부분만 다시 컴파일하여 시간을 단축합니다. 이 기능을 사용 중지하려면 모듈 수준 build.gradle 파일에 다음을 추가하세요.

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }
      

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
      
    • 별도의 외부 VM 프로세스가 아닌 빌드 프로세스 내에서 덱싱을 실행하는 dexing-in-process 지원을 추가합니다. 이로 인해 증분 빌드가 빨라질 뿐만 아니라 전체 빌드 속도도 개선됩니다. 이 기능은 Gradle 데몬의 최대 힙 크기를 2048MB 이상으로 설정한 프로젝트에 기본적으로 사용 설정됩니다. 프로젝트의 gradle.properties 파일에 다음을 포함하여 이를 이행할 수 있습니다.

      ```none org.gradle.jvmargs = -Xmx2048m ```

      모듈 수준 build.gradle 파일에서 javaMaxHeapSize 값을 정의한 경우 org.gradle.jvmargsjavaMaxHeapSize + 1024MB 값으로 설정해야 합니다. 예를 들어 javaMaxHeapSize를 '2048m'으로 설정한 경우 프로젝트의 gradle.properties 파일에 다음을 추가해야 합니다.

      ```none org.gradle.jvmargs = -Xmx3072m ```

      dexing-in-process를 사용 중지하려면 모듈 수준 build.gradle 파일에 다음 코드를 추가하세요.

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }
      

    2.0.0(2016년 4월)

    종속 항목:
    신규:
    • 바이트 코드 삽입을 지원하고 에뮬레이터나 실제 기기에서 실행 중인 앱에 코드 및 리소스 업데이트를 푸시하여 Instant Run을 사용 설정합니다.
    • 앱이 실행되지 않는 경우에도 증분 빌드 지원을 추가합니다. Android 디버그 브리지를 통해 증분 변경사항을 연결된 기기에 푸시하여 전체 빌드 시간이 개선됩니다.
    • maxProcessCount를 추가하여 동시에 생성할 수 있는 최대 worker dex 프로세스 수를 제어합니다. 모듈 수준 build.gradle 파일의 다음 코드는 최대 동시 프로세스 수를 4로 설정합니다.

      Groovy

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Groovy

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }
      

      Kotlin

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
      
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    변경된 동작:
    • minSdkVersion이 18 이상으로 설정된 경우 APK 서명은 SHA256을 사용합니다.
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    해결된 문제:
    • 테스트 및 기본 빌드 구성 모두에서 AAR 종속 항목이 중복되는 문제가 해결되었습니다.

    Gradle용 Android 플러그인 버전 1.5.0(2015년 11월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • 데이터 결합 플러그인을 Gradle용 Android 플러그인에 통합합니다. 사용 설정하려면 플러그인을 사용하는 각 프로젝트 build.gradle 파일마다 다음 코드를 추가하세요.
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • 새로운 변환 API를 추가하여 서드 파티 플러그인이 컴파일된 .class 파일을 .dex 파일로 변환하기 전에 조작할 수 있습니다. 변환 API는 사용자설정 클래스 조작 삽입을 단순화하는 동시에 조작할 수 있는 것에 관련해 유연성을 더 제공합니다. 빌드에 변환을 삽입하려면 Transform 인터페이스 중 하나를 구현하는 새로운 클래스를 생성하고 android.registerTransform(theTransform) 또는 android.registerTransform(theTransform, dependencies)로 등록하세요. 작업을 함께 연결할 필요가 없습니다. 변환 API에 관한 다음 사항에 주의하세요.
      • 변환은 현재 프로젝트, 하위 프로젝트, 외부 라이브러리 중 하나 이상에 적용될 수 있습니다.
      • 변환은 전역적으로 등록되어야 하며 모든 변형에 적용됩니다.
      • 자바 코드 적용 범위 라이브러리 (JaCoCo), ProGuard, MultiDex를 통한 내부 코드 처리가 이제 변환 API를 사용합니다. 그러나 자바 Android 컴파일러 키트(Jack)는 이 API를 사용하지 않고 javac/dx 코드 경로만 사용합니다.
      • Gradle은 JaCoCo, 서드 파티 플러그인, ProGuard 순으로 변환을 실행합니다. 서드 파티 플러그인의 실행 순서는 서드 파티 플러그인이 변환을 추가하는 순서와 일치합니다. 서드 파티 플러그인 개발자는 API를 통해 변환의 실행 순서를 제어할 수 없습니다.
    • ApplicationVariant 클래스에서 dex를 지원 중단합니다. 변형 API를 통해 더 이상 Dex 작업에 액세스할 수 없으며 그 이유는 이제 변환을 통해 완수되기 때문입니다. 현재 dex 프로세스를 제어하는 교체품이 없습니다.
    • 애셋 증분 지원이 수정됩니다.
    • 테스트 프로젝트에 사용할 수 있도록 하여 MultiDex 지원을 개선하고 이제 테스트에는 자동으로 com.android.support:multidex-instrumentation 종속 항목이 있습니다.
    • Gradle 빌드가 비동기 작업을 호출하고 worker 프로세스에 오류가 있을 때 Gradle 빌드에 적절히 오류를 발생시키고 기본 오류 원인을 보고하는 기능이 추가됩니다.
    • 여러 Application Binary Interface(ABI)를 포함하는 변형에서 특정 ABI 구성에 관한 지원을 추가합니다.
    • 테스트를 설치하거나 실행할 때 ANDROID_SERIAL 환경 변수에 관한 기기 일련번호의 쉼표로 구분된 목록의 지원을 추가합니다.
    • APK 이름에 공백이 있을 때 Android 5.0(API 수준 20) 이상을 실행하는 기기에서의 설치 실패를 해결합니다.
    • Android 애셋 패키징 도구(AAPT) 오류 출력과 관련된 다양한 문제를 해결합니다.
    • JaCoCo 증분 계측 지원이 추가되어 증분 빌드가 더 빨라집니다. 이제 Gradle용 Android 플러그인이 JaCoCo 계측기를 직접 호출합니다. 최신 버전 JaCoCo 계측기를 강제 실행하려면 빌드 스크립트 종속 항목으로 추가해야 합니다.
    • JaCoCo 지원이 수정되어 클래스가 아닌 파일을 무시합니다.
    • 이전 버전과의 호환성을 위해 빌드 시 PNG를 생성하는 벡터 드로어블 지원을 추가합니다. Gradle용 Android 플러그인은 API 버전을 지정하지 않거나 앱 매니페스트의 <uses-sdk> 요소에서 20 이하의 android:minSdkVersion 속성을 지정한 리소스 디렉터리에서 발견된 모든 벡터 드로어블의 PNG를 생성합니다. build.gradle 파일의 defaultConfig 또는 productFlavor 섹션에서 generatedDensities 속성을 사용하여 PNG 밀도를 설정할 수 있습니다.
    • 모의할 수 있는 android.jar를 추가로 공유하며 이것은 플러그인이 단위 테스트를 위해 한 번만 생성하고 사용합니다. 이제 다중 모듈(예: app, lib)이 이를 공유합니다. $rootDir/build를 삭제하여 이를 재생성합니다.
    • 자바 리소스 처리를 변경하여 APK를 패키징하는 동안이 아닌 난독화 작업 전에 발생합니다. 이 변경사항으로 난독화 작업이 패키지 난독화에 따라 자바 리소스를 조정할 수 있습니다.
    • 실험용 라이브러리 플러그인에서 자바 네이티브 인터페이스(JNI) 코드를 사용하는 문제를 해결합니다.
    • 실험용 라이브러리 플러그인에서 android:compileSdkVersion 속성과는 별도로 플랫폼 버전을 설정하는 기능을 추가합니다.

    Gradle용 Android 플러그인 버전 1.3.1(2015년 8월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • ZipAlign 작업을 수정하여 맞춤설정된 파일 이름을 사용할 때 이전 작업의 출력을 올바르게 사용합니다.
    • NDK를 사용한 Renderscript 패키징을 해결합니다.
    • createDebugCoverageReport 빌드 작업의 지원을 유지합니다.
    • build.gradle 빌드 파일에서 archiveBaseName 속성의 맞춤설정된 사용에 관한 지원을 해결합니다.
    • Android 스튜디오 외부에서 린트를 실행할 때 매개변수 메서드 주석 찾기로 발생하는 Invalid ResourceType 린트 경고를 해결합니다.

    Gradle용 Android 플러그인 버전 1.3.0(2015년 7월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • com.android.build.threadPoolSize 속성을 추가로 지원하여 gradle.properties 파일 또는 명령줄에서 Android 작업 스레드 풀 크기를 제어합니다. 다음 예는 이 속성을 4로 설정합니다.

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • 기본 빌드 동작을 APK에서 LICENSELICENSE.txt 파일을 제외하도록 설정합니다. APK에 이 파일을 포함하려면 build.gradle 파일의 packagingOptions.excludes 속성에서 이 파일을 삭제합니다. 예:
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • sourceSets 작업을 추가하여 사용 가능한 모든 소스 세트를 검사합니다.
    • 단위 테스트 지원을 개선해 여러 버전 및 빌드 변형 소스 폴더를 인식합니다. 예를 들어 여러 버전(flavor1flavorA)이 포함된 앱을 Debug 빌드 유형으로 테스트하는 경우 테스트 소스 세트는 다음과 같습니다.
      • 테스트
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      Android 테스트는 이미 여러 종류의 소스 폴더를 인식합니다.

    • 단위 테스트 지원을 개선했습니다.
      • 빌드 파일에서 useJack 속성이 true로 설정되어 있더라도 기본 및 테스트 소스에 javac를 실행합니다.
      • 각 빌드 유형의 종속성을 올바르게 인식합니다.
    • 명령줄에서 계측 테스트 실행기 인수를 지정하는 지원을 추가합니다. 예를 들면 다음과 같습니다.
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • build.gradle 파일에서 임의의 추가 Android Asset Packaging Tool(AAPT) 매개변수에 관한 지원을 추가합니다. 예:

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • 별도의 테스트 모듈로 테스트 APK 모듈에 관한 지원을 추가하며 targetProjectPathtargetVariant 속성을 사용하여 APK 경로 및 타겟 변형을 설정합니다.

      참고: 테스트 APK 모듈은 제품 버전을 지원하지 않으며 단일 변형만 타겟팅할 수 있습니다. Jacoco도 아직 지원되지 않습니다.

    • 리소스를 병합하기 전에 리소스 이름 유효성 검사를 추가합니다.
    • 라이브러리 모듈의 AAR(Android 보관 파일) 패키지를 빌드할 때 매니페스트 병합 설정에서 자동 @{applicationId} 자리표시자를 제공하지 마세요. 보관 파일 라이브러리에 애플리케이션 ID를 포함하려면 대신 다른 자리표시자(예: @{libApplicationId})를 사용하고 그 값을 제공하세요.

    Gradle용 Android 플러그인 버전 1.2.0(2015년 4월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • Gradle로 실행하는 단위 테스트에 관한 지원을 개선합니다.
      • Gradle에서 직접 단위 테스트를 실행할 때 클래스 경로의 자바 스타일 리소스를 포함하는 지원을 추가합니다.
      • Android 보관 파일(AAR) 아티팩트의 단위 테스트 종속 항목 지원을 추가합니다.
      • unitTestVariants 속성 지원을 추가하여 단위 테스트 변형이 build.gradle 파일을 사용해 조작될 수 있습니다.
      • testOptions 아래에 unitTest.all 코드 블록을 추가하여 단위 테스트를 위한 맞춤설정된 작업을 구성합니다. 다음 샘플 코드는 이 새로운 옵션을 사용하여 단위 테스트 구성 설정을 추가하는 방법을 보여줍니다.
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • mockable-android.jar 파일의 패키징에서 enum 및 공개 인스턴스 필드의 처리를 해결합니다.
      • 라이브러리 프로젝트 작업 종속 항목을 해결해 변경 후 테스트 클래스를 다시 컴파일합니다.
    • testProguardFile 속성을 추가해 테스트 APK를 축소할 때 ProGuard 파일을 적용합니다.
    • Android 디버그 브리지 화면 녹화의 최대 녹화 시간을 설정하기 위해 adbOptions 코드 블록에 timeOut 속성을 추가합니다.
    • 280dpi 리소스 지원을 추가합니다.
    • 프로젝트를 평가하는 동안 성능이 개선됩니다.

    Gradle용 Android 플러그인 버전 1.1.3(2015년 3월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • ProGuard 오류를 트리거하는 테스트 앱의 중복된 종속성 문제를 해결합니다.
    • JDK 비교기 계약을 준수하지 않고 JDK 7 오류를 생성하는 비교기 구현을 해결합니다.

    Gradle용 Android 플러그인 버전 1.1.2(2015년 2월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • 단위 테스트를 위해 모방할 수 있는 JAR을 생성할 때 경로를 정규화합니다.
    • build.gradle 파일에서 archivesBaseName 설정을 해결합니다.
    • 라이브러리 테스트 애플리케이션을 빌드할 때 매니페스트 병합에서 해결되지 않은 자리표시자 오류를 해결합니다.

    Gradle용 Android 플러그인 버전 1.1.1(2015년 2월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • 빌드 변형을 수정해 Wear 앱을 패키징하는 변형만 Wear 전용 빌드 작업을 트리거합니다.
    • 종속 항목 관련 문제를 변경해 디버그 시간이 아니라 빌드 시간에 실패합니다. 이 동작으로 진단 작업(예: '종속 항목')을 실행하여 충돌을 해결할 수 있습니다.
    • android.getBootClasspath() 메서드를 수정해 값을 반환합니다.

    Gradle용 Android 플러그인 버전 1.1.0(2015년 2월)

    종속 항목:
    • Gradle 2.2.1 이상
    • 빌드 도구 21.1.1 이상
    일반 사항:
    • 새로운 단위 테스트 지원을 추가합니다.
      • 단위 테스트를 사용 설정해 인기 있는 모의 프레임워크(예: Mockito)와 호환되는 특수 버전의 android.jar 파일에서 로컬 JVM을 실행합니다.
      • 제품 버전을 사용할 때 새로운 테스트 작업 testDebug, testRelease, testMyFlavorDebug를 추가합니다.
      • 단위 테스트로 인식되는 새로운 소스 폴더를 추가합니다(예: src/test/java/, src/testDebug/java/, src/testMyFlavor/java/).
      • 테스트 전용 종속 항목을 선언하기 위해 build.gradle 파일에 새로운 구성을 추가했습니다(예: testCompile 'junit:junit:4.11', testMyFlavorCompile 'some:library:1.0').

        참고: 테스트 전용 종속 항목은 현재 Jack(자바 Android 컴파일러 키트)과 호환되지 않습니다.

      • android.testOptions.unitTests.returnDefaultValues 옵션을 추가하여 모의할 수 있는 android.jar 동작을 제어합니다.
    • 테스트 작업 이름에서 TestAndroidTest로 교체합니다. 예를 들어 assembleDebugTest 작업은 이제 assembleDebugAndroidTest 작업입니다. 단위 테스트 작업은 여전히 작업 이름이 UnitTest입니다(예: assembleDebugUnitTest).
    • ProGuard 구성 파일이 더 이상 테스트 APK에 적용되지 않도록 수정되었습니다. 압축이 사용 설정되면 ProGuard는 테스트 APK를 처리하고 기본 APK를 축소할 때 생성되는 매핑 파일만 적용합니다.
    • 종속 항목 관리를 업데이트했습니다.
      • providedpackage 범위를 사용하여 문제를 해결합니다.

        참고: 이 범위는 AAR(Android 보관 파일) 패키지와 호환되지 않으므로 AAR 패키지를 사용한 빌드가 실패합니다.

      • 종속 항목 해결을 수정해 테스트 중인 앱과 테스트 앱의 종속 항목을 비교합니다. 동일한 버전의 아티팩트가 두 앱에서 모두 발견되면 이 아티팩트는 테스트 앱에 포함되지 않으며 테스트 중인 앱으로만 패키징됩니다. 두 앱에서 버전이 다른 아티팩트가 발견되면 빌드가 실패합니다.
    • 리소스 병합에서 anyDpi 리소스 한정자를 추가로 지원합니다.
    • 많은 Android 모듈로 프로젝트의 평가 및 IDE 동기화 속도를 개선합니다.

    Gradle용 Android 플러그인 버전 1.0.1(2015년 1월)

    종속 항목:
    • Gradle 2.2.1에서 2.3.x까지

      참고: 이 버전의 Gradle용 Android 플러그인은 Gradle 2.4 이상과 호환되지 않습니다.

    • 빌드 도구 21.1.1 이상
    일반 사항:
    • extractReleaseAnnotations 모듈에 액세스할 때 Gradle 빌드 실패와 관련된 문제를 해결합니다. (문제 81638).
    • --no-optimize 설정을 Dalvik Executable(dex) 바이트 코드로 전달하는 Disable 문제를 해결합니다. (문제 82662)
    • targetSdkVersion이 16보다 작은 라이브러리를 가져올 때 발생하는 매니페스트 병합 도구 문제를 해결했습니다.
    • JDK 8과 함께 Android 스튜디오를 사용할 때 밀도 정렬 문제를 해결합니다.

    Gradle용 Android 플러그인 버전 1.0.0(2014년 12월)

    종속 항목:
    • Gradle 2.2.1에서 2.3.x까지

      참고: 이 버전의 Gradle용 Android 플러그인은 Gradle 2.4 이상과 호환되지 않습니다.

    • 빌드 도구 21.1.1 이상
    일반 사항:
    • 초기 플러그인 출시