2015-09-27 15 views
12

Buduję aplikację z różnymi wariantami smaków. Smaki są "darmowe" i "płatne". Chcę utworzyć pewną logikę na moich klasach java, która powinna zostać uruchomiona tylko wtedy, gdy aplikacja jest "Płatna". Dlatego potrzebny jest sposób, aby uzyskać „applicationId” ustawiony podczas Gradle procesu kompilacji, jak pokazano poniżej:Android - jak zdobyć ApplicationId smaku

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" 
    } 

Raz mam identyfikator aplikacji mógłby zrobić coś takiego:

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

jestem prawdą, że podczas procesu Gradle zbudować „applicationId” w końcu staje się „nazwę pakietu”, gdy aplikacja została skompilowana? Jeśli tak, jaki jest najlepszy sposób uzyskania "identyfikatora aplikacji" lub "nazwy pakietu", aby móc zaimplementować pewną logikę zależną od smaku w moich plikach java?

Odpowiedz

20

Chciałbym używać zmiennych konfiguracyjnych konfiguracji w Twoich produktach. Coś wzdłuż linii:

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" 
    } 
} 

Następnie po kompilacji można użyć:

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

Być może trzeba będzie zrobić synchronizację/zbudować na Gradle po dodaniu atrybutu zanim będzie można skompilować i import klasa BuildConfig generowana przez Gradle w twoim imieniu.

10

Znalazłem najlepsze rozwiązanie, aby uzyskać wszystkie wartości, takie jak IDENTYFIKATORA APLIKACJI, BUILD_TYPE, SMAK, VERSION_CODE i VERSION_NAME:.

Wystarczy napisać: Log.d ("Identyfikator aplikacji:", BuildConfig.APPLICATION_ID); w twoim kodzie. Dostarczy on APPLICATION_ID twojego smaku.

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 = ""; 
} 

Więcej szczegółów można odnieść ten link: http://blog.brainattica.com/how-to-work-with-flavours-on-android/

+0

najlepszym rozwiązaniem, powinny być przyjmowane –

Powiązane problemy