Подтвердить что ты не робот

Android - Как получить вкус AppId

Я создаю приложение с различными вариантами вариантов сборки. Ароматы "Свободный" и "Платный". Я хочу создать некоторую логику для своих классов 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"
    }

Как только у меня есть идентификатор приложения, я могу сделать что-то вроде этого:

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

Можно ли сказать, что во время процесса сборки gradle "applicationId" в конечном итоге становится "именем пакета" после того, как приложение было скомпилировано? Если да, то каков наилучший способ получить либо "идентификатор приложения", либо "имя пакета", чтобы я мог реализовать некоторую зависящую от вкуса логику в своих java файлах?

4b9b3361

Ответ 1

Я бы использовал переменные конфигурации сборки в ваших продуктах. Что-то вроде:

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 от вашего имени.

Ответ 2

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

Просто напишите: Log.d( "Идентификатор приложения:", 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/