Kotlin DSL从其他文件中检索密钥

我正在尝试将gradle文件切换到Kotlin DSL。我的项目正在打电话 API。

build.gradle(app)中,我有一个函数可以检索存储在另一个数据库中的api密钥 文件keys.properties

(针对example)出现问题后,我重新编写了函数以获取 键。我在build.gradle.kts中编写了以下函数:

import import java.io.File

fun readFileLineByLineUsingForEachLine2(fileName: String): HashMap<String,String>{
    val items = HashMap<String,String>()

    File(fileName).forEachLine {
        items[it.split("=")[0]] = it.split("=")[1]
    }

    return items
}

然后我设置一个变量来保存特定键的值:

buildConfigField(String!,"API_KEY",returnmapOfKeys()["API_KEY"])

修复了一些错误后,我陷入了以下错误:

app/build.gradle.kts:49:36: Expecting ')'

指向上方buildConfigField的那一行。

有人知道这个错误在哪里吗?

还是有人知道如何使用Kotlin DSL从文件中检索密钥?

ff136158 回答:Kotlin DSL从其他文件中检索密钥

我解决了我的问题(似乎是这样。检查修改!)。我得到了以下功能:

// Retrieve key for api
fun getApiKey(): String {
    val items = HashMap<String,String>()
    val f = File("keys.properties")

    f.forEachLine {
        items[it.split("=")[0]] = it.split("=")[1]
    }

    return items["API_KEY"]!!
}

然后我按如下方式致电buildConfigField

buildConfigField("String","API_KEY",getApiKey())

这部分不再有错误。

编辑

一旦我修复了build.gradle.kts中的所有错误,项目的构建就会返回找不到文件keys.properties的信息:我必须修复函数getApiKey。最后,我可以使用以下实现构建并运行我的项目:

// Return value of api key stored in `app/keys.properties`
fun getApiKey(): String {
    val items = HashMap<String,String>()

    val fl = rootProject.file("app/keys.properties")

    (fl.exists())?.let {
        fl.forEachLine {
            items[it.split("=")[0]] = it.split("=")[1]
        }
    }

    return items["API_KEY"]!!
}

此功能与其所有硬编码的东西都远远不够,但它允许构建我的项目。

,

替代

import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties

val apiKey = gradleLocalProperties(rootDir).getProperty("key.properties")

..

buildConfigField("String","\"$apiKey\"")
本文链接:https://www.f2er.com/3028562.html

大家都在问