2012-12-21 26 views
9

Moje pytanie jest dość proste: czy istnieje sposób automatycznego wyłączenia Google Analytics po podpisaniu aplikacji za pomocą certyfikatu debugowania? Oznacza, że ​​powinien być aktywny tylko w wersji Release. Z góry dziękuję.Wyłącz Google Analytics podczas opracowywania

+0

możliwe duplikat [Disable Google Analytics z Android App przy testowaniu i rozwijaniu] (http://stackoverflow.com/questions/12314357/disable-googleanalytics-from-android-app-when-testing-or-developing) – Kiran

Odpowiedz

12

Jeśli używasz ADT 17 i nowszych, możesz użyć BuildC onfig klasa:

if(BuildConfig.DEBUG) { 
    GoogleAnalytics googleAnalytics = GoogleAnalytics.getInstance(getApplicationContext()); 
    googleAnalytics.setAppOptOut(true); 
} 

Klasa BuildConfig jest automatycznie generowany jest jak R.java. Zawiera tylko wartość logiczną DEBUG, która domyślnie jest ustawiona na true, oraz na false podczas eksportowania pliku APK.

+0

Dziękuję, przyjmuję twoją odpowiedź. Ale myślałem, że Google Analytics może mieć jakieś API konfiguracyjne, które pozwalają ustawić takie reguły. – Egor

+0

Nie sądzę, że tak, ale mogę się mylić. Nie bardzo wiem o samej AH. –

+2

Uwaga: BuildConfig.DEBUG wydaje się być wadliwy: https://code.google.com/p/android/issues/detail?id=27940 –

2

Cóż można ustawić go nie być aktywny dość łatwo:

if (...) { 
    GoogleAnalytics ga= GoogleAnalytics.getInstance(getApplicationContext()); 
    ga.setAppOptOut(true); 
} 

ja zwykle po prostu sprawdzić numer seryjny sprzętu niektórych znanych urządzeń wykorzystywanych do testowania:

if (Arrays.asList("x", "y").contains(getHardwareSerial())) 

Gdzie getHardwareSerial() jest:

public static String getHardwareSerial() { 
     try { 
      Field serialField = Build.class.getDeclaredField("SERIAL"); 
      return (String) serialField.get(null); 
     } catch (NoSuchFieldException nsf) { 
     } catch (IllegalAccessException ia) { 
     } 
     return Build.UNKNOWN; 
    } 
1

W najnowszej wersji Google Analytics, należy używać następujący kod:

if(BuildConfig.DEBUG){ 
    GoogleAnalytics.getInstance(this).setDryRun(true); 
}