Android에서 Firebase 성능 모니터링 시작하기

이 가이드는 다음 단계에 따라 앱에서 Firebase 성능 모니터링을 사용하는 방법을 보여줍니다.

  1. 필수 조건
  2. Android 프로젝트에 Firebase 추가
  3. 앱에 성능 모니터링 추가
  4. (선택사항) 앱에 맞춤 추적 및 하나 이상의 측정항목 정의
  5. (선택사항) @AddTrace 주석을 추가하여 특정 메소드 추적
  6. Firebase 콘솔에서 성능 모니터링 결과 확인
  7. 앱을 배포하고 Firebase 콘솔에서 결과 검토

기본 요건

시작하기 전에 몇 가지 환경 설정이 필요합니다.

  • Android 4.0(Ice Cream Sandwich) 이상 및 Google Play 서비스 16.1.0 이상을 구동하는 기기
  • Google 저장소의 Google Play 서비스 SDK(Android SDK Manager에서 다운로드 가능)
  • Android 스튜디오 최신 버전(버전 2.2 이상)

Android 프로젝트에 Firebase 추가

다른 Firebase 기능을 사용하는 경우 Android 스튜디오에서 Firebase Assistant를 사용하여 앱에 Firebase를 추가할 수 있습니다.

Android 스튜디오에서 Firebase Assistant를 여는 방법은 다음과 같습니다.

  1. Tools > Firebase를 클릭하여 Assistant 창을 엽니다.
  2. 나열된 기능 중 하나(예: Analytics)를 클릭하여 펼친 후 제공되는 가이드 링크(예: Log an Analytics event)를 클릭합니다.
  3. Firebase에 연결 버튼을 클릭하여 Firebase에 연결하고 앱에 필요한 코드를 추가합니다.

앱에서 다른 Firebase 기능을 사용하지 않는 경우 앱에 Firebase를 수동으로 추가할 수 있습니다.

앱에 성능 모니터링 추가

  1. 프로젝트 수준 build.gradle 파일을 열고 다음을 추가합니다.
    1. buildscript -> repositories 섹션:
      jcenter()
    2. buildscript -> dependencies 섹션에 다음과 같이 Firebase 종속 항목을 추가합니다.
      • Android 스튜디오 2.x
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
      • Android 스튜디오 3.x
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
  2. 앱 수준 build.gradle 파일을 열고 다음을 추가합니다.
    1. apply plugin: 'com.android.application' 아래에 다음 줄을 추가합니다.
      apply plugin: 'com.google.firebase.firebase-perf'
    2. dependencies 섹션에 다음을 추가합니다.
      implementation 'com.google.firebase:firebase-perf:16.1.0'
  3. 앱을 다시 컴파일합니다. 이제 자동 추적 및 HTTP/S 네트워크 요청이 모니터링됩니다.

(선택사항) 앱에 맞춤 추적 및 하나 이상의 측정항목 정의

맞춤 추적은 앱의 특정 코드에 연결된 성능 데이터 보고서입니다. 맞춤 추적에 관한 자세한 내용은 성능 모니터링 개요를 참조하세요. 앱에 맞춤 추적이 여러 개 있을 수 있으며, 한 번에 둘 이상의 맞춤 추적을 실행할 수도 있습니다. 각 맞춤 추적에는 앱의 성능 관련 이벤트를 계수하는 하나 이상의 측정항목이 있을 수 있으며, 이러한 측정항목은 해당 측정항목을 생성한 추적과 연결됩니다.

  1. .java 파일 맨 위에서 성능 모니터링 클래스를 가져옵니다.

    Android

    import com.google.firebase.perf.FirebasePerformance;
    import com.google.firebase.perf.metrics.Trace;

  2. 앱에서 추적을 시작할 위치에 해당하는 코드 바로 앞에 다음 코드 줄을 추가하여 test_trace라는 추적을 시작합니다.

    Android

    Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
    myTrace.start();
    
  3. 앱에서 발생하는 성능 관련 이벤트(예: 캐시에 있음 및 캐시에 없음)를 계수하려면 이벤트가 발생할 때마다 다음과 유사한 코드 줄을 추가합니다. 다른 유형의 이벤트를 계수하는 경우 item_cache_hit 또는 item_cache_miss 대신 다른 문자열로 이름을 지정하세요.

    Android

    Item item = cache.fetch("item");
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1);
    } else {
        myTrace.incrementMetric("item_cache_miss", 1);
    }
    
  4. 추적을 중지할 위치에 해당하는 코드 바로 뒤에 다음 코드 줄을 추가합니다.

    Android

    myTrace.stop();
    

