이벤트 및 프로그램

완전히 최적화됨: 실적 집중 조명 주간 마무리

전문 길이: 3분

지난 한 주 동안 Android 앱을 더 빠르고 작고 안정적으로 만드는 데 도움이 되는 권장사항과 가이드를 자세히 살펴봤습니다. R8 옵티마이저와 프로필 기반 최적화의 기본적인 기능부터 Jetpack Compose를 사용한 성능 개선, 앱 성능 향상에 관한 새로운 가이드까지, 성능이 우수한 앱을 빌드하는 데 필요한 노력은 적게, 효과는 크게 도구를 다루었습니다.

이 게시물은 최적화가 필요할 때마다 이러한 리소스를 다시 살펴볼 수 있는 색인 및 로드맵 역할을 합니다. 함께한 여정에서 얻은 5가지 핵심 사항은 다음과 같습니다.

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

가장 큰 영향을 미치면서도 노력이 적게 드는 변경사항은 R8 옵티마이저를 완전히 사용 설정하는 것입니다. 앱 크기를 줄이는 것뿐만 아니라 효율성을 위해 코드를 근본적으로 다시 작성하는 심층적인 전체 프로그램 최적화를 실행합니다. Keep 규칙을 다시 검토하고 엔지니어링 작업에 R8을 다시 적용하세요.

R8 옵티마이저에 관한 새롭게 업데이트되고 확장된 문서를 참고하세요.

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

Google 블로그에서 전체 우수사례를 확인하세요.

image.png

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

image.png

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

첫날 블로그에서 자세히 알아보기: R8을 사용하여 앱 축소, 최적화, 빠른 추적하기

실적 개선을 위한 가이드

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

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

Google은 Jetpack Compose 1.10 복잡한 목록 항목을 처리할 때 스크롤 끊김 현상을 방지하려면 일시중지 가능한 컴포지션 및 맞춤설정 가능한 캐시 창과 같은 기능이 중요합니다.자세한 내용은 #TheAndroidShow의 최신 에피소드를 참고하세요.

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

간단하게 실적 측정하기

측정할 수 없는 것은 관리할 수 없습니다. Google의 성능 레벨링 가이드는 측정 여정을 5단계로 분류합니다. 쉽게 사용할 수 있는 데이터로 시작하여 고급 로컬 도구로 이어집니다.

레벨 1에서는 Android Vitals의 쉽게 사용할 수 있는 데이터를 사용하는 방법을 알아봅니다. Android Vitals는 ANR, 비정상 종료, 과도한 배터리 사용에 관한 필드 데이터를 제공합니다.

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

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

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

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

자동 Logcat 리트레이스

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

좁은 유지 규칙

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

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

image.png

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

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

백그라운드 작업

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

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

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

성능 최적화는 지속적인 여정입니다

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

이번 주에는 #AskAndroid Live Q&A 세션으로 마무리했습니다. 엔지니어들이 R8, 프로필 기반 최적화 등에 관한 가장 어려운 질문에 답변했습니다. 놓치셨다면 다시보기로 확인하세요.

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

작성자:

계속 읽기