Android 스튜디오 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 구성요소에 필요한 종속 항목만 빠르게 추가할 수 있습니다.