2012-09-07 9 views

risposta

3

È possibile utilizzare una classe con un valore booleano statico diciamo DEBUG come questo:

public final class BuildMode { 
     public final static boolean DEBUG = true; 
} 

Nel codice, basta usare:

if (BuildMode.DEBUG) ... 

Questa è una soluzione di lavoro su tutte le versioni Android SDK !

+0

'BuildMode.DEBUG' o piuttosto 'BuildConfig.DEBUG'? – pawelzieba

+0

Per quanto ne so, non è possibile utilizzare BuildConfig.DEBUG nelle versioni precedenti di Android. –

1

Quello che sto facendo è la disabilitazione invio periodico, fissando un periodo negativo, in analytics.xml:

<integer name="ga_dispatchPeriod">-60</integer> 

o si può fare a livello di codice, utilizzando la vostra bandiera:

if (testingMode) { 
    GAServiceManager.getInstance().setDispatchPeriod(-1); 
} else { 
    GAServiceManager.getInstance().setDispatchPeriod(60); 
} 

In questo modo i colpi non vengono inviati a meno che non lo fai manualmente.

Questo dovrebbe funzionare se si utilizza solo dispacciamento periodico (non chiamare mai .dispatch() manualmente). I colpi non inviati prima delle 4 del giorno seguente sono in qualche modo scartati, suppongo, poiché non appaiono comunque nei rapporti.

Vedi nella Guida per gli sviluppatori di Google Analytics:

Nota: I dati devono essere spediti e ricevuti dai 04:00 del giorno seguente, nel fuso orario locale di ciascun profilo. Qualsiasi dato ricevuto successivamente a di quello non verrà visualizzato nei report.

Maggiori informazioni: https://developers.google.com/analytics/devguides/collection/android/v2/dispatch

9

UPDATE: Con il rilascio di Google Analytics v3 for Android,

L'SDK fornisce una bandiera DryRun che, quando insieme, impedisce qualsiasi dato da vengono inviati a Google Analytics. Il flag dryRun deve essere impostato ogni volta che si sta testando o eseguendo il debug di un'implementazione e non si desidera che i dati del test vengano visualizzati nei rapporti di Google Analytics.

Per impostare il flag funzionamento a secco:

// Quando il funzionamento a secco è impostato, colpi non saranno spediti, ma sarà ancora registrata come se essi sono stati spediti.

GoogeAnalytics.getInstance (questo).setDryRun (true);

+++ Il mio vecchio risposta +++

Basta commentare la seguente riga nel file analytics.xml mentre si è in modalità di sviluppo.

<string name="ga_trackingId">UA-****</string> 

Google Analytics non saremmo in grado di trovare qualsiasi monitoraggio id, in modo EasyTracker non sarà in grado di fare il suo lavoro. Quando crei l'app per il rilascio, decommenta la linea e sei a posto.

+2

Sono curioso, puoi impostare il flag 'dryRun' con' EasyTracker'? – theblang

1

La mia tecnica è quella di cambiare il android:versionName in Android Manifest fino al momento del rilascio.

Ad esempio, 1.0.0.ALPHA fino al momento in cui creare un APK di rilascio, a questo punto è possibile passare a 1.0.0. In questo modo puoi ancora vedere tutti i rapporti sugli arresti anomali in seguito, ma verranno raggruppati in analisi.

This SO ticket colloqui su come usare la bandiera BuildConfig.DEBUG per configurare in modo condizionale analisi e Atul Goyal's risposta fa riferimento la bandiera dryRun in v3. Queste due cose potrebbero essere una bella installazione se non ti interessa vedere i rapporti sugli arresti anomali durante il debug in futuro, e supponendo che il flag BuildConfig.DEBUG funzioni correttamente.

15

Credo che il modo corretto di fare questo con la versione 4 di Analytics è con il metodo Opt Out

GoogleAnalytics.getInstance(this).setAppOptOut(true); 

È possibile impostare tale metodo per impostare se si costruisce in modalità debug. vale a dire.

GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG); 

Sto usando qualcosa di simile per consentire agli utenti di opt-out di analisi.

ho trovato queste informazioni a lui seguente link: https://developers.google.com/analytics/devguides/collection/android/v4/advanced

Edit: appena ha visto la data della domanda originale, ma il pensiero vorrei aggiungere questa risposta comunque come era qualcosa che cercavo.

4

Se si sta creando un'app standalone (non una libreria), questo sarà il modo più semplice per farlo, lasciare che sia il sistema di build a capire se si tratta di una build di debug o meno.

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

vedo sul web che questo metodo non funziona bene per i progetti di libreria in quanto v'è bug nei tool di sviluppo, che non imposta il flag BuildConfig.DEBUG correttamente per le librerie. Non sono sicuro se questo problema è stato risolto ora.

0

Ho un approccio diverso a questo problema. A volte vuoi ancora verificare che l'analitica funzioni correttamente, ma vuoi semplicemente filtrare i dati di test nei rapporti di produzione. La mia soluzione è quella di creare una dimensione con ambito sessione personalizzato (ad esempio AppBuild), in GA per la proprietà che tiene traccia se si sta eseguendo una build di debug o produzione dell'app. Nel codice dopo aver creato il Tracker, messo:

// replace 1 with the correct dimension number if you have other dimensions defined 
tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production"); 

di creare o modificare la visualizzazione GA per aggiungere un filtro su AppBuild, ad esclusione di debug. Questo dovrebbe filtrare tutti i dati di debug dalla tua vista GA. Puoi anche aggiungere una nuova vista per mostrare i dati di debug.