Я пытаюсь включить Firebase (в частности, Firebase Authentication) в мой проект. Я iOS разработчик, который пытается выучить Kotlin, поэтому прошло уже 4 года с тех пор, как я в последний раз касался Android / Android Studio (и определенно никогда не касался Kotlin раньше).
Так что мои знания о Android немного покрыты пылью.
Я также попытался реализовать Чистую Архитектуру, чтобы хорошо начать работу с моим приложением. Поэтому я добавил новый модуль, как описано здесь: https://www.raywenderlich.com/3595916-clean-architecture-tutorial-for-android-getting-started. Я добавил модуль core
, а затем в этот модуль добавил пакеты: domain
, data
и interactors
.
Я добавил это в build.gradle
моего приложения в блоке dependencies
:
implementation project(':core')
Итак, мое приложение знает мой модуль core
.
Файл build.gradle
моего модуля core
выглядит следующим образом:
apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1"
implementation 'com.google.dagger:dagger:2.26'
kapt 'com.google.dagger:dagger-compiler:2.26'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation("io.reactivex.rxjava2:rxkotlin:2.4.0")
}
sourceCompatibility = "7"
targetCompatibility = "7"
Как видите, я также добавил Dagger
для внедрения зависимостей. Это разрешает нормально.
Это файл root Gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
И это файл приложения Gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.charlotteerpels.travellyn"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.dagger:dagger:2.26'
implementation 'com.google.android.gms:play-services-gcm:17.0.0'
implementation project(':core')
kapt 'com.google.dagger:dagger-compiler:2.26'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Сборка / синхронизация Gradle c завершается без ошибок.
Но когда я пытаюсь сделать следующее в простом классе с простой функцией, я получаю ошибку.
val auth = FirebaseAuth.getInstance();
Ошибка: Unresolved reference: FirebaseAuth
. Android Studio также не позволяет импортировать что-либо. Поэтому я попытался добавить импорт самостоятельно в верхней части файла, прямо под строкой package
.
import com.google.firebase.auth.FirebaseAuth
, но это тоже не помогло. В моем файле firebase
при импорте и FirebaseAuth
в функции остается красным.
Что я делаю не так?