2016-07-22 20 views
6

değişken:Gradle buildConfigField tamsayı ben gradle komut kendini tanımlanan bir değişken kullanabilirsiniz nerede bir yapı yapılandırma başvurusu tanımlamak istiyorum

def someVar = 512 
android { 
... 
    buildConfigField 'int', 'SOME_INT_FIELD', someVar 
} 

Ama bu hata aşağıdaki üretir:

Error:(25, 0) Gradle DSL method not found: 'buildConfigField()'

Possible causes:

  • The project 'PROJECT' may be using a version of Gradle that does not contain the method.
  • The build file may be missing a Gradle plugin.
  • def someVar = 0 
    android { 
    ... 
        buildConfigField 'int', 'SOME_INT_FIELD', '"' + someVar + '"' 
    } 
    
    :

    ben gibi tırnak kullanabiliriz 0

    Ama bu bir derleyici hatası geliyor BuildConfig

    // Fields from default config. 
    public static final int SOME_INT_FILED = "512"; 
    
    Ben kalmak Yani şimdilik

    : mi

    def someVar = 0 
    android { 
    ... 
        buildConfigField 'String', 'SOME_INT_FIELD', '"' + someVar + '"' 
    } 
    

    ve kullanmak:

    final int value = Integer.valueOf(BuildConfig.SOME_INT_FIELD); 
    

    Herkes daha iyi bir çözümü var mı, yoksa buildConfigField'ı yanlış mı kullanıyorsunuz?

    (Ben de yukarıdaki olasılık herhangi biriyle birlikte parantez kullanarak çalıştı.)

    cevap

    22

    ben bir çözüm buldum, belki bu cevabı gelecekte birilerine yardımcı olacaktır.

    def String globalVersionCode 
    
    defaultConfig { 
        applicationId "com.test.gradle.build" 
        minSdkVersion 15 
        targetSdkVersion 22 
        versionCode 1 
        versionName "0.1" 
    
        globalVersionCode = versionCode 
    } 
    
    buildTypes { 
        release { 
         buildConfigField ("int", "DatabaseVersion", globalVersionCode) 
        } 
    } 
    

    Ve şimdi java ben DatabaseVersion değişkeni alabilirsiniz:

    public static final int DB_VERSION = BuildConfig.DatabaseVersion; 
    
    +2

    Teşekkür anahtar 'dize' türü gibi değişken tanımlamak, ancak buildConfigField için 'int' kullanmaktır. Bu, herhangi bir döküm ve ayrıştırmayı gereksiz kılar. Aradığım şey bu. – salcosand

    İlgili konular