Как объявить переменную в Gradle и распечатать ее в другом файле Gradle - PullRequest
1 голос
/ 24 июня 2019

Я новичок в Gradle.Я провел некоторое исследование о том, как объявить переменную в gradle, и нашел кое-что в build.gradle.Моя проблема заключается в том, как объявить переменную, значение которой изменяется в некоторых условиях, и получить доступ к переменной в другом файле gradle, который является моим собственным custom.gradle

. Я не уверен, что это правильный способ объявления переменной.

defaultConfig {
   buildConfigField "boolean", "INTERNET_CHECK", "true"
}

После этого я пытался напечатать переменную в другом custom.gradle, выдает ошибку.Ниже показано, как я печатаю переменную в custom.gradle

println(INTERNET_CHECK)
println(BuildConfig.INTERNET_CHECK)

Ошибка:

 Could not get unknown property 'INTERNET_CHECK' for DefaultConfig_Decorated{................}

И еще одна вещь - это то, что она не присваивает другое значение в INTERNET_CHECK в некоторых условияхблоки типа if/else и распечатка переменной, которую она дает null, а также не присваивание значения другой переменной.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Вивек, я не понимаю твоей ошибки.
Мои наблюдения

1.  buildConfigField "boolean", "SUPPORTS_THIRD_PARTY_SYSTEMS", "" + SUPPORTS_THIRD_PARTY_SYSTEMS

You need to define this variable SUPPORTS_THIRD_PARTY_SYSTEMS.

2. logger.error(BuildConfig.BUILD_TIME + " ")
   It could be logger.error("BuildConfig.BUILD_TIME=" + BUILD_TIME)

3. One example on how to print data defined in defaultConfig {} block.
println defaultConfig.targetSdkVersion.mApiLevel

app / build.gradle для использования signconfigs в другом стиле.

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.compileSdkVersion
    flavorDimensions "default"
    lintOptions {
        // ignore lint errors related with following issue ID
        disable 'MissingTranslation', 'NotSibling', 'ExtraTranslation'
    }
    ext{
        APP_LABEL = "@string/app_label"
        APP_ICON = "@drawable/app_icon"

    }
    defaultConfig {
        applicationId "com.ranjan.example"
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        buildToolsVersion = rootProject.buildToolsVersion
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        debug {
            signingConfig null
            // this make the debug build take the flavor certificate instead of google debug one
        }
        release {
            // Don't do code optimization, it is creating issue with NDK
            shrinkResources false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    signingConfigs {
        XYZ {
            keyAlias 'asXYZ'
            keyPassword 'ASXYZ02018#033'
            storeFile file('keystore/xyz.keystore')
            storePassword 'AXY02018#033'
        }

        //add another block for new sign config
    }

    productFlavors {
        ABCD {
            // application ID change is not working properly in middleware
            applicationId "com.ranjan.abcd"

            def ApplicationName = "com.ranjan.newApp"

            //Use signconfig defined earlier
            signingConfig signingConfigs.XYZ

            manifestPlaceholders = [applicationLabel: APP_LABEL, applicationIcon: APP_ICON, applicationBanner: APP_BANNER]

     .

            buildConfigField("String", "APP_NAME", "\"${ApplicationName}\"")

        }

        //add other block for new flavor
    }
    sourceSets {
        main {
            java.srcDirs = ['src/main/java']
            aidl.srcDirs = ['src/main/aidl']
            renderscript.srcDirs = ['src/main/rs']
            jni.srcDirs = []
            jniLibs.srcDirs = []
            res.srcDirs = ['src/main/res']
            assets.srcDirs = []
        }
        test{
            java.srcDirs = ['test']
        }
        productFlavors.all {
            flavor ->
             if (flavor.name.startsWith("ABCD")) {

                    getProperty(flavor.name + "Debug").assets.srcDirs = ["src/main/assets"]
                    getProperty(flavor.name + "Release").assets.srcDirs = ["src/main/assets"]
                    getProperty(flavor.name + "Debug").jniLibs.srcDirs = ["src/main/jniLibs"]
                    getProperty(flavor.name + "Release").jniLibs.srcDirs = ["src/main/jniLibs"]
             }
        }
    }
    packagingOptions {
        exclude 'error_prone/Annotations.gwt.xml'
        exclude 'third_party/java_src/error_prone/project/annotations/Annotations.gwt.xml'
        exclude 'third_party/java_src/error_prone/project/annotations/Google_internal.gwt.xml'
        exclude  'jsr305_annotations/Jsr305_annotations.gwt.xml'
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'junit:junit:4.12'
    implementation 'com.android.support:support-annotations:28.0.0'
    androidTestImplementation ('com.android.support.test:runner:1.0.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestImplementation ('com.android.support.test.espresso:espresso-core:3.0.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }

}
0 голосов
/ 25 июня 2019

println должен работать, если это не работает, используйте logger. посмотрите на это https://docs.gradle.org/current/userguide/logging.html#sec:sending_your_own_log_messages

Для объявления и использования переменных см. https://developer.android.com/studio/build/gradle-tips#share-custom-fields-and-resource-values-with-your-app-code

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...