반응이 느리거나 애니메이션이 끊기거나 작동을 멈추거나 전력을 많이 소모하면 앱 성능이 낮은 것으로 간주됩니다. 성능 문제를 해결할 때는 앱에서 CPU, 메모리, 그래픽, 네트워크, 기기 배터리와 같은 리소스를 비효율적으로 사용하는 영역을 확인하는 작업이 진행됩니다.
이러한 문제를 찾아서 해결하려면 이 주제에 설명된 프로파일링 및 벤치마킹 도구와 기법을 사용하세요. 성능 측정 기법을 알아보고 이러한 기법을 사용하여 특정 문제를 해결하는 방법의 예시를 보려면 성능 측정을 참고하세요.
Android 스튜디오에서는 잠재적 문제를 찾고 시각화하는 데 유용한 다음과 같은 몇 가지 프로파일링 도구를 제공합니다.
- CPU 프로파일러는 런타임 성능 문제를 추적하는 데 도움이 됩니다.
- 메모리 프로파일러는 메모리 할당을 추적하는 데 도움이 됩니다.
- 네트워크 프로파일러는 네트워크 트래픽 사용량을 모니터링합니다.
- 에너지 프로파일러는 배터리 소모에 영향을 미치는 에너지 사용을 추적합니다.
이러한 도구에 관한 자세한 내용은 Android 스튜디오 프로파일러 페이지를 참고하세요.
Jetpack Benchmark 라이브러리를 사용하여 애플리케이션에서 다양하고 중요한 작업을 측정할 수 있습니다.
- Macrobenchmark: UI 애니메이션 또는 스크롤 같은 동작에 의해 트리거되는 애플리케이션 시작 및 다시 그리기를 포함해 중요한 성능 사용 사례를 측정합니다.
- Microbenchmark: 특정 함수의 CPU 비용을 측정합니다.
이러한 라이브러리에 관해 자세히 알아보려면 앱 벤치마크 페이지를 참고하세요.
프로파일링 가능한 애플리케이션
Profileable
은 Android Q에서 도입된 매니페스트 구성입니다. Profileable은 기기 사용자가 Android 스튜디오, Simpleperf, Perfetto와 같은 도구를 통해 이 애플리케이션을 프로파일링할 수 있는지 여부를 지정합니다.
profileable
이 도입되기 전에는 대부분의 개발자가 Android에서만 디버그 가능한 앱을 프로파일링할 수 있었기 때문에 막대한 성능 비용이 추가되었습니다. 이러한 성능 비용은 프로파일링의 결과를 무효화할 수 있는데, 결과가 타이밍과 관련된 것일 경우 특히 그렇습니다. 표 1에는 디버그 가능한 앱과 프로파일링 가능한 앱의 차이점이 나와 있습니다.
기능 | 디버그 가능 | 프로파일링 가능 |
---|---|---|
메모리 프로파일러 | 전체 |
예: 아니요: |
CPU 프로파일러 | 전체 |
예:
아니요:
|
네트워크 프로파일러 | 예 | 아니요 |
에너지 프로파일러 | 예 | 아니요 |
이벤트 모니터 | 예 | 아니요 |
Profileable
은 개발자가 앱이 아주 적은 성능 비용으로 프로파일링 도구에 정보를 노출하는 것을 허용할 수 있도록 도입되었습니다. 프로파일링 가능한 APK는 매니페스트 파일의 <application>
섹션 내 <profileable android:shell="true"/>
라인에 추가된 출시 APK입니다.
프로파일링 가능한 앱 자동으로 빌드 및 실행
클릭 한 번으로 프로파일링 가능한 앱을 구성, 빌드, 실행할 수 있습니다. 이 기능을 사용하려면 API 수준 29 이상을 실행하고 Google Play가 설치된 가상 또는 실제 테스트 기기가 필요합니다. 이 기능을 사용하려면 프로필 앱 아이콘 옆의 화살표를 클릭하고 다음 두 옵션 중 하나를 선택하세요.

오버헤드가 낮은 '앱' 프로파일링은 CPU 프로파일러와 메모리 프로파일러를 시작합니다. 메모리 프로파일러에서는 Record Native Allocations만 사용 설정됩니다.
완전한 데이터가 있는 '앱' 프로파일링을 선택하면 CPU, 메모리, 에너지 프로파일러가 시작됩니다.
프로파일링 가능한 앱 직접 빌드 및 실행
프로파일링 가능한 애플리케이션을 직접 빌드하려면 먼저 출시 애플리케이션을 빌드한 다음 매니페스트 파일을 업데이트해야 합니다. 그러면 출시 애플리케이션이 프로파일링 가능한 애플리케이션으로 변환됩니다. 프로파일링 가능한 애플리케이션을 구성한 후에는 프로파일러를 실행하고 분석할 프로파일링 가능 프로세스를 선택합니다.
출시 앱 빌드하기
프로파일링 목적으로 출시 애플리케이션을 빌드하려면 다음 단계를 따르세요.
-
애플리케이션의
build.gradle
파일에 다음 라인을 추가하여 애플리케이션을 디버그 키로 서명합니다. 작동하는 출시 빌드 변형이 있다면 다음 단계로 건너뛰어도 됩니다.buildTypes { release { signingConfig signingConfigs.debug } }
-
Android 스튜디오에서 Build > Select Build Variant...를 선택하고 출시 변형을 선택합니다.
출시를 프로파일링 가능으로 변경하기
-
AndroidManifest.xml
파일을 열고 다음을<application>
에 추가하여 출시 애플리케이션을 프로파일링 가능한 애플리케이션으로 변환합니다. 자세한 내용은 출시를 위한 애플리케이션 빌드를 참고하세요.<profileable android:shell="true"/>
-
SDK 버전에 따라 애플리케이션의
build.gradle
파일에 다음 라인을 추가해야 할 수 있습니다.aaptOptions { additionalParameters =["--warn-manifest-validation"] }
프로파일링 가능한 앱 프로파일링하기
프로파일링 가능한 앱을 프로파일링하려면 다음 단계를 따르세요.
-
개발 에뮬레이터 또는 기기에서 앱을 시작합니다.
-
Android 스튜디오에서 View > Tool Windows > Profiler를 선택하여 프로파일러를 실행합니다.
-
애플리케이션이 실행되면 프로파일러에서
버튼을 클릭하여 드롭다운 메뉴를 표시합니다. 기기를 선택한 다음 Other profileable processes 아래에서 애플리케이션 항목을 선택합니다.
-
프로파일러가 애플리케이션에 연결됩니다. CPU 프로파일러와 메모리 프로파일러만 사용할 수 있으며, 메모리 프로파일러는 제한된 기능을 제공합니다.