이벤트 및 프로그램

완전 최적화: 실적 하이라이트 주간 마무리

읽는 데 3분 소요

지난 한 주 동안 Android 앱을 더 빠르고, 더 작고, 더 안정적으로 만드는 데 도움이 되는 권장사항과 가이드를 공유하는 데 집중했습니다. R8 최적화 도구와 프로필 기반 최적화의 기본 기능부터 Jetpack Compose를 사용한 성능 개선, 앱 성능을 향상하는 방법에 관한 새로운 가이드에 이르기까지, 성능이 우수한 앱을 빌드하는 데 필요한 적은 노력으로 큰 효과를 내는 도구를 살펴보았습니다.

이 게시물은 최적화가 필요할 때마다 이러한 리소스를 다시 살펴볼 수 있는 색인 및 로드맵 역할을 합니다. 지금까지 함께 살펴본 내용 중 핵심 사항 5가지를 정리해 보겠습니다.

R8 옵티마이저를 사용하여 앱 속도 높이기

가장 효과적이고 간단한 방법은 R8 최적화 도구를 완전히 사용 설정하는 것입니다. 단순히 앱 크기를 줄이는 것이 아니라, 전체 프로그램에 대한 심층적인 최적화를 수행하여 효율성을 위해 코드를 근본적으로 다시 작성합니다. Keep 규칙을 다시 살펴보고 R8을 엔지니어링 작업에 다시 적용하세요.

R8 최적화 도구에 관해 새로 업데이트되고 확장된 문서를 참고하세요.

Reddit은 R8 전체 모드를 사용 설정한 후 콜드 스타트업이 40% 빨라지고 ANR 오류가 30% 감소했습니다.

블로그에서 전체 우수사례를 읽어보세요.

image.png

Disney+의 엔지니어들은 앱 성능에 투자하고 앱의 사용자 환경을 최적화하고 있습니다. 때로는 사소해 보이는 변화가 큰 영향을 미칠 수 있습니다. R8 구성을 검사하는 동안 팀은 -dontoptimize 플래그가 사용되고 있음을 발견했습니다. 이 플래그를 삭제하여 최적화를 사용 설정한 후 Disney+팀은 앱 성능이 크게 개선되는 것을 확인했습니다.

image.png

따라서 다음에 누군가 앱 성능을 개선하기 위해 무엇을 할 수 있는지 물어보면 이 게시물에 링크를 걸어주세요.

1일 차 블로그에서 자세히 알아보기: R8을 사용하여 앱 축소, 최적화, 신속한 추적

실적 개선을 위한 안내

기준 프로필은 JIT(Just-In-Time) 컴파일의 필요성을 효과적으로 제거하여 시작 속도, 스크롤, 애니메이션, 전반적인 렌더링 성능을 개선합니다. 시작 프로필은 앱의 classes.dex 파일에 지능적인 순서를 적용하여 앱 시작을 더욱 가볍게 만듭니다.

기준 프로필이 앱 성능에 얼마나 중요한지 자세히 알아보려면 Meta의 엔지니어링 블로그를 참고하세요. 이 블로그에서는 기준 프로필을 통해 앱 전반에서 다양한 중요 성능 측정항목을 최대 40% 개선한 방법을 공유합니다.

Jetpack Compose 1.10 일시중지 가능한 컴포지션 및 맞춤설정 가능한 캐시 창과 같은 기능은 복잡한 목록 항목을 처리할 때 스크롤 버벅거림을 방지하는 데 매우 중요합니다. #TheAndroidShow의 최신 에피소드에서 자세한 내용을 확인해 보세요.

수요일 블로그에서 자세히 알아보기: 심층적인 성능 고려사항

실적 측정은 간단합니다

측정할 수 없는 것은 관리할 수 없습니다. 성능 수준 가이드에서는 측정 과정을 5단계로 나누어 설명합니다. 쉽게 사용할 수 있는 데이터부터 시작하여 고급 로컬 도구까지 다룹니다.

1단계에서는 Android vitals에서 쉽게 사용할 수 있는 데이터를 사용하는 방법을 알려드립니다. 이 데이터는 ANR, 비정상 종료, 과도한 배터리 사용에 관한 필드 데이터를 제공합니다.

레벨업하는 방법도 알려드립니다. 예를 들어 Jetpack Macrobenchmark와 새로운 UiAutomator 2.4 API를 사용하여  로컬 성능 테스트를 통해 3단계에 도달하여 앱 성능의 변화를 정확하게 측정하고 확인하는 방법을 보여드리겠습니다.

목요일 블로그에서 자세히 알아보기: [목요일 블로그 링크: 실적 개선을 위한 레벨업 가이드]

성능 디버깅이 업그레이드되었습니다

고급 최적화로 인해 비정상 종료 보고서를 읽을 수 없게 되어서는 안 됩니다. 새로운 기능은 R8 및 백그라운드 작업을 자신 있게 디버그하는 데 도움이 되도록 설계되었습니다.

자동 Logcat Retrace

Android 스튜디오 Narwhal부터 Logcat 창에서 스택 트레이스의 난독화를 자동으로 해제할 수 있습니다. 이렇게 하면 프로덕션에 즉시 사용 가능한 빌드에서 비정상 종료를 즉시 확인하고 디버그할 수 있습니다.

보관 규칙 좁히기

화요일에는 런타임 비정상 종료를 해결하는 데 필요한 Keep 규칙을 명확히 설명하고, 지나치게 광범위한 와일드 카드보다는 구체적인 멤버 수준 규칙을 작성하는 것이 중요하다고 강조했습니다. 중요한 주제이므로 동영상도 제작했습니다.

Android 스튜디오 Otter 3 기능 출시에는 광범위한 Keep 규칙에 대한 새로운 린트 검사도 포함되어 있습니다.

image.png

또한 R8 구성을 올바르게 구성할 수 있도록 R8 구성 테스트 및 문제 해결에 관한 새로운 가이드도 출시했습니다.

화요일 블로그에서 자세히 알아보기: R8 유지 규칙 구성 및 문제 해결

백그라운드 작업

WorkManager로 작업을 예약할 때 발생할 수 있는 일반적인 시나리오를 디버깅하는 방법에 관한 가이드를 공유했습니다.

Background Task Inspector는 WorkManager 작업의 시각적 표현과 그래프 뷰를 제공하여 예약된 작업이 지연되거나 실패하는 이유를 디버그하는 데 도움이 됩니다. 또한 업데이트된 백그라운드 작업 문서 방문 페이지에서는 특정 사용 사례에 최적화된 작업별 API를 강조하여 더 안정적인 실행을 지원합니다.
 

수요일 블로그에서 자세히 알아보기: 백그라운드 작업 성능 고려사항

실적 최적화는 지속적인 과정입니다

이번 주에 R8 전체 모드를 사용 설정하는 과제를 성공적으로 완료했다면 다음 단계는 앱 성능 점수를 사용하여 제품 로드맵에 성능을 통합하는 것입니다. 이 표준화된 프레임워크는 지속적인 개선을 위해 가장 효과적인 작업 항목을 찾는 데 도움이 됩니다.

한 주의 마지막에는 #AskAndroid Live Q&A 세션을 진행하여 엔지니어들이 R8, 프로필 기반 최적화 등에 관한 어려운 질문에 답변했습니다. 놓치셨다면 다시보기를 확인하세요.

참여해 주셔서 감사합니다. 이제 빌드를 시작하고 이 기세를 이어가세요.

작성자:
계속 읽기