应用干净的体系结构时如何在build.gradle中加载属性?

时间:2019-03-20 05:24:14

标签: android gradle android-gradle build.gradle

我是一名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 ... 你能帮我吗?

0 个答案:

没有答案