앱 성능 프로파일링

반응이 느리거나 애니메이션이 끊기거나 작동을 멈추거나 전력을 많이 소모하면 앱 성능이 저하된 것으로 간주됩니다. 성능 문제를 해결하려면 앱을 프로파일링하거나 앱이 CPU, 메모리, 그래픽, 기기 배터리와 같은 리소스를 비효율적으로 사용하는 영역을 식별해야 합니다. 이 주제에서는 일반적인 성능 문제를 해결하는 데 사용할 수 있는 Android 스튜디오 도구와 기법을 설명합니다.

전체 Android 스튜디오 IDE를 실행하지 않고 독립형 프로파일러를 실행하는 방법을 알아보려면 독립형 프로파일러 실행을 참고하세요.

요구사항

앱을 프로파일링하려면 다음을 갖추는 것이 좋습니다.

  • 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 스튜디오에서 프로파일링 가능한 앱을 빌드하고 실행하려면 다음 단계를 따르세요.

  1. 아직 실행/디버그 구성이 없는 경우 만듭니다.
  2. 출시 빌드 변형을 선택합니다 (Build > Select Build Variant).
  3. 작업 더보기 > 오버헤드가 낮은 '앱' 프로파일링 또는 완전한 데이터로 '앱' 프로파일링 을 클릭합니다. 여기서 '앱'은 실행 구성의 이름이므로 사용자마다 다를 수 있습니다. 두 옵션 중에서 선택하려면 요구사항을 참고하세요. 앱이 테스트 기기에서 열리고 Android 스튜디오에서 프로파일러 창이 열립니다.

이 안내가 적용되지 않는다면 프로파일링 가능한 앱을 수동으로 빌드 및 실행을 참고하세요.

프로파일링 시작

프로파일링 작업을 시작하려면 다음 단계를 따르세요.

  1. 프로파일러 창의 탭에 있는 목록에서 프로세스를 선택합니다. 대부분의 경우 앱을 나타내는 최상위 프로세스를 선택하는 것이 좋습니다.

    Profiler 홈 탭
  2. Tasks 섹션에서 프로파일링 작업을 선택합니다. 작업에 관한 자세한 내용은 이 섹션의 다른 페이지를 참고하세요. 일부 프로파일링 작업은 일부 프로세스에서만 사용할 수 있습니다. 어디서부터 시작해야 할지 모르겠다면 실시간으로 앱을 검사하여 실적 활동을 전반적으로 살펴보세요.

  3. 프로파일러 작업 시작 위치 드롭다운을 사용하여 시작 시 프로파일러 작업을 시작할지 아니면 프로세스가 실행 중일 때 프로세스에 연결할지 선택합니다. 앱 시작 시간을 개선하거나 앱 시작 중에 발생하는 프로세스를 캡처하려는 경우 시작을 포함해야 합니다. 그렇지 않으면 앱의 현재 상태에서 프로파일링을 시작할 수 있습니다.

  4. 프로파일러 작업 시작을 클릭합니다. 작업이 자체 탭에서 시작됩니다.

  5. 활동이 트리거되도록 앱과 상호작용합니다.

  6. 녹음을 중지하고 (해당하는 경우) 파싱될 때까지 기다린 후 결과를 확인합니다.

트레이스 비교, 내보내기, 가져오기

프로파일링 작업을 중지하면 프로파일러 창의 이전 녹화 파일 탭에 자동으로 저장됩니다. 저장된 녹화 파일을 사용하여 여러 시나리오의 리소스 사용량을 비교할 수 있습니다. 녹음 파일은 현재 Android 스튜디오 세션이 진행되는 동안 저장됩니다. 더 오래 보관하려면 녹음 파일 내보내기 를 클릭하여 내보내세요. 일부 트레이스 유형은 내보낼 수 없습니다.

이전 Android 스튜디오 실행에서 트레이스를 가져오려면 이전 녹화 파일 탭에서 녹화 파일 가져오기 를 클릭하고 트레이스 파일을 선택합니다. 파일을 Android 스튜디오 편집기 창으로 드래그하여 가져올 수도 있습니다.

녹화 구성 수정

프로파일러 작업 녹화 구성을 수정하려면 프로파일러 설정 을 클릭합니다. 전환할 수 있는 두 가지 기본 설정이 있습니다.

  • 샘플링이 포함된 태스크의 경우 샘플 간격은 각 샘플 간의 시간을 나타냅니다. 더 짧은 간격을 지정할수록 기록된 데이터의 파일 크기 한도에 더 빠르게 도달할 수 있습니다.
  • 파일 크기 한도는 연결된 기기에 쓸 수 있는 데이터의 양을 나타냅니다. 기록을 중지하면 Android 스튜디오가 이 데이터를 파싱하여 프로파일러 창에 표시합니다. 한도를 늘리고 대량의 데이터를 기록하면 Android 스튜디오가 파일을 파싱하는 데 훨씬 더 오래 걸리고 응답하지 못하게 될 수도 있습니다.