android - kotlin DSL 从其他文件中检索 key

标签 android kotlin build.gradle gradle-kotlin-dsl

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

build.gradle(app) 中,我有一个函数来检索存储在另一个中的 api key 文件 keys.properties

出现一些问题后(对于 example)我重写了函数以获得 key 。我在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 从文件中检索 key 吗?

最佳答案

我解决了我的问题(看起来是这样..检查修改!!)。我最终得到了以下功能:

// 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"]!!
}

这个函数对于它所有的硬编码的东西来说还远远不够好,但它允许构建我的项目。

关于android - kotlin DSL 从其他文件中检索 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052655/

相关文章:

android - 字体下意外的关键 Assets ((String)) - flutter 和 dart 中的移动应用程序错误

android - 窗口甚至在 dialog.dismiss() 上泄漏

java - 如何为 DynamoDB 设置时区在 spring 数据中自动生成时间戳

android - 从 Firebase Cloud Functions 调用 Facebook 图形 API

android - 如何通过另一个 Activity 刷新 viewpageadapter 中的 fragment

kotlin - 在生成 equals()、hashCode() 等时忽略某些属性

interface - 如何在 Kotlin 中实例化实现接口(interface)的匿名类

android - Gradle : Could not publish configuration archives

android - 合并Gradle的不同buildType任务名称

Gradle - 找不到方法 wrapper() - 依赖项目