Android 앱 프로파일링Profiling Android Apps

앱 스토어에 앱을 배포하기 전에 모든 성능 병목 지점, 과도한 메모리 사용 문제 또는 네트워크 리소스의 비효율적인 사용을 확인하고 해결하는 것이 중요합니다.Before deploying your app to an app store, it's important to identify and fix any performance bottlenecks, excessive memory usage issues, or inefficient use of network resources. 이 목적을 위해 두 가지 프로파일러 도구를 사용할 수 있습니다.Two profiler tools are available to serve this purpose:

  • Xamarin ProfilerXamarin Profiler
  • Android Studio에서 Android ProfilerAndroid Profiler in Android Studio

이 가이드는 Xamarin Profiler를 소개하고 Android Profiler의 사용을 시작하기 위한 자세한 정보를 제공합니다.This guide introduces the Xamarin Profiler and provides detailed information for getting started with using the Android Profiler.

Xamarin ProfilerXamarin Profiler

Xamarin Profiler는 IDE 내에서 Xamarin 앱을 프로파일링하기 위해 Visual Studio 및 Mac용 Visual Studio와 통합되는 독립 실행형 애플리케이션입니다.The Xamarin Profiler is a standalone application that is integrated with Visual Studio and Visual Studio for Mac for profiling Xamarin apps from within the IDE. Xamarin Profiler 사용에 대한 자세한 내용은 Xamarin Profiler를 참조하세요.For more information about using the Xamarin Profiler, see Xamarin Profiler.

참고

Windows의 Visual Studio Enterprise 또는 Mac용 Visual Studio에서 Xamarin Profiler 기능을 잠금 해제하려면 Visual Studio Enterprise 구독자여야 합니다.You must be a Visual Studio Enterprise subscriber to unlock the Xamarin Profiler feature in either Visual Studio Enterprise on Windows or Visual Studio for Mac.

Android Studio ProfilerAndroid Studio Profiler

Android Studio 3.0 이상은 Android Profiler 도구를 포함합니다.Android Studio 3.0 and later includes an Android Profiler tool. Android Profiler를 사용하여 Visual Studio Enterprise 라이선스의 필요 없이 Visual Studio로 빌드된 Xamarin Android 앱의 성능을 측정할 수 있습니다.You can use the Android Profiler to measure the performance of a Xamarin Android app built with Visual Studio – without the need for a Visual Studio Enterprise license. 그러나 Xamarin Profiler와 달리 Android Profiler는 Visual Studio와 통합되지 않으며 미리 빌드되고 Android Profiler로 가져온 APK(Android 애플리케이션 패키지)를 프로파일링하는 데만 사용할 수 있습니다.However, unlike the Xamarin Profiler, the Android Profiler is not integrated with Visual Studio and can only be used to profile an Android application package (APK) that has been built in advance and imported into the Android Profiler.

Android Profiler에서 Xamarin Android 앱 시작Launching a Xamarin Android app in Android Profiler

