티스토리 뷰
이 글의 원본은 Android Product Manager인 Adarsh Fernando에 의해 작성되었으며, 여기에서 확인할 수 있습니다.
해당 글은 개인적인 학습을 위해서 작성하였습니다. 혹시 잘못 번역된 곳을 발견 하시면 댓글로 남겨주시면 감사하겠습니다.
Android Studio팀은 Android Studio Bumblebee(2021.1.1) 🐝 그리고 Android Gradle Plugin(AGP) 7.1.0, 두 제품의 안정화(Stable) 버전 릴리스로 떠들썩했습니다. 이 두 제품은 안드로이드 공식 IDE와 빌드 시스템의 최신 버전입니다. 개발자들이 업무를 할 때 일상적으로 하는 빌드(Build)와 배포(Deploy), 프로파일링(Profiling)과 검사(Inspection) 그리고 디자인에 대해 광범위하게 개선을 했습니다.
주요한 추가 사항으로는 Android Studio와 CI 서버에서 테스트 실행환경 통합 ✅, 와이파이를 통한 편리한 ADB 연결📲, 앱의 버벅거림의 원인을 알아내고 분석하는 데 도움이 되는 향상된 프로파일러(Profiler) 도구 🕵️, 애니메이션 프리뷰를 볼 수 있는 새로운 방법🎥, 앱을 기기에 설치하지 않고 UI 동작을 알 수 있는 기능이 있습니다.
항상 그러했듯이, 프리뷰 버전 유저의 피드백이 없었다면, 이번 릴리즈는 불가능했을것입니다. 이번 안정화(Stable) 버전에서의 주요한 새로운 기능을 알기 위해서는 이 글을 읽거나, 아래 비디오를 시청 해 주세요. 만약 새로운 기능을 사용할 준비가 되었고 직접 살펴보고 싶다면, 공식 웹사이트로 이동하여 안드로이드 스튜디오 범블비(2021.1.1)를 다운로드 해 주세요.
Android Studio Bumblebee(2021.1.1)에 추가된 기능
아래에 Android Studio Bumblebee(2021.1.1)의 모든 새로운 기능들을 세 가지 카테고리로 나눠보았습니다.
빌드(Build) 및 배포(Deploy)
- 새로운 디바이스 매니저(New Device Manager): 범블비에 추가된 Device Manager를 통해서, 테스트를 하기 위한 가상 디바이스와 물리 디바이스(실 단말기)를 더 쉽게 관리할 수 있습니다. 메인 메뉴 바에서 View > Tool Windows > Device Manager를 통해 이용 해 보세요. Virtual 탭에서는, 새로운 가상 디바이스를 생성하고, 디바이스 상세정보를 볼 수 있으며, 디바이스를 삭제 할 수 있는 등, 기존에 AVD Manager를 이용해 했던 것들을 할 수 있습니다. Physical 탭에서는, 와이파이를 통해 빠르게 실단말기와 ADB 연결을 할 수 있고, 실단말기들의 상세정보를 볼 수 있으며, Device File Explorer를 통해서 각 디바이스의 파일시스템을 빠르게 확인할 수 있습니다. 새로운 Device Manager에 대해서 좀 더 알기 위해서, 릴리즈 노트에서 확인 해 주세요.
- 와이파이를 통한 ADB 연결: 안드로이드 11 이상의 단말에서 와이파이를 통해 ADB를 쉽게 연결할 수 있게 제공하여, 단말에 쉽게 앱을 설치 및 디버깅을 할 수 있습니다. 단말기에서 무선 디버깅(debugging over Wi-Fi)을 활성화 한 뒤, 새 Device Manager의 Physical 탭에 있는 Pair using Wi-Fi를 선택하여 pairing wizard를 엽니다. 그 후 제공되는 단계를 따라하기만 하면, 같은 네트워크에 있는 단말에 연결할 수 있습니다. 더 알아보기
- Android Studio 내에서 Instrumented Test 실행 시 Gradle 사용: 테스트를 실행했는데 Android Studio와 CI에서의 실행결과가 달랐던 적이 있으신가요? 이러한 이슈는 생산성을 떨어뜨리는 결과를 가져옵니다. 이 이슈를 해결하기 위해서, Android Studio Bumblebee부터 사용되는 Android Gradle plugin(AGP) 7.1.0에서 instrument 테스트 실행 시 새로운 테스트 환경을 기본 환경으로 적용하여, 통합된 테스트 실행환경에서 테스트를 실행하게 하였습니다. 이와 비슷한 개선이 Android Studio Arctic Fox에서도 적용되었었으며, Arctic Fox에서는 유닛테스트 실행 시 Gradle을 기본으로 동작하게 하였었습니다. 그때의 개선사항과 비슷하게, 이번 개선사항을 적용하기 위해서 앱 개발자가 코드 작성 및 테스트 실행 방법을 변경 할 필요 없이 적용됩니다.
- Android Gradle Plugin Upgrade Assistant를 통해 Gradle Plugin 업그레이드 시 API 사용건도 업데이트: Android Studio 4.2에서추가 되었던 AGP Upgrade Assistant를 통해 프로젝트의 AGP 버전을 최신 버전으로 업데이트 할 때 편리하게 할 수 있도록 하였습니다. Arctic Fox에서는 새로운 UI를 적용하여 원하는 버전과 스텝을 선택할 수 있게 개선되었었습니다. Bumblebee에서는, Upgrade Assistant를 통해 deprecated된 API가 제거되기 전에 사용을 막는 것을 도와주고, DSL을 업데이트를 검토하고 제안합니다. 더 자세한 내용은 Android Gradle Plugin DSL/API 마이그레이션 타임라인을 참고 해 주세요.
- 새로운 프로젝트 생성 시에 Non-transitive R 클래스 적용: Android Studio Arctic Fox에서는 non-transitive R 클래스로 리팩토링 할 수 있는 기능이 추가되었었습니다. non-transitive R 클래스를 사용함으로써, 멀티 모듈 어플리케이션에서 더 빠른 빌드속도를 낼 수 있습니다. Bumblebee에서 프로젝트를 새로 생성할 때, IDE에서 non-transitive R 클래스를 사용하도록 기본적으로 설정됩니다. 이 설정 적용은 성능 개선에 도움을 줄 수 있으나, 다음과 같은 주의가 필요합니다. 기존에눈 R 클래스를 참조 할 때에는 리소스가 명시된 module의 parent module의 캐피지네임을 참조할 수 있었지만, R클래스가 선언된 패키지 네임을 명시하여 사용하여야 합니다. 더 자세한 정보는 non-transitive R 클래스 사용을 참고하세요.
- Emulator tool window 기본 적용: Android Studio 내에 Emulator tool window가 Android Studio 내에서 실행이 되고, 가상 Android 기기에 설치 및 조작 할 수 있었게 소개 됨으로써, IDE 내에서 완전히 머무르면서 개발을 할 수 있게 Android Studio 4.1부터 지원을 했었습니다. 이번에는 확장 컨트롤과 가상머신의 스냅샷 관리의 개선이 있었습니다. 더 자세한 정보는, Android Studio에서 Android Emulator실행하기를 참고하세요.
- Apple Silicon 지원 업데이트 - Android Studio Arctic Fox와 Android Emulator의 Apple Silicon (arm64)를 사용하는 macOS에 대한 지원은 작년부터 해왔었습니다. 하지만, 이번에는 Android SDK platform tools v32.0.0(ADB와 fastboot 포함), build tools v32.1.0(aapt 포함)에서는 universal binary를 지원함으로써, 더 이상 Rosetta 없이 안드로이드 개발자 툴을 사용할 수 있게 되었습니다. Apple Silicon을 사용하는 개발자들의 커뮤니티 피드백에 의해서 뛰어난 성능 향상을 이룰 수 있었습니다. 이 릴리즈 노트를 참고하세요.
Profile(분석) 그리고 Inspect(조사)
- 프로파일러(profiler)에 Jank detection track(버벅임 분석 트랙) 추가: Android 11(API level 30) 이상의 디바이스를 profiling(분석)할 때, CPU 프로파일러(profiler, 분석기)에 각각의 프레임의 라이프사이클을 단계로 나누어 보여주는 Frame Lifecycle이 추가되었으며, 각 단계는 다음과 같습니다. Application, Wait for GPU, Composition 그리고 Frames on display. 각각의 트랙은 프레임 번호와 색상코드로 된 사각형으로 라벨링 되어서, 더 쉽게 시각적으로 각각의 프레임의 라이프사이클을 확인할 수 있으며, 기존에 표시되던 Vsync 이벤트와 비교하기위한 가이드도 켜고 끌 수 있습니다. 이 데이터를 이용하여 앱에서 버벅임의 원인을 찾을 수 있습니다. Analaysis 패널에서는 Frames 탭이 추가되었습니다. Frames 탭에는 모든 프레임에 대한 랜더링 정보들이 나열되어 있습니다. 더 자세한 정보는 UI 버벅임 분석을 참고하세요.
- Studio Profiler 내에서 프로파일 가능한 앱 프로파일링 제공: 앱을 분석할 때, 사용자들이 설치할 앱과 가장 유사하게 조합하여 정확한 데이터를 생성하는 것이 중요합니다. 이를 위해서, <profileable> 프로퍼티를 아래와 같이 앱 manifest에 추가하여 debug가 가능한 상태가 아니어도 프로파일 하도록 제공해줍니다.
<profileable android:shell="true"/>
profileable은 Android 10에 manifest에 추가할 수 있도록 추가 되었었으며, 이제 CPU와 메모리 프로파일링에도 사용될 수 있습니다. debuggable 대신 profileable을 사용함으로써 얻는 가장 큰 장점은, 성능 측정 시 오버해드(성능측정으로 인해 추가적으로 드는 연산)을 줄일 수 있습니다. 하지만, Event timeline, API initiated CPU Profiling, heap dumps, live location recordings 등 몇몇 프로파일링 기능은 profileable을 사용한 빌드에서는 불가능합니다. 더 자세한 정보는 Profileable 어플리케이션을 참고하세요. - Job, Alarm 그리고 Wakelock 조사: Background Task Inspector에 Job, Alarm, Wakelock들을 조사하는 기능이 추가되었습니다. Worker를 조사하는 것처럼, 백그라운드 작업들의 스케쥴이 어떻게 구성되어 있고, 각각의 작업의 자세한 정보도 실시간으로 확인할 수 있습니다. 추가로 Worker를 조사할 때, 예정된 Worker들의 Job들을 추적하고 조사할 수 있습니다. 전 IDE 버전에서 Energy Profiler를 사용했었다면, 메뉴바의 View > Tool Windows > App Inspection 에서 Background Task Inspector를 통해서 Job, Alarm, Wakelocks들을 조사할 수 있습니다.
- 네트워크 조사: Network Profiler가 App Inspection 툴 윈도우로 옮겨짐으로써, 앱의 네트워크를 조사할 때 좀 더 가볍게 조사할 수 있게 되었습니다. API level 26 이상의 디바이스에서 debug가 가능한 앱은 Network Profiler를 사용할 수 있습니다. 새로운 인스펙터를 사용하기 위해서, 메뉴바에서 View > Tool Windows > App Inspection 에서 Network Inspector를 선택하세요. 더 자세한 정보는, Network Inspector를 통한 네트워크 트래픽 확인을 참고하세요.
- Layout Inspector 스냅샷 캡쳐: 앱의 레이아웃 계층(layout hierachy)의 스냅샷을 캡쳐하여 저장, 공유하거나 나중에 조사할 때 사용할 수 있습니다. 스냅샷을 하면 Layout Inspector를 사용할 때 일반적으로 보여지는 데이터를 포함하여 레이아웃의 자세한 3D 렌더링 정보, 뷰의 컴포넌트 트리, Compose, hybrid 레이아웃, UI의 디테일한 속성들까지도 캡쳐합니다. 실시간으로 실행중인 앱의 레이아웃을 조사할 때, Layout Inspetor 툴바에 있는 Export snapshot을 클릭하여 *.li 확장자로 스냅샷을 저장하세요. 메인 메뉴바의 File > Open에서 *.li 파일을 열게 되면, Layout Inspector 스냅샷을 로드할 수 있습니다. 스냅샷은 Editor 윈도우에 표시되며, 현재 실행중인 앱과 쉽게 비교할 수 있습니다. 더 자세한 정보는 Capture layout hierarchy snapshots를 참고 해 주세요.
- Layout Inspector에서 Compose semantics 지원: (Compose Semantics란 것을 layout inspector에서 지원하지 않았는데, 이제 지원한다는 내용입니다. Compose를 아직 제대로 공부 해 보지 않았기에, 해당 내용은 번역하지 않았습니다.) In Compose, Semantics describe your UI in an alternative manner that is understandable for Accessibility services and for the Testing framework. In Android Studio Bumblebee, you can now use the Layout Inspector to inspect semantic information in your Compose layouts. When selecting a Compose node, use the Attributes window to check whether it declares semantic information directly, merges semantics from its children, or both. To quickly identify which nodes include semantics, either declared or merged, use select the View options dropdown in the Component Tree window and select Highlight Semantics Layers.
디자인
- 상호작용 미리보기(Interactive Preview): Android Studio Arctic Fox에서는 Editor의 Design/Split 윈도우에서 composable function의 동작을 정적으로 미리보기 할 수 있었다. Bumblebee에서는 미리보기에서 Compose 레이아웃과 상호작용 할 수 있게 기능을 확장했으며, 앱 전체를 빌드하여 디바이스에 설치하여 실행하지 않고도 동작을 확인할 수 있다. 시작 해 보기 위해서, 미리보기가 가능한 compose 함수로 이동 한 뒤, Design / Split 윈도우의 Start Interactive Mode를 선택하면 된다. 더 자세한 정보는 Interactive mode에 나와있다.
- 움직이는 Vector Drawable 미리보기: Preview 윈도우에서 vector drawable도 지원한다. 움직임이 없는 drawable을 보여줄 때에는, preview 윈도우에서 background를 None, White, Black, Checkedered로 설정하여 각 상태에서 drawable을 볼 수 있다. 움직이는 Drawable 역시 background를 설정하는 옵션을 제공하며, 속도도 설정할 수 있어서, 앱에 추가하기 전에 에니메이션을 테스트 해 볼 수 있다. 더 자세히 보기 위해서는 Animated Vector Drwaables(AVD) preview를 참고 바란다.
- 디자인 툴들의 Device Picker 업데이트: 다양한 종류의 안드로이드 기기를 위한 디자인을 쉽게 하기 위해서, Layout Editor, Layout Validation과 같은 디자인 툴 윈도우에 Device Picker를 업데이트 했습니다. 이를 통해 여러 폼팩터 및 표준 기기들, 그리고 주로 사용되는 사이즈의 기기들을 설정할 수 있습니다. 폰, 테블릿부터 웨어러블 디바이스와 Android TV까지, 이제 실제로 많이 사용되는 디바이스의 사이즈에 맞게 미리보기, 검증 및 레이아웃 수정을 쉽게 할 수 있습니다. 좀 더 자세히 알아보려면, Change the preview appearance를 참고하세요.
요약하면, Android Studio Bumblebee(2021.1.1)에서는 아래와 같은 새로운 기능과 개선들이 있었습니다.
빌드 및 배포
- Android Studio 내에서 Instrumented Test 실행 시 Gradle 사용
- Android Gradle Plugin Upgrade Assistant를 통해 Gradle Plugin 업데이트 시 API 사용건도 업데이트
- 새로운 프로젝트 생성 시 Non-transitive R 클래스 적용
- 새로운 디바이스 매니저
- 와이파이를 통한 ADB 연결
- Emulator tool window 기본 적용
- Apple Silicon 지원 업데이트
Profile 그리고 Inspect
- 프로파일러(profiler)에 버벅임 분석 트랙(Jank detection track)
- Studio Profiler 내에서 프로파일 가능한 앱 프로파일링 제공
- Background task Inspector에 Job, Alarm 그리고 Wakelock 추가
- Layout Inspector 스냅샷 캡쳐
- Layout Inspector에 Compose semantic 제공
디자인
- 상호작용 미리보기
- 움직이는 Vector Drawable 미리보기
- 디자인 툴들의 Device picker 업데이트
'Android' 카테고리의 다른 글
Target version 31로 올린 후 IllegalArgumentException 오류 수정 (0) | 2021.12.25 |
---|---|
mail.providers.Account.b() NullPointerException 오류 검토 과정 (0) | 2021.12.24 |
Droid Knights 2021 Track2 요약 (0) | 2021.10.02 |
Droid Knights 2021 Track1 요약 (0) | 2021.09.26 |
aab를 내부 앱 공유를 통해서 테스트앱을 전달 해 보자 (0) | 2021.09.06 |
- Total
- Today
- Yesterday
- target version 31
- 범블비 번역
- Android Studio bumblebee
- 내부 앱 공유
- bundletool
- 안드로이드 테마
- 영세율 채널이름
- aab 테스트
- 유튜버 영세율
- 안드로이드 P
- 안드로이드 스튜디오 범블비
- cleartext
- Android
- ListView
- Xamarin
- 영세율 채널주소
- aab qa
- 앱개발자 영세율
- 자마린
- gmail 이슈
- 안드로이드
- 안드로이드 스타일
- 드로이드 나이츠
- Windows SDK version 8.1
- Flutter
- Droid Knights
- Account.b
- 플루터
- 블로거 영세율
- 31 업데이트 후 오류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |