Android - Как да получите ApplicationId на Flavor

Създавам приложение с различни варианти на компилация. Вкусовете са "Безплатен" и "Платен". Искам да създам някаква логика на моите Java класове, които трябва да се задействат само ако приложението е „Платено“. Следователно имам нужда от начин да получа "applicationId", зададен по време на процеса на изграждане на gradle, както е показано по-долу:

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

След като имам ID на приложението, мога да направя нещо подобно:

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

Правилно ли казвам, че по време на процеса на изграждане на gradle "applicationId" в крайна сметка става "името на пакета", след като приложението бъде компилирано? Ако е така, какъв е най-добрият начин да получа или „ID на приложението“, или „име на пакета“, така че да мога да внедря някаква зависима от вкуса логика в моите java файлове?


person CBA110    schedule 27.09.2015    source източник


Отговори (2)


Бих използвал променливи за конфигурация на компилация във вашите продуктови вкусове. Нещо от рода на:

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

След това след изграждане можете да използвате:

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

Може да се наложи да направите синхронизиране/изграждане на gradle, след като добавите атрибута, преди да можете да компилирате и импортирате класа BuildConfig, който Gradle генерира от ваше име.

person zerobasedindex    schedule 27.09.2015

Намерих най-доброто решение за получаване на всички стойности като APPLICATION_ID, BUILD_TYPE, FLAVOR, VERSION_CODE и VERSION_NAME.

Просто напишете: Log.d("Id на приложение: ",BuildConfig.APPLICATION_ID); във вашия код. Той ще предостави APPLICATION_ID на вашия вкус.

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

За повече подробности можете да се обърнете към тази връзка: http://blog.brainattica.com/how-to-work-with-flavours-on-android/

person Darsh Patel    schedule 23.11.2015