通过local.propertiesKotlinDSL从www.example.com读取值

wfauudbj  于 2023-06-06  发布在  Kotlin
关注(0)|答案(4)|浏览(418)

我想从local.properties文件中检索密钥,该文件如下所示:

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

并通过GradleKotlinDSL将此值保存在我的BuildConfig.java中。然后从我的项目中访问此字段。

nhn9ugyo

nhn9ugyo1#

好吧我找到解决办法了

Android项目:

1.在我的build.gradle.kts中,我创建了一个值来检索我的键:

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

val key: String = gradleLocalProperties(rootDir).getProperty("key")

1.在块buildTypes中,我写:

buildTypes {
 getByName("debug") {
    buildConfigField("String", "key", key)
   }
}

1.在我的Activity中,现在我可以检索这个值:

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)
}

1.当我们需要的时候使用这个扩展

task("printKey") {
   doLast {
       val key = getLocalProperty("key")
       println(key)
   }
}
wljmcqd8

wljmcqd82#

如果您没有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.*
cngwdvgl

cngwdvgl3#

把你的财产在local.properties
并在build.gradle(app).kts文件中引用如下:gradleLocalProperties(rootDir).getProperty(“YOUR_PROP_NAME”)

kadbb459

kadbb4594#

对我来说,Android项目的完整解决方案是:
1 -把你的钥匙放在当地的房产里。
2 - in build.gradle.kts =>添加2行

val key: String = gradleLocalProperties(rootDir).getProperty("KEY") ?: ""
buildConfigField("String", "KEY", "\"$key\"")

==现在你可以像这样在代码中获取密钥:

val key = BuildConfig.KEY

相关问题