Android Kotlin - не может разрешить пожарную базу - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь включить 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 в функции остается красным.

Что я делаю не так?

1 Ответ

0 голосов
/ 13 февраля 2020

Возможно, вам понадобится убедиться, что вы включили репозитории Google, чтобы найти Firebase.

С здесь :

a) в gradle уровня проекта

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

б) в граделе уровня приложения

apply plugin: 'com.android.application'
// Add the following line:
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

android {
  // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...