다음 단계에서는 Android Studio의 Android Profiler 도구에서 Xamarin Android 애플리케이션을 시작하는 방법을 설명합니다.The following steps explain how to launch an Xamarin Android application in Android Studio's Android Profiler tool. 아래 예제 스크린샷에서 Xamarin Forms XamagonXuzzle 앱이 빌드되고 Android Profiler를 사용하여 프로파일링됩니다.In the example screenshots below, the Xamarin Forms XamagonXuzzle app is built and profiled using Android Profiler:

  1. Android 프로젝트에서 빌드 옵션에서 공유 런타임 사용을 비활성화합니다.In the Android project build options, disable Use Shared Runtime. 이렇게 하면 공유 개발 시 Mono 런타임에서 종속성 없이 APK(Android 애플리케이션 패키지)가 빌드됩니다.This ensures that the Android application package (APK) is built without a dependency on the shared development-time Mono runtime.

    공유 런타임 사용 비활성화

  2. 디버그용 앱을 빌드하고 물리적 디바이스 또는 에뮬레이터에 배포합니다.Build the app for Debug and deploy it to a physical device or emulator. 이로 인해 APK의 서명된 디버그 버전이 빌드됩니다.This causes a signed Debug version of the APK to be built. XamagonXuzzle 예제의 경우 결과 APK는 com.companyname.XamagonXuzzle-Signed.apk로 이름이 지정됩니다.For the XamagonXuzzle example, the resulting APK is named com.companyname.XamagonXuzzle-Signed.apk.

  3. 프로젝트 폴더를 열고 bin/Debug로 이동합니다.Open the project folder and navigate to bin/Debug. 이 폴더에서 앱의 Signed.apk 버전을 찾고 편리하게 액세스할 수 있는 위치로 복사합니다(예: 바탕 화면).In this folder, locate the Signed.apk version of the app and copy it to a conveniently-accessible place (such as the desktop). 다음 스크린샷에서 APK com.companyname.XamagonXuzzle-Signed.apk가 배치되고 바탕 화면으로 복사됩니다.In the following screenshot, the APK com.companyname.XamagonXuzzle-Signed.apk is located and copied to the desktop:

    디버그 서명된 APK 파일의 위치Location of the debug signed APK file

  4. Android Studio를 시작하고 APK 프로파일링 또는 디버그를 선택합니다.Launch Android Studio and select Profile or debug APK:

    Android Studio 시작 화면에서 프로파일러 시작

  5. APK 파일 선택 대화 상자에서 앞에서 빌드하고 복사한 APK로 이동합니다.In the Select APK File dialog, navigate to the APK that you built and copied earlier. APK를 선택하고 확인을 클릭합니다.Select the APK and click OK:

    APK 파일 선택 대화 상자에서 APK 선택

  6. Android Studio는 APK를 로드하고 classes.dex를 디스어셈블합니다.Android Studio will load the APK and dissassembles classes.dex:

    APK 설정

  7. APK가 로드되면 Android Studio는 APK에 대한 다음 프로젝트 화면을 표시합니다.After the APK is loaded, Android Studio displays the following project screen for the APK. 왼쪽의 트리 보기에서 앱 이름을 마우스 오른쪽 단추로 클릭하고 모듈 설정 열기를 선택합니다.Right-click the app name in the tree view on the left and select Open Module Settings:

    모듈 설정 열기 메뉴 항목의 위치Location of Open Module Settings menu item

  8. 프로젝트 설정 > 모듈로 이동하고, 앱의 -Signed 노드를 선택한 다음, <No SDK> 를 클릭합니다.Navigate to Project Settings > Modules, select the -Signed node of the app, then click <No SDK>:

    SDK 설정으로 이동Navigating to the SDK setting

  9. 모듈 SDK 풀다운 메뉴에서 앱을 빌드하는 데 사용된 Android SDK 레벨을 선택합니다(이 예제에서는 API 레벨 26이 XamagonXuzzle을 빌드하는 데 사용됨).In the Module SDK pull-down menu, select the Android SDK level that was used to build the app (in this example, API level 26 was used to build XamagonXuzzle):

    프로젝트 SDK 수준 설정Setting the Project SDK level

    적용확인을 클릭하여 이 설정을 저장합니다.Click Apply and OK to save this setting.

  10. 도구 모음 아이콘에서 프로파일러를 시작합니다.Launch the profiler from the toolbar icon:

    프로파일러 도구 모음 아이콘의 위치Location of the profiler toolbar icon

  11. 앱을 실행/프로파일링하기 위해 배포 대상을 선택하고 확인을 클릭합니다.Select the deployment target for running/profiling the app and click OK. 배포 대상은 에뮬레이터에서 실행되는 물리적 디바이스 또는 가상 디바이스일 수 있습니다.The deployment target can be a physical device or a virtual device running in an emulator. 이 예제에서는 Nexus 5X 디바이스가 사용됩니다.In this example, a Nexus 5X device is used:

    배포 대상 선택

  12. 프로파일러가 시작된 후 배포 디바이스 및 앱 프로세스에 연결되는 데 몇 초가 걸립니다.After the profiler starts, it will take a few seconds for it to connect to the deployment device and the app process. APK를 설치하는 동안 Android Profiler는 연결된 디바이스 없음디버깅할 수 있는 프로세스 없음을 보고합니다.While it is installing the APK, Android Profiler will report No connected devices and No debuggable processes.

    프로파일러에서 APK 설치The profiler installs the APK

  13. 몇 초 후 Android Profiler는 APK 설치를 완료하고 디바이스 이름 및 프로파일링되는 앱 프로세스의 이름을 보고하는 APK를 시작합니다(이 예제에서는 각각 LGE Nexus 5Xcom.companyname.XamagonXuzzle).After several seconds, Android Profiler will complete APK installation and launch the APK, reporting the device name and the name of the app process being profiled (in this example, LGE Nexus 5X and com.companyname.XamagonXuzzle, respectively):

    시작 후 프로파일러 창Profiler window after start

  14. 디바이스 및 디버깅할 수 있는 프로세스를 식별한 후 Android Profiler는 앱 프로파일링을 시작합니다.After the device and debuggable process are identified, Android Profiler begins profiling the app:

    프로파일러에서 실행 중인 앱에 대해 표시Profiler displays for the running app

  15. XamagonXuzzle에서 RANDOMIZE 단추를 탭하는 경우(타일을 이동하고, 임의로 지정하도록 함) 앱의 임의 간격 동안 CPU 사용량이 표시됩니다.If you tap the RANDOMIZE button on XamagonXuzzle (which causes it to shift and randomize tiles), you will see the CPU usage increase during the app's randomization interval:

    RANDOMIZE 단추를 탭한 경우 CPU 사용량CPU usage when RANDOMIZE button is tapped

Android Profiler 사용Using the Android Profiler

Android Profiler 사용에 대한 자세한 정보는 Android Studio 설명서에 포함되어 있습니다.Detailed information for using the Android Profiler is included in the Android Studio documentation. 다음 항목은 Xamarin Android 개발자의 관심 항목입니다.The following topics will be of interest to Xamarin Android developers:

  • CPU 프로파일러– 실시간으로 앱의 CPU 사용량 및 스레드 작업을 검사하는 방법을 설명합니다.CPU Profiler – Explains how to inspect the app's CPU usage and thread activity in real-time.

  • 메모리 프로파일러– 앱의 메모리 사용량을 실시간 그래프로 표시하고, 분석의 레코드 메모리 할당에 대한 단추를 포함합니다.Memory Profiler – Displays a real-time graph of the app's memory usage, and includes a button to record memory allocations for analysis.

  • 네트워크 프로파일러– 앱에서 보내고 받는 데이터의 실시간 네트워크 작업을 표시합니다.Network Profiler – Displays real-time network activity of data sent and received by the app.