반응이 느리거나 애니메이션이 끊기거나 작동을 멈추거나 전력을 많이 소모하면 앱 성능이 낮은 것으로 간주됩니다. 성능 문제를 해결할 때는 앱에서 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입니다.
프로파일링 가능한 애플리케이션을 빌드하려면 먼저 출시 애플리케이션을 빌드한 다음 매니페스트 파일을 업데이트해야 합니다. 그러면 출시 애플리케이션이 프로파일링 가능한 애플리케이션으로 변환됩니다.
출시 앱 빌드하기
프로파일링 목적으로 출시 애플리케이션을 빌드하려면 다음 단계를 따르세요.
-
애플리케이션의
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 프로파일러와 메모리 프로파일러만 사용할 수 있으며, 메모리 프로파일러는 제한된 기능을 제공합니다.