Я разработчик приложений для Android.
В настоящее время я изучаю «Чистую архитектуру».
Поэтому я пытаюсь создать пример приложения на основе чистой архитектуры.
Я разделил модули только от одного («приложение») до трех («приложение», «данные», «домен»).
Все в порядке.
И я определил класс репозитория в модуле «data». Он используется для получения данных из источников данных.
Существует два источника данных (Remote, Cache).
Это общий шаблон хранилища.
В моем примере приложения RemoeDataSource получает данные с помощью Retrofit.
А остальным API требуется «API KEY» в качестве параметра запроса.
Ниже указан мой класс обслуживания:
@GET("/data}")
fun getData(@Query("api_key") apiKey: String): Single<Data>
Проблема (вопрос) в том, что я не знаю, как я могу ввести ключ API.
Перед применением чистой архитектуры я написал API KEY в local.properties и прочитал в build.gradle, как показано ниже:
android {
...
defaultConfig {
...
buildConfigField "String", "API_KEY", project.properties["API_KEY"]
}
...
}
Тогда я могу использовать ключ API в своем коде.
Но теперь я применил чистую архитектуру, и мой модуль «данных» отделен от зависимости Android.
Мой build.gradle модуля «data» находится ниже:
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"
}
}
Я не очень хорошо знаю про Градл ...
Не могли бы вы помочь мне, пожалуйста?