반응이 느리거나 애니메이션이 끊기거나 작동을 멈추거나 전력을 많이 소모하면 앱 성능이 저하된 것으로 간주됩니다. 성능 문제를 해결하려면 앱을 프로파일링하거나 앱이 CPU, 메모리, 그래픽, 기기 배터리와 같은 리소스를 비효율적으로 사용하는 영역을 식별해야 합니다. 이 주제에서는 일반적인 성능 문제를 해결하는 데 사용할 수 있는 Android 스튜디오 도구와 기법을 설명합니다.
전체 Android 스튜디오 IDE (Windows 또는 Linux만 해당)를 실행하지 않고 독립형 프로파일러를 실행하는 방법을 알아보려면 독립형 프로파일러 실행을 참고하세요.
요구사항
앱을 프로파일링하려면 다음 항목이 필요합니다.
profileable
매니페스트 구성이 사용 설정된 출시 빌드 변형이 있는 앱(프로파일링 가능한 앱이라고도 함). 기본적으로 앱의 이 구성은 true로 설정됩니다. 이 구성을 확인하거나 변경하려면 앱의 매니페스트 또는AndroidManifest.xml
파일을 열고<application>
섹션에서profileable
매니페스트 구성을 찾습니다.<profileable android:shell="true" />
API 수준 29 이상을 실행하고 Google Play가 설치된 가상 또는 실제 테스트 기기
Android Gradle 플러그인 7.3 이상
프로파일링 가능한 앱과 디버그 가능한 앱
프로파일링 가능한 앱을 사용하면 대부분의 일반적인 프로파일링 작업을 실행할 수 있지만 Java/Kotlin 할당을 기록하거나 힙 덤프를 캡처해야 하는 경우 대신 디버그 가능한 앱을 사용해야 합니다. 디버그 가능한 앱 프로세스와 API 수준 26 이상을 실행하는 기기에서는 이를 제공하는 작업 뷰에서 사용자 상호작용 및 앱 수명 주기 이벤트를 보여주는 상호작용 타임라인도 볼 수 있습니다.
디버그 가능한 앱은 앱의 debug
빌드 변형을 기반으로 하며 디버거와 같은 개발 도구를 사용할 수 있습니다. 그러나 성능 비용이 약간 발생합니다. 프로파일링 가능한 앱은 앱의 release
빌드 변형을 기반으로 하며 디버그 빌드의 성능 오버헤드 없이 일반적인 프로파일링 작업의 하위 집합을 사용 설정합니다.
프로파일링 가능한 앱 빌드 및 실행
Android 스튜디오에서 프로파일링 가능한 앱을 빌드하고 실행하려면 다음 단계를 따르세요.
- 실행/디버그 구성이 없는 경우 실행/디버그 구성을 만듭니다.
- 출시 빌드 변형을 선택합니다 (Build > Select Build Variant).
- 추가 작업 > 오버헤드가 낮은 '앱' 프로파일링 또는 완전한 데이터로 '앱' 프로파일링 ('app'은 실행 구성의 이름이므로 다를 수 있음)을 클릭합니다. 두 옵션 중에서 선택하려면 요구사항을 참고하세요. 테스트 기기에서 앱이 열리고 Android 스튜디오에서 Profiler 창이 열립니다.
이 안내가 적용되지 않는다면 프로파일링 가능한 앱을 수동으로 빌드 및 실행을 참고하세요.
프로파일링 시작
프로파일링 작업을 시작하려면 다음 단계를 따르세요.
Profiler 창에 있는 홈 탭의 목록에서 프로세스를 선택합니다. 대부분의 경우 앱을 나타내는 최상위 프로세스를 선택하는 것이 좋습니다.
작업 섹션에서 프로파일링 작업을 선택합니다. 작업에 관한 자세한 내용은 이 섹션의 다른 페이지를 참고하세요. 일부 프로파일링 작업은 일부 프로세스에서만 사용할 수 있습니다. 어디서부터 시작해야 할지 모르겠다면 실시간으로 앱을 검사하여 실적 활동을 전반적으로 살펴보세요.
프로파일러 작업 시작 드롭다운을 사용하여 시작 시 프로파일러 작업을 시작할지 아니면 실행 중인 프로세스에 연결할지 선택합니다. 앱 시작 시간을 개선하거나 앱 시작 중에 발생하는 프로세스를 캡처하려면 시작을 포함해야 합니다. 그러지 않으면 앱의 현재 상태에서 프로파일링을 시작할 수 있습니다.
프로파일러 작업 시작을 클릭합니다. 작업이 자체 탭에서 시작됩니다.
활동이 트리거되도록 앱과 상호작용합니다.
녹음을 중지하고 (해당하는 경우) 파싱될 때까지 기다린 후 결과를 확인합니다.
trace 비교, 내보내기, 가져오기
프로파일링 작업을 중지하면 Profiler 창 내 Past Recordings 탭에 자동으로 저장됩니다. 저장된 녹화 파일을 사용하여 여러 시나리오의 리소스 사용량을 비교할 수 있습니다. 녹음 파일은 현재 Android 스튜디오 세션이 진행되는 동안 저장됩니다. 더 오래 보관하려면 녹음 파일 내보내기 를 클릭하여 내보내세요. 일부 트레이스 유형은 내보낼 수 없습니다.
예를 들어 이전의 Android 스튜디오 실행에서 트레이스를 가져오려면 Past Recordings 탭에서 Import record 를 클릭하고 트레이스 파일을 선택합니다. 파일을 Android 스튜디오 편집기 창으로 드래그하여 가져올 수도 있습니다.
녹화 구성 수정
프로파일러 작업 기록 구성을 수정하려면 프로파일러 설정 을 클릭합니다. 전환할 수 있는 두 가지 기본 설정이 있습니다.
- 샘플링이 포함된 태스크의 경우 샘플 간격은 각 샘플 간의 시간을 나타냅니다. 더 짧은 간격을 지정할수록 기록된 데이터의 파일 크기 한도에 더 빠르게 도달할 수 있습니다.
- 파일 크기 한도는 연결된 기기에 쓸 수 있는 데이터의 양을 나타냅니다. 기록을 중지하면 Android 스튜디오가 이 데이터를 파싱하여 프로파일러 창에 표시합니다. 한도를 늘리고 대량의 데이터를 기록하면 Android 스튜디오가 파일을 파싱하는 데 훨씬 더 오래 걸리고 응답하지 못하게 될 수도 있습니다.