当前位置: 首页 > 知识库问答 >
问题:

Android-Read构建。类内的gradle属性

蒋胡非
2023-03-14

我希望能够访问build.gradle属性,这样我就可以在我的应用程序中自动化一些流程。

这就是我目前的结构:

RootProject/build.gradle

buildscript {
    ext {
        buildTools = "25.0.2"
        minSdk = 16
        compileSdk = 23
        targetSdk = 23

        versions = [supportLib         : '25.0.0',
                    multidex           : '1.0.1',
                    playServices       : '10.0.1']
        libs = [appcompat            : "com.android.support:appcompat-v7:$versions.supportLib",
               design               : "com.android.support:design:$versions.supportLib"]

        .... Other libraries and setup....

    }
}

rootProject/app/build。格拉德尔

...
dependencies {
    // Support libraries
    compile libs.appcompat
    compile libs.design
    .....
}

我想访问Java和build。gradle端是属性版本和libs变量。我怎样才能做到这一点?

共有2个答案

佟阳云
2023-03-14

使用渐变。属性文件来定义您的值,然后您可以在gradle项目配置中使用此值。

然后,为了能够访问Java android代码中的这些值,请使用“buildConfigField”定义。

格拉德尔。性质

values=value1,value2

建筑格拉德尔

def String[] valuesArray = values.split(',')

android {
    defaultConfig {
        buildConfigField "String[]", "VALUES_ARRAY", "{" +
                "\"" + valuesArray[0] + "\"," +
                "\"" + valuesArray[1] + "\"" +
                "}"
    }
}

在java文件

BuildConfig.VALUES_ARRAY
冯枫涟
2023-03-14

您可以这样做,但是在构建脚本块之外

ext {
    // Version
    supportVersion = '26.0.0'

    // Support Libraries dependencies
    supportDependencies = [
            design:            "com.android.support:design:${supportVersion}",
            recyclerView:      "com.android.support:recyclerview-v7:${supportVersion}",
            cardView:          "com.android.support:cardview-v7:${supportVersion}",
            appCompat:         "com.android.support:appcompat-v7:${supportVersion}",
            supportAnnotation: "com.android.support:support-annotations:${supportVersion}",
    ]

    firebaseVersion = '11.0.2';

    firebaseDependencies = [
            core:         "com.google.firebase:firebase-core:${firebaseVersion}",
            database:     "com.google.firebase:firebase-database:${firebaseVersion}",
            storage:      "com.google.firebase:firebase-storage:${firebaseVersion}",
            crash:        "com.google.firebase:firebase-crash:${firebaseVersion}",
            auth:         "com.google.firebase:firebase-auth:${firebaseVersion}",
            messaging:    "com.google.firebase:firebase-messaging:${firebaseVersion}",
            remoteConfig: "com.google.firebase:firebase-config:${firebaseVersion}",
            invites:      "com.google.firebase:firebase-invites:${firebaseVersion}",
            adMod:        "com.google.firebase:firebase-ads:${firebaseVersion}",
            appIndexing:  "com.google.android.gms:play-services-appindexing:${firebaseVersion}",
    ];
}


// Module build file
dependencies {
    // ...
    compile supportDependencies.appCompat
    compile supportDependencies.design
    compile firebaseDependencies.crash
}

java中,您无法访问构建。gradle文件,因为它们仅在构建时使用。您可以在BuildConfig文件中输入相同的值。在这个文件中有一些预构建的值,比如BuildConfig。VERSION_NAME或您可以使用一些自定义键,如:

android {
    ...
    defaultConfig {
        ...
        // defining the build date
        buildConfigField "long", "BUILD_DATE", System.currentTimeMillis() + "L"
        // define whether this build is a production build
        buildConfigField "boolean", "IS_PRODUCTION", "false"
        // note that to define a string you need to escape it
        buildConfigField "String", "API_KEY", "\"my_api_key\""
    }
}

自动生成的

public class BuildConfig {
    // ... other generated fields ...
    public static final long BUILD_DATE = 1469504547000L;
    public static final boolean IS_PRODUCTION = false;
    public static final String API_KEY = "my_api_key";
}

 类似资料:
  • 例如。 可以更改为 ...什么的。 null

  • 我升级了 Eclipse ADT 插件,并在一个项目上执行了导出,以使用 Gradle,然后将其导入到最新的 Android Studio 0.3.2.中,选择“build.gradle”,就像他们希望你的那样。 我下载了最新的Gradle 1.9,但我收到的错误基本上是“需要Gradle 1.6,找到1.9”。 我让构建达到了抱怨构建中的“依赖项”类路径的地步。 那么,我怎样才能找到它满意的类路

  • 问题内容: 我在Ubuntu上使用Android Studio。我启动了Android Studio,创建了一个“新项目”,并从开始。它引发了以下错误: 它还显示了一个带有圆圈的PNG文件和一个透明背景,文件名为: 在我再次尝试运行该应用程序之后,我现在有2个错误,而不是一个: 您能否帮助我解决问题? 问题答案: Android尚未为64位ubuntu构建SDK,从错误中我可以说您正在64位OS上

  • 我已经将我的Android Studio版本更新到了0.2.1,从那以后,当我打开一个干净的新项目并试图构建+运行它时,我得到了以下错误: 异常构建进程终止:错误:无法找到或加载主类文件

  • 在我的模块构建脚本(build.gradle)中,我可以设置依赖项: Gradle示例8.2 我还可以在构建脚本中使用方法并设置依赖项: 如果构建脚本需要使用外部库,可以将它们添加到构建脚本本身的脚本类路径中。您可以使用buildscript()方法来实现这一点,并传入一个声明构建脚本类路径的闭包。 Gradle示例59.6 我的问题,这些是一样的吗?这两种为构建脚本设置依赖关系的方式有什么区别吗

  • 我安装了Android Studio 2.2。2使用Debian Jessie上的必要软件包并检查更新 当gradle构建开始时,我有2个错误: 错误:java.lang.运行时间异常:CrunchingCruncherlauncher.png失败,请参阅日志错误:任务执行失败:应用程序:mergeDebugResources。 我在这个论坛上寻找答案,我试图通过编辑/res/drawable文件