작년 출시한 Android 3.0에는 Performance Profiler, Kotlin 언어 지원, Adaptive Icon, PlayStore가 포함된 에뮬레이터 및 20개의 새로운 기능이 포함되었습니다
Android Studio 3.1은 성능과 품질에 초첨을 맞추었고. 800개이상의 버그와 안정성 문제를 해결했습니다.
Sugar가 포함된 D8을 사용할때 캐싱없이 Full Build에서 빌드 속도가 60%이상 향상되었습니다.
SQL 코드 편집 지원을 포함하여 코드 완성과 프로젝트 탐색이 가능합니다.
코틀린을 Android Studio 내부 플랫폼에서 first class 언어로 발표했습니다. Android Studio 3.1에서 Kotlin 검사를 IDE뿐만아니라 Command line을 통해서도 할 수 있습니다.
C++ CPU Profiler가 추가되었습니다. C++ 코드가 성능에 미치는 영향을 파악할 수 있습니다.
애플리케이션에 멀티 스레드인 네트워크 스레드를 가지고 있음을 알고 있습니다. 각 스레드를 보고 성능을 확인할 수 있습니다.
각 버전의 Android Studio에는 최신 버전의 IntelliJ가 포함되어있습니다.
Emulator를 빠른 부팅을 가능하게 했습니다. 그로인해 에뮬레이터를 3초이내로 시작할 수 있습니다.
Android Studio 3.2를 사용하면 Android P 개발자 Preview의 모든 최신 Android API를 테스트하고 검증할 수 있습니다.
Android App Bundle이라는 새로운 포맷을 구축할 수 있으며, Google Play를 통하여 사용자에게 맞춤 설정된 APK를 배포할 수 있습니다.
Android Jetpack
은 Android 앱을 빠르고 쉽게 확장할 수 있도록 도와주는 라이브러리, 개발자 도구 및 가이드라인 모음입니다.
오른쪽에 새로운 window 에서는 새로운 기능 및 변경사항을 강조합니다.
App Bundle의 핵심은 PlayStore에서 칩 아키텍쳐, 화면 크기, Locale의 조합에 대해 다양한 버전의 앱을 만들 수 있도록 앱을 패키지징하고 업로드할 수 있다는 것입니다. 다운로드 사이즈도 더 작아집니다.
Build → Generate Signed Bundle / APK
메뉴를 통해 사용이 가능합니다.
앱 번들을 생성하는 새로운 옵션이 있습니다
Google Play 에서 App Bundle을 사용하려면 암호화 키를 줘야합니다.
번들로 내보내지 않았으며, 저장된 키의 위치를 확인하여 업로드할 수 있습니다.
APK Analyzer 를 통해 Bundle 파일을 확인할 수 있습니다. 샘플의 Article Composer 라는 부분은 Dynamic Feature
모듈의 정보입니다.
New → New Module → Dynamic Feature Module
을 통해 생성할 수 있습니다.
apply plugin: 'com.android.dynamic-feature'
gradle 파일을 확인하면 Dynamic Features 를 위해 새로운 Gradle 플러그인이 적용되어 있습니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.example.article_composer">
<dist:module
dist:onDemand="true"
dist:title="@string/title_article_composer">
<dist:fusing include="true" />
</dist:module>
</manifest>
onDemand로 상태로 표시할 수 있으며, PlayStore에서 이 기능을 지원하지 않는 구형 단말의 APK에 이 모듈을 포함시킬지 결정할 수 있습니다. 메인 앱 모듈에는 이러한 Dynamic Features 에 연결됩니다.
// app.gradle
android {
dynamicFeatures = [":article_composer"]
}
다운로드 및 설치에는 Play core 라이브러리를 사용해야합니다.
Run/Config Dialog에 추가된 기능으로 로컬에서 테스트할 때 포함할 Features를 선택할 수 있습니다.
여러 프로파일링 세션을 기록하고 나서 결과를 비교할 수 있습니다.
System Trace로 나타난systrace
는 강력한 프로파일러입니다. 커널에서 데이터를 확인하기 때문에 다른 CPU에서 일어나는일을 알 수 있습니다
지금까지 Record a method trace
를 클릭하고 하고 확인하려고 했지만, 코드에서 트리거를 할 수 있습니다. 3.2에서는 디버그 Method를 호출할 수 있습니다. 표준 SDK Method인 android.os.Debug
입니다.
// 디버그 시작
Debug.startMethodTracing("dmtrace.trace");
// 디버그 종료
Debug.stopMethodTracing();
이를 통해 무엇이 잘못되었는지 알 수 있습니다.
새로운 큰 특징은 JNI 레퍼런스를 보유줄 수 있게 되었고, JNI 레퍼런스 allocation trace 추적이다
Energy Profiler 는 배터리 수명이 어떻게 되는지 알 수 있습니다. 실제 CPU 사용량, 네트워크, 위치요청, Wake Locks 등을 사용하는지 알려줍니다. 바닥에 빨간색 막대는 Wake Lock 잠금 장치가 작동한다는 것을 보여주고 있습니다.
에뮬레이터가 동작하는 동안 스냅샷 생성을 할 수 있으며, 생성된 스냅샷을 통해 바로 그 상태가 될 수 있습니다. 재생버튼을 누르면 스냅샷을 기록하는데 15초가 소요됩니다.
오디오와 함께 비디오 녹화를 할 수 있습니다. 카메라도 향상했습니다.
카메라 선택시 3D Scene에서 움직여서 확인 가능합니다. AR 앱을 만들때 중요합니다. IDE에서 AR에 대한 지원이 제공합니다.
GLSK 파일과 Google Sceneform Tools 플러그인을 통해 3D 모델을 미리 볼 수 있습니다. Sceneform Asset을 불러올 수 있습니다. 실제로 이 모델이 무엇을 하는지 확인할 수 있습니다.
android.support 의 v4, v7이 잘못된 버전 번호입니다. legacy 정리를 위해 AndroidX
로 다시 패키징하고 있습니다.
기존 namespace 를 새로운 namespace에 있는 라이브러리를 자동으로 리팩토링해주는 도구를 제공합니다. 이는 XML, Gradle 파일에도 적용됩니다. group ID와 artifact ID를 리패키징화합니다.
Refactor → Refactor to AndroidX
를 통해 리팩토링 가능합니다.
// 기존
com.android.support:appcompat-v7:27.1.1
com.android.support:design:27.1.1
com.android.support:constraint:constraint-layout:1.1.0
com.androud.support.test:runner:1.0.2
com.androud.support.test.espresso:espresso-core:3.0.2
// Refactoring
androidx.appcompat:appcompat:1.0.0-alpha1
com.google.android.material:material:1.0.0-alpha1
androidx.constraintlayout:constraintlayout:1.1.0
androidx.test:runner:1.1.0-alpha1
androidx.test.espresso:espresso-core:3.1.0-alpha1
현재 Canary 14 / Canary 15에는 몇몇 버그가 있습니다.
Navigation Library 에서는 처음부터 Navigation Library용 앱을 설계해야합니다.
화면을 구성하는 레이아웃을 나열하고, 각 화면을 이동할 곳을 화살표로 연결하는 것으로, Navigator 상으로 이동되는 것이 결정됩니다.
그리고, 각 XML의 레이아웃에서 NavHostFragment 넣으면, 런타임에 Dispatching 을 수행합니다. 그런 다음 navigation resource file에 저장합니다.
<fragment
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/nav_graph"
app:defaultNavHost="true" />
추가적으로 Navigation Editor를 통해서 애니메이션 처리도 가능합니다.
Deep Link
Navigation Editor | Add Deep Link Dialog |
---|---|
Deep Link 추가시 manifest에 추가되는것을 확인할 수 있습니다.
그리고, Merged Manifest에 실제로 Deep Link로 추가한 필터 정보가 생성됩니다.
샘플 데이터에 대한 작업을 했었지만, 이번 릴리즈에서 사용하기 훨씬 쉬워졌습니다. Layout 의 Design Time Property 에 접근할 수 있습니다
현재 접근 가능한 모든 샘플 데이터를 탐색할 수 있습니다.
그리고, 뷰 선택시 네개의 버튼이 있습니다. 네번째 아이콘은 wrench
입니다. 디자인 타임 속성을 의미합니다.
해당 기능은 RecyclerView 에도 적용이 가능합니다.
새롭게 추가된 chip widget, 둥근 곡선으로 볼수 있는 BottomAppBar입니다.
ConstraintLayout 의 하위 뷰에 애니메이션을 적용할 수 있으며, 실제로 동작 경로도 확인 가능합니다. 추가적으로 키 프레임을 추가할 수 있습니다.
App Bundle을 좀 더 제어하고 싶은 경우, build.gradle 파일에 플래그를 추가할 수 있습니다. (ex, 화면 밀도, ABI, 언어)
build 시스템 관점에서 grade 속성 파일에 몇가지 사항을 추가해야합니다
D8은 현재 디폴트이고 Dex를 대체합니다.
R8은 빌드 툴 체인의 optimizer와 shrinker를 담당하며 Proguard를 R8로 대체하는것이 장기적 전략입니다.
grade.properties에 속성을 활성화하기만 하면됩니다. 하지만 아직 실험단계이므로 PlayStore까지 내보내는것은 추천하지 않습니다.
더 자세한 세션을 원하면 아래의 세션을 참고해주세요
What’s new with the Android build system (Google I/O ‘18)
Best practices using compilers in Android Studio (Google I/O ‘18)
Improve app performance with Android Studio Profilers (Google I/O ‘18)
What’s new with ConstraintLayout and Android Studio design tools (Google I/O ‘18)
Android Studio 는 Canary, Beta, Stable 채널로 출시합니다. Canary는 최신 기술이 포함된 채널이고 약간의 테스트를 거치고 출시합니다. Stable은 가장 안정적인 피드백을 받고 테스트가 끝나면 출시합니다.
Canary 채널에 대한 피드백을 일찍 받을수록 우리가 그것을 고칠 가능성이 더 높다는 것입니다. 문제는 일단 Android Studio가 Stable로 도달하면 문제를 해결하기엔 너무 늦습니다. Canary 채널에서 Android Studio를 다운로드하고 피드백을 보내주시기 바랍니다.
comments powered by Disqus
Subscribe to this blog via RSS.
LazyColumn/Row에서 동일한 Key를 사용하면 크래시가 발생하는 이유
Posted on 30 Nov 2024