(선택사항) @AddTrace 주석을 추가하여 특정 메소드 추적

앱의 메소드에 @AddTrace 주석을 추가하고 결과 추적을 식별하는 문자열을 제공할 수 있습니다. 이렇게 하면 메소드 시작 부분에서 추적이 시작되고 메소드 완료 시 추적이 중지됩니다. 이 방법으로 생성한 추적에는 측정항목이 없습니다.

예를 들어 onCreate() 메소드가 호출될 때 실행되는 onCreateTrace라는 추적을 만들려면 다음과 유사한 코드를 사용합니다.

Android

@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Firebase 콘솔에서 성능 모니터링 결과 확인

  1. Android 스튜디오에서 앱을 빌드합니다.
  2. 최신 이미지 및 Google Play 서비스 15.0.0 이상이 설치된 Android 에뮬레이터 또는 Google Play 서비스 15.0.0 이상이 설치된 테스트 기기를 사용하여 앱을 테스트합니다.
  3. Firebase 콘솔에 성능 모니터링 결과가 나타나는지 확인합니다. 결과는 12시간 이내에 나타납니다.

앱을 배포하고 Firebase 콘솔에서 결과 검토

하나 이상의 테스트 기기를 사용하여 성능 모니터링을 검증한 후 업데이트된 버전의 앱을 사용자에게 배포하고 Firebase 콘솔을 사용하여 성능 데이터를 모니터링 할 수 있습니다.

(선택사항) 특정 네트워크 요청의 모니터링 추가

성능 모니터링에서는 네트워크 요청을 자동으로 수집합니다. 앱의 네트워크 요청이 대부분 포함되지만 일부가 보고되지 않을 수도 있습니다. 성능 모니터링에 특정 네트워크 요청을 포함시키려면 앱에 다음 코드를 추가합니다.

Android
HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

이런 식으로 사용자가 특별히 캡처한 HTTP/s 네트워크 요청은 성능 모니터링에서 자동으로 캡처한 네트워크 요청과 함께 Firebase 콘솔에 표시됩니다.

알려진 문제

  • Firebase 플러그인 버전 1.1.0에서 Guava 종속 항목의 불일치로 인해 다음과 같은 오류가 발생할 수 있습니다.

    Error:Execution failed for task ':app:packageInstantRunResourcesDebug'.
    > com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

    이 오류가 표시되면 1.1.1로 업그레이드하거나 프로젝트 수준 build.gradle 파일의 buildscript ->dependencies 섹션에서 위에 표시된 classpath 명령문을 다음으로 대체합니다.

    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
                exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
  • 성능 모니터링은 OkHttp HTTP 클라이언트 버전 3.xx를 사용하여 작성한 HTTP/S 네트워크 요청에 대한 모니터링만 지원합니다.
  • 성능 모니터링은 HTTP 콘텐츠 길이 헤더에 설정된 값을 기반으로 HTTP/S 네트워크 요청의 총 페이로드 크기를 보고합니다. 이 값은 정확하지 않을 수도 있습니다.
  • 성능 모니터링은 다중 프로세스 Android 앱의 메인 프로세스만 지원합니다.
  • com.google.firebase.firebase-perf gradle 플러그인은 DexGuard와 호환되지 않으므로 DexGuard를 사용하면 자동 추적 및 HTTP/S 네트워크 요청 모니터링이 중지됩니다. 앱에서 DexGuard를 사용하면 SDK를 사용하여 추가한 맞춤 추적은 정상적으로 작동합니다.
  • com.google.firebase.firebase-perf Gradle 플러그인은 지원 중단된 Jack과 호환되지 않습니다.

디버깅 통합

빌드 시 성능 모니터링의 디버그 로그 기록을 사용 설정할 수 있지만, 다음과 같이 앱의 AndroidManifest.xml 파일에서 <application> 요소에 <meta-data> 요소를 추가합니다.

<meta-data
  android:name="firebase_performance_logcat_enabled"
  android:value="true" />

logcat 필터링을 사용하여 추적 및 HTTP/S 네트워크 요청 로그 기록을 볼 수 있습니다. 성능 모니터링 로그 메시지는 FirebasePerformance로 태그가 지정되며 다음 명령을 사용하여 필터링할 수 있습니다.

adb logcat -s FirebasePerformance

다음 단계

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.