What’s New in Android Development Tools

안드로이드 스튜디오3.5는 IDE의 기본 기능과 흐름을 견고하게 만드는데 집중하기 위해  Project Marble을 시작했고 3.5버전에서는 System health, Feature polish, bugs에 초점을 맞추었다고 합니다.

System Health

앞서 말한 시스템 상태에 초점을 맞춰 개선한 내용을 소개하겠습니다.

Memory

안드로이드 스튜디오를 쓰다보면 시간이 지남에 따라 느려지는게 느껴지셨을 겁니다. 바로 메모리 누수 때문입니다. Project Marble의 일환으로 33건이 넘는 메모리 누출 문제를 해결했다고 합니다. Android Studio 3.5부터는 IDE의 메모리가 부족할 때 힙의 메모리 와 힙내의 주요객체 크기에 대해 몇가지 높은 수준의 통계로 캡처합니다. 이 데이터로 IDE는 두가지 작업을 수행할 수 있습니다. 바로
더 나은 메모리 설정과 메모리에 대한 심층 분석입니다.

자동 메모리 권장 설정

기본적으로 안드로이드 스튜디오의 최대 힙 메모리 크기는 1.2GB입니다. 큰 프로젝트를 가진 사람들에게는 충분하지 않을 수 있습니다. 대용량 RAM이있는 컴퓨터를 사용하더라도 IDE는이 값을 초과하지 않습니다. Android Studio 3.5를 사용하면 IDE가 더 높은 RAM 용량을 가진 컴퓨터에서 더 많은 RAM을 필요로 할 때 이를 인식하고 알림에서 메모리 힙 크기를 늘리라는 알림을 받습니다. 또는Appearance & Behavior → Memory Settings 아래의 new settings panel에서 조정할 수 있습니다 .

힙 메모리 분석

Android Studio 3.5에서는 IDE가 개인 데이터에 대해 로컬로 위생 처리하고 분석하고 보고서를 만드는 메모리 힙 덤프 ( Help → Analyze Memory Use ) 를 트리거 할 수 있습니다 이 메모리 사용량 보고서를 Android Studio 팀과 공유하여 성능 문제를 해결할 수 있습니다.

Exception

예외 프로세스 백엔드 파이프 라인을 개선했습니다. 이제 Opt-In 데이터를 사용하여 이전에 일반적인 예외 사항에 대한 신호를 받았으므로 이전보다 카나리아 릴리스 프로세스의 초기 단계에서 문제의 우선 순위를 지정하고 수정할 수 있습니다. 또한 분석 및 옵트인 오류 보고서가  효과적이기 때문에 예외를 묻는 시간을 줄였습니다. 결과적으로 IDE의 하단 상태 표시 줄에 깜박이는 빨간색 예외 보고서 아이콘이 자주 표시되지 않습니다.

User Interface Freeze

Android Studio 3.5에서는 기본 Intellij 플랫폼의 인프라를 확장하여 잠시 이상 지속되는 UI 스레드 중지를 측정합니다. 예를 들어 프로젝트 마블에서는 흔히 XML 코드 편집이 버벅인다는 것을 인지했고, 그에 따라 XML 타이핑을 최적화했으며 Android Studio 3.5에서 퍼포먼스가 많이 개선되었습니다. 

Android Studio 3.4에서 버벅이는 느낌

Android Studio 3.5에서 개선된 xml 코드 편집

Build Speed

대규모 프로젝트를 하는 개발자의 경우 가장 큰 관심사중에 하나가 빌드 속도입니다. 프로젝트 마블에서 KAPT 같은 애노테이션 프로세서에 증분빌드를 지원하여 속도를 향상시켰습니다. Google I/O 스케쥴 앱에서는 증분빌드 옵션을 추가하여 빌드한 결과 9.1초에서 3.6초로 성능이 60%정도 향상되었다고 합니다.

IDE Speed

과거에 개발자가 해왔던 일부 팁은 성능 향상을 위해 Android NDK 지원과 같은 Android Studio 플러그인을 끄는 것입니다. 플러그인을 비활성화하여 불필요한 메뉴나 옵션을 제거하는 데는 아무런 문제가 없지만 전반적인 IDE 속도에 영향을 미치는 Android NDK 지원에 대한 불필요한 성능 핫스팟을 제거했습니다.

Lint Code Analysys

Android Lint는 일반적인 프로그래밍 실수를 식별하는 데 도움이되는 Android Studio의 코드 분석 프레임워크입니다. 그러나 Lint가 너무 느립니다. 특히 대규모 프로젝트에서 배치 분석 모드로 실행하는 경우에서 몇 가지 큰 메모리 누수를 발견하고 수정하여 Lint 성능에서 대략 2배의 속도 향상을 이끌어 냈습니다. 

