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

通过静态编程语言DSL从local.properties读取值

林国安
2023-03-14

我想从< code>local.properties文件中检索如下所示的密钥:

sdk.dir=C\:\\Users\\i30mb1\\AppData\\Local\\Android\\Sdk
key="xxx"

并通过gradle静态编程语言DSL将此值保存在我的BuildConfig.java中。稍后可以从我的项目中访问该字段。

共有3个答案

刁跃
2023-03-14

将您的房产放在本地。属性

在build.gradle(app). kts文件中引用它:gradleLocalProperties(rootDir). getProperty("YOUR_PROP_NAME")

锺离浩慨
2023-03-14

如果您无权访问gradleLocalProperties(仅适用于android项目):

val prop = Properties().apply {
    load(FileInputStream(File(rootProject.rootDir, "local.properties")))
}
println("Property:" + prop.getProperty("propertyName"))

不要忘记导入:

import java.io.File
import java.io.FileInputStream
import java.util.*
夏侯旻
2023-03-14

好吧。我找到解决办法了。

对于Android项目:

    < li >在我的build.gradle.kts中,我创建了一个检索我的密钥的值:
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties

val key: String = gradleLocalProperties(rootDir).getProperty("key")
buildTypes {
 getByName("debug") {
    buildConfigField("String", "key", key)
   }
}
override fun onCreate() {
    super.onCreate()
    val key = BuildConfig.key
}

对于Kotlin项目:

  1. 我们可以创建一个扩展,帮助我们检索所需的密钥:
fun Project.getLocalProperty(key: String, file: String = "local.properties"): Any {
    val properties = java.util.Properties()
    val localProperties = File(file)
    if (localProperties.isFile) {
        java.io.InputStreamReader(java.io.FileInputStream(localProperties), Charsets.UTF_8).use { reader ->
            properties.load(reader)
        }
    } else error("File from not found")

    return properties.getProperty(key)
}
task("printKey") {
   doLast {
       val key = getLocalProperty("key")
       println(key)
   }
}
 类似资料:
  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • > 如何将选择查询映射到类 是否有任何@transactional操作来执行查询?

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 我创建了一个版本.,就像这样: 现在我想像这样导入和使用该文件: 我该怎么做? 注意:我已经看到这篇文章,但它不完全是我搜索…

  • 我使用的是Gradle 5.5,我有一个基于Groovy的构建脚本,我正试图将其迁移到Kotlin DSL。任务包含将所有依赖项复制到jar文件的典型行: 我找不到一种方法来把这一行翻译成Kotlin DSL。 让我给你一些背景知识。这是我最初基于Groovy的构建脚本: 这是我基于静态编程语言的构建脚本。它运行良好,除了一行: