Android 스튜디오 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 문서를 참고하세요.