I/O File Access for Windows

Android Studio의 많은 사용자는 Microsoft Windows를 사용합니다. 시간이 지남에 따라이 플랫폼을 사용하는 사용자로부터 다양한 시간과 설치 속도가 점점 느려지고 있다는 보고가있었습니다. Project Marble에서 문제를 조사한 결과, 최근 안티 바이러스 프로그램에는 Android Studio 빌드 및 설치 디렉토리가 활성 검색 대상으로 포함되어 있음을 알게되었습니다. 이러한 폴더에는 시간이 지남에 따라 생성되고 제거되는 많은 작은 파일이 있기 때문에 I/O 및 CPU에는 부분적으로 리소스가 사용되어 Android Studio의 전체 빌드 / 동기화 성능에 영향을 주었습니다.

Google 내부 데이터, 2.2GHz 쿼드 코어 Intel Core i7, April 2019

System Health Check

Android Studio 3.5부터는 IDE가 프로젝트 빌드 디렉토리를 포함한, 속도 저하의 영향을 받을 수있는 다양한 디렉토리를 검사하고 바이러스 차단 디렉토리 목록과 비교합니다.

에뮬레이터 CPU 사용

많은 앱 개발자가 지난 몇 년 동안 극적으로 향상된 성능을 보인 빠르고 반응이 빠른 에뮬레이터를 즐기고 있습니다. 그러나 안드로이드 에뮬레이터는 과도한 CPU 사이클을 소비하고 에뮬레이터가 백그라운드에서 유휴 상태 일 때도 노트북의 냉각 팬을 작동시키는 것으로 나타났습니다. 조사 및 측정 결과 Google Play 서비스 및 관련 서비스는 기본적으로 배터리모드가 아닌 AC 충전모드로 설정 되었기 때문에 백그라운드에서 실행되는것을 확인되었습니다. 기본값을 배터리모드 바꿨고 백그라운드 CPU 사용은 3배 이상 감소했습니다. 이 변경은 Project Marble에서 Android 에뮬레이터에 적용한 많은 최적화 중 하나입니다.

Feature Polish

Apply Changes

앱을 다시 시작하지 않고도 코드를 신속하게 편집하고 변경 사항을 볼 수 있다는 것은 앱 개발에 유용합니다. 2년 전 인스턴트 런 (Instant Run) 기능은 이 흐름을 가능하게 하려는 시도였지만 기대에 미치지 못했습니다. Project Marble 기간동안 Android Studio 3.5의 변경 적용 (Apply Changes)이라는 실용적인 접근 방식을 바탕으로 다시 구조화하고 구현했습니다. 변경 적용은 Android Oreo 이상의 플랫폼 별 API를 사용하여 안정적이고 일관된 동작을 보장합니다. 인스턴트런과 달리 Apply Changes는 APK를 수정하지 않습니다. 변경 사항을 지원하기 위해 배포 속도를 높이기 위해 전체 배포 파이프 라인을 다시 설계했으며보다 효율적인 경험을 위해 실행 및 배포 도구 모음 버튼(run and deployment toolbar buttons)을 수정했습니다.

Gradle sync

최근에 Android Studio의 성가신 문제는 프로젝트를 다시 열 때 프로젝트가 예기치 않게 앱 코드에서 레드 심볼을 트리거링 하는것입니다. Gradle 빌드 시스템은 홈 디렉토리에있는 모든 종속성의 캐시를 유지하므로 IDE가 새로운 아티팩트를 다시 다운로드하지 않고도 빠르게 동기화 할 수 있습니다. 레드 심볼이 나타나는 최근의 많은 사건의 근본 원인은 최근의 Gradle 변경에서 하드 드라이브 공간을 절약하기 위해 주기적으로 삭제된다는 것입니다. IDE는 불일치를 인식하지 못했기 때문에 결과적으로 누락된 종속성에 대한 레드심볼을 생성했습니다. Android Studio 3.5부터는 이 상태를 확인하는 조건부 로직이 있습니다.

Project Upgrades

현재의 안드로이드 스튜디오를 업그레이드하는 절차가 원할하지 못하기 때문에 Android Studio 3.5에서는 출력창, 팝업 및 대화상자의 사용자 환경을 업데이트하여 실제로 업그레이드해야할 시기를 명확히하고 더 많은 동기화 및 빌드 업그레이드 오류를 보다 효과적으로 처리했습니다.

