2016-07-22 10 views
6

chciałbym zdefiniować build config złożony gdzie mogę użyć zmiennej zdefiniowanej w Gradle skryptu to samo:Gradle buildConfigField z całkowitą zmiennej

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

Ale ta produkuje następujący błąd:

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.

  • mogę używać cytatów jak:

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

    Ale to chodzi o błąd kompilatora w BuildConfig

    // Fields from default config. 
    public static final int SOME_INT_FILED = "512"; 
    

    Więc teraz mogę zostać z:

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

    i używać go lubię:

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

    Czy ktoś ma lepsze rozwiązanie, czy też używam buildConfigField?

    (Próbowałem też za pomocą nawiasów w połączeniu z dowolnym z możliwością powyżej).

    Odpowiedz

    22

    znalazłem rozwiązanie, więc może ta odpowiedź pomoże komuś w przyszłości.

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

    A teraz w java mogę DatabaseVersion zmiennej:

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

    Dzięki, kluczowe jest, aby zdefiniować zmienną jako typu 'string', ale użyć 'int' dla buildConfigField. Dzięki temu niepotrzebne jest rzutowanie i parsowanie. Tego właśnie szukałem. – salcosand

    Powiązane problemy