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

Как получить вариант сборки во время выполнения в Android Studio?

Я хочу получить вариант сборки во время выполнения, возможно ли это без каких-либо дополнительных настроек или кода?

4b9b3361

Ответ 1

Посмотрите на сгенерированный класс BuildConfig.

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLCATION_ID = "com.example.app";
  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 = "";
}

Ответ 2

Другой вариант - создать отдельную конфигурационную конфигурацию сборки для каждого варианта сборки и использовать ее в вашем коде следующим образом:

В файле build.gradle:

productFlavors {

    production {
        buildConfigField "String", "BUILD_VARIANT", "\"prod\""
    }

    dev {
        buildConfigField "String", "BUILD_VARIANT", "\"dev\""
    }       
}

Чтобы использовать его в своем коде:

if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }

Ответ 3

Вы можете попробовать с помощью

getPackageName(); 

он вернет то, что вы определили в build.gradle

productFlavours{
  flavour1{
     applicationId 'com.example.package.flavour1'
  }
  flavour2{
     applicationId 'com.example.package.flavour2'
  }
}

Ответ 4

Вот пример, чтобы определить и получить BuildConfig для другого вкуса

android {

    defaultConfig {
        ...
    buildTypes {
        ...
    }

    flavorDimensions "default"
    productFlavors {

        develop {
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
        }

        staging {
            applicationIdSuffix ".stg"
            versionNameSuffix "-stg"
        }

        production {
            applicationIdSuffix ""
            versionNameSuffix ""
        }
    }

    applicationVariants.all { variant ->

        def BASE_URL = ""

        if (variant.getName().contains("develop")) {
            BASE_URL = "https://localhost:8080.com/"
        } else if (variant.getName().contains("staging")) {
            BASE_URL = "https://stagingdomain.com/"
        } else if (variant.getName().contains("production")) {
            BASE_URL = "https://productdomain.com/"
        }
        variant.buildConfigField "String", "BASE_URL", "\"${BASE_URL}\""

    }
}

С помощью

BuildConfig.BASE_URL

Ответ 5

Если вы уже используете ароматизатор, вам не нужно указывать дополнительное поле в вашем Gradle. Просто следуйте простым шагам, чтобы получить детали сборки:

Для варианта сборки: BuildConfig.FLAVOR
Для кода версии сборки: BuildConfig.VERSION_CODE
Для имени версии сборки: BuildConfig.VERSION_NAME