2015-09-27 6 views
12

Sto costruendo un'app con arguzia diversa. I gusti sono "Gratuito" e "Pagato". Voglio creare una logica sulle mie classi java che dovrebbero essere attivate solo se l'app è "Pagata". Quindi ho bisogno di un modo per ottenere il "ApplicationId" ambientato durante il processo di compilazione Gradle come illustrato di seguito:Android - Come ottenere l'applicazione di Flavio

gradle.build

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
    } 

Una volta che ho l'ID di applicazione avrei potuto fare qualcosa di simile:

if(whateverpackageid.equals("paid")) { 
     // Do something or trigger some premium functionality. 
    } 

ho ragione a dire che durante il processo di compilazione Gradle il "applicationId" alla fine diventa il "nome del pacchetto" una volta che l'applicazione è stata compilata? In tal caso, qual è il modo migliore per ottenere "l'ID dell'applicazione" o il "nome del pacchetto" in modo da poter implementare una logica dipendente dall'aroma nei miei file java?

risposta

20

Vorrei utilizzare le variabili di configurazione di generazione nei sapori del prodotto. Qualcosa sulla falsariga di:

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
     buildConfigField "boolean", "PAID_VERSION", "false" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
     buildConfigField "boolean", "PAID_VERSION", "true" 
    } 
} 

Poi, dopo un accumulo è possibile utilizzare:

if (BuildConfig.PAID_VERSION) { 
    // do paid version only stuff 
} 

potrebbe essere necessario eseguire una sincronizzazione/costruire su Gradle dopo aver aggiunto l'attributo prima di poter compilare e l'importazione la classe BuildConfig che Gradle genera per tuo conto.

10

Ho trovato la soluzione migliore per ottenere tutti i valori come APPLICATION_ID, BUILD_TYPE, FLAVOR, VERSION_CODE e VERSION_NAME.

Basta scrivere: Log.d ("ID applicazione:", BuildConfig.APPLICATION_ID); nel tuo codice. Fornirà APPLICATION_ID del tuo gusto.

BuildConfig.java

public final class BuildConfig { 
    public static final boolean DEBUG = Boolean.parseBoolean("true"); 
    public static final String APPLICATION_ID = ""; 
    public static final String BUILD_TYPE = "debug"; 
    public static final String FLAVOR = ""; 
    public static final int VERSION_CODE = 1; 
    public static final String VERSION_NAME = ""; 
} 

Per maggiori dettagli si può fare riferimento questo link: http://blog.brainattica.com/how-to-work-with-flavours-on-android/

+0

migliore soluzione, dovrebbero essere accettati –

Problemi correlati