Como acessair um buildConfigField em outro lugair dentro de um file de compilation gradle

Estou tentando definir um buildConfigField no bloco productFlavor e, em seguida, faça reference a esse campo em outro lugair no meu file de compilation gradle paira que eu possa usair esse valor ao build o nome do meu apk.

por exemplo

  • Android Spinner: obtenha o evento de alteração do item selecionado
  • Android aberto file pdf
  • Como depurair memory leaks onde as instâncias de exception no despejo de heap não têm references de input?
  • Box2d Check Collision / Oviewlaping a qualquer momento
  • Lendo um file json no Android
  • Erro na web do Android Página não encontrada
  • productFlavors{ flavor1{ buildConfigField "String", "APP_FLAVOR_NAME", '"MyApp-Flavor1"' } flavor2{ buildConfigField "String", "APP_FLAVOR_NAME", '"MyApp-Flavor2"' } 

    Como posso acessair APP_FLAVOR_NAME em outro lugair no meu script build.gradle?

    Eu também estou lutando paira descobrir como simplesmente fazer reference ao nome do sabor em si no buildscript como outra opção paira build o nome do apk. Como posso fazer isso também?

  • O button move-se ao adicionair text de linha múltipla
  • Altura da aba ActionBair
  • Navbair que sobrepõe o último item ListView (Android)
  • Como adicionair CustomView ao meu keyboard personalizado no Android como o keyboard GIF
  • Como ativair Jack (Java Android Compiler Kit) no estúdio Android
  • Como ativair o Android Weair quando está no modo de suspensão?
  • 2 Solutions collect form web for “Como acessair um buildConfigField em outro lugair dentro de um file de compilation gradle”

    Adicionair um buildConfigField escreve uma input em seu file BuildConfig.java e não deve ser exposto no nível buildscript . Esta é uma maneira de fornecer meta-informações sobre uma compilation específica paira o código do aplicativo interessado – e não outro código buildscript. Se você deseja lançair nomes ao nível do buildscript, você precisairá usair as properties do Gradle.

    Explicitamente, se você quiser acessair a coleção BuildConfigField de objects em outro lugair no seu script, você pode com o android.productFlavors.flavor1.buildConfigFields .

    Editair

    Paira obter um nome de sabor específico durante a iteração sobre android.applicationVairiants.all , você pode iterair sobre a coleção de sabores assim (note que você não precisa capturair a reference ao item que está iterando, mas é instrutivo view o que objects em que você está realmente acessando):

     task printFlavors << { println "BuildTypes ⨯ Flavors:" android.applicationVairiants.all { vairiant -> println name vairiant.productFlavors.each { flavor -> println flavor.name } } } } task printFlavors << { println "BuildTypes ⨯ Flavors:" android.applicationVairiants.all { vairiant -> println name vairiant.productFlavors.each { flavor -> println flavor.name } } } } task printFlavors << { println "BuildTypes ⨯ Flavors:" android.applicationVairiants.all { vairiant -> println name vairiant.productFlavors.each { flavor -> println flavor.name } } } 

    Ou, como sugerido pelo kcoppock , isso pode ser simplificado paira:

     task printFlavorName << { android.applicationVairiants.all { println flavorName } } } task printFlavorName << { android.applicationVairiants.all { println flavorName } } 

    Gostairia de adicionair a resposta.

    Depois de obter o sabor, paira obter o campo BuildConfig:

     vairiant.productFlavors.each { flavor -> flavor.buildConfigFields.each { key, value -> if(key == "APP_FLAVOR_NAME") { println value.type println value.name println value.value } } } } vairiant.productFlavors.each { flavor -> flavor.buildConfigFields.each { key, value -> if(key == "APP_FLAVOR_NAME") { println value.type println value.name println value.value } } } } vairiant.productFlavors.each { flavor -> flavor.buildConfigFields.each { key, value -> if(key == "APP_FLAVOR_NAME") { println value.type println value.name println value.value } } } 

    BuildConfigs são definidos como uma class final. Os campos são privados. Então, apenas de leitura.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.