Layout Editor

사용자가 레이아웃 편집기와 사용자 입력을 기반으로 연구 한 결과, 특히 ConstraintLayout을 사용하여 작업 할 때 성능 및 오류 발생을 포함한 여러 가지 사용성 문제가 있었습니다. 레이아웃 편집기의 일반적인 사용성을 해결하기 위해 제약 조건 선택 및 삭제에서 장치 미리보기 크기 조정에 이르기까지 광범위한 상호 작용을 개선했습니다.

Android 3.4 레이아웃 편집기

Android 3.5 레이아웃 편집기

Databinding

퍼포먼스적인 측면에서 볼 때 XML 파일에서 데이터 바인딩 표현식을 작성하면 코드 편집기가 심각하게 버벅이는 것으로 나타났습니다. 3.5에서는 코드 완성, 탐색 및 리팩터링이 향상되었습니다.

App Deployment Flow

배포하려는 장치를 쉽게보고 변경할 수 있는 새로운 드롭다운을 추가하고 여러 장치에 배포 할 새 메뉴 항목을 추가하여 배포 흐름을 간소화했습니다.

C++ Improvements

Project Marble에서는 C++프로젝트 지원에도 중점을 두었습니다. IDE가 이제 병렬 닌자 대상을 호출하기 때문에 대형 프로젝트의 경우 CMake 빌드가 최대 25 % 더 빠릅니다. 또한 ABI 대상을 개별적으로 지정할 수있는 향상된 단일 빌드 변형 사용자 인터페이스 패널이 있습니다. 그리고 마지막으로 Android Studio 3.5를 사용하면 build.gradle 파일에서 여러 버전의 Android NDK를 함께 사용할 수 있습니다. 이렇게하면 NDK 버전과 Android gradle 플러그인간의 재현성 있는 빌드 및 비 호환성을 완화 할 수 있습니다.

ABI의 단일 변형 선택

IntelliJ Platform Update

이번 출시된 Android Studio에는 2019.1 Intellij 플랫폼 릴리스 의 기능 및 품질 향상 기능이 포함되어 있습니다. 2019.1 Intellij 업데이트에는 사용자 지정 테마에서 향상된 버전 제어 시스템 통합에 이르기까지 다양한 개선 사항이 있습니다.

Conditional Delivery for Dynamic Feature Support

Android Studio 3.5는 앱 번들의 조건부 전송 기능을 추가하여 앱 번들 기능 지원을 향상시킵니다. Conditional Delivery를 사용하면 앱 설치 중에 다이나믹 피처 모듈에 대한 특정 장치 구성 요구 사항을 자동으로 다운로드 하도록 설정할 수 있습니다. OpenGL 버전, 증강현실 지원 또는 API 수준 및 사용자 국가에 따라 조건을 설정하는 등의 하드웨어 기능을 기반으로 다이나믹 딜리버리를 설정할 수 있습니다.

다이나믹 딜리버리를 위한 모듈 선택

Emulator Foldables & Pixel Device Support

Pixel 3a 및 Pixel 3a XL 용 Android Emulator 스킨이 포함되어 있습니다. 또한 Android Studio는 폴더블 Android 에뮬레이터를 만들 수 있도록 지원합니다.

폴더블 에뮬레이터의 지원

Chrome OS Support

Android Studio 3.5는 이제 하이엔드 x86 기반 크롬북의 Chrome OS 75 이상에서 공식적으로 지원됩니다. Project Marble에서 몇 가지 사용성 문제를 해결했으며, 이제 Android Studio용 설치 프로그램을 사용하고 외부 USB 연결 Android 장치에 대한 앱 배포를 지원합니다. 

 

TL;DR

시스템 상태

  • 메모리 설정 개선
  • 메모리 사용 보고서 
  • 예외 개선
  • 사용자 인터페이스 프리징 개선
  • 빌드 속도 개선
  • IDE 속도 개선
  • Lint 코드 분석 개선
  • I/O 파일 액세스 개선
  • 에뮬레이터 CPU 사용량 개선

Feature Polish

  • Apply Changes
  • Gradle Sync 개선
  • 프로젝트 업그레이드 개선
  • 레이아웃 편집기 개선
  • 데이터 바인딩 개선
  • 앱 배포 절차 개선
  • C ++ 개선
  • Intellij 2019.1 플랫폼 업데이트
  • 다이나믹 피처를 위한 조건부 다이나믹 딜리버리
  • 에뮬레이터의 Foldables 및 픽셀 장치 지원
  • Chrome OS 지원
카테고리: 미분류

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.