我是一名Android应用程序开发人员。
如今,我正在研究“清洁建筑”。
所以我试图基于干净的体系结构制作一个示例应用程序。
我将模块从一个(“应用”)分离为三个(“应用”,“数据”,“域”)。
没关系。
然后我在“数据”模块中定义了Repository类。它用于从数据源获取数据。 有两个数据源(远程,缓存)。 这是常规的存储库模式。
在我的示例应用程序中,RemoeDataSource使用翻新获取数据。 其余的API需要“ API KEY”作为查询参数。
我的改造服务类别如下:
@GET("/data}")
fun getData(@Query("api_key") apiKey: String): Single<Data>
问题(问题)是我不知道如何注入API密钥。
在应用干净的体系结构之前,我在local.properties中编写了API KEY,并像下面这样在build.gradle中进行了读取:
android {
...
defaultConfig {
...
buildConfigField "String", "API_KEY", project.properties["API_KEY"]
}
...
}
然后,我可以在代码中使用API密钥。 但是现在,我应用了干净的架构,并且我的“数据”模块与Android依赖项分离了。 我的“数据”模块的build.gradle如下:
apply plugin: 'java-library'
apply plugin: 'kotlin'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
implementation project(':domain')
}
sourceCompatibility = "7"
targetCompatibility = "7"
buildscript {
ext.kotlin_version = '1.3.21'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
// I tried here, but it doesn't work.
// buildConfigField "String", "API_KEY", project.properties["API_KEY"]
}
repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
我不太了解Gradle ... 你能帮我吗?