작성
·
926
0
해당 부분 에서 FirebaseAuth, Firebase는 자동으로 import가 되는데 Firebase.auth 부분에서 뒤에 auth가 자동 import가 뜨질 않고 Unresolved reference:auth 에러가 계속 발생합니다. 한 번만 확인해주시면 감사하겠습니다.
// LoginActivity
package com.fitdback.userinterface
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.Toast
import com.fitdback.pointdetection.R
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.ktx.Firebase
class LoginTestActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login_test)
// Initialize Firebase Auth
auth = Firebase.auth
val btnAnonymousLogin = findViewById<Button>(R.id.btnAnonymousLogin)
btnAnonymousLogin.setOnClickListener {
auth.signInAnonymously()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d("LoginTestActivity", "signInAnonymously:success")
val user = auth.currentUser
// updateUI(user)
} else {
// If sign in fails, display a message to the user.
Log.w("LoginTesetActivity", "signInAnonymously:failure", task.exception)
Toast.makeText(
baseContext, "Authentication failed.",
Toast.LENGTH_SHORT
).show()
// updateUI(null)
}
}
}
}
}
// build.gradle(app)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion buildConfig.compileSdk
defaultConfig {
applicationId 'com.fitdback.userinterface'
minSdkVersion buildConfig.minSdk
targetSdkVersion buildConfig.targetSdk
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
cppFlags "-std=c++11","-frtti", "-fexceptions"
}
}
ndk {
abiFilters 'armeabi-v7a'
}
}
// externalNativeBuild {
// cmake {
// path "CMakeLists.txt"
// }
// }
lintOptions {
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
aaptOptions {
noCompress "tflite"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
repositories {
maven {
url 'https://google.bintray.com/tensorflow'
}
flatDir {
dirs 'libs'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':openCVLibrary341')
implementation deps.kotlin.stdlib.jdk
// implementation(name:'tensorflow-lite', ext:'aar')
implementation deps.android.support.appcompatV7
implementation deps.android.support.constraintLayout
implementation deps.android.support.design
implementation deps.android.support.annotations
implementation deps.android.support.supportV13
implementation deps.timber
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:29.2.1')
// Declare the dependency for the Firebase Authentication library
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-auth-ktx'
testImplementation deps.junit
androidTestImplementation(deps.android.test.espresso, {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
답변 4
0
안드로이드 스튜디오 최신 정식 릴리즈 버전(범블비),
코틀린 1.6.20 에서는 정상 작동하는 것을 확인했습니다.
대체 1.4.32에서는 왜 안되는 건지... 😥
선생님꼐서는 혹시 코틀린 버전 상관없이 잘 되시는 건가요..?
기존 프로젝트에서 사용하던 라이브러리들이 1.6 이상에서는 바뀐 문법 때문인지 에러가 계속 발생해서요 ㅠㅠ
'firebaseAuth = FirebaseAuth.getInstance()'
선생님 혹시 대신에 위 방식으로 쭉 대체해서 써도 괜찮을까요..? 나중에 Firebase DB도 사용하고 그럴텐데 혹여 나중가서 문제가 발생할 지 않을 지 걱정이 됩니다.. 🤣🤣🤣
넵 말씀해주신대로 이전 버전을 사용하시면 문제가 발생할 가능성이 있습니다.
기존 라이브러리를 변경하기 어려우시면, 이전 버전으로 다운그레이드 하셔서 사용하시고 생기는 트러블을 처리하셔야 할 것 같습니다 :)
0
확인해보니
import com.google.firebase.auth.ktx.auth
이 부분이 import가 안된거 같은데요.
위의 부분 추가해보니 잘 됩니다.
0
안녕하세요
코드를 보니, 개인 프로젝트와 코드가 이것저것 섞인 것 같은데
Firebase로그인 부분만 별도로 만들어서 공유해주시겠어요?
새롭게 프로젝트를 만드셔서 MainActivity에 Firebase Auth부분만 구현하셔서 깃허브에 올려주시면 살펴보겠습니다.
말씀하신대로 올렸습니다! 살펴봐주셔서 감사합니다!!
// 추가
아래 플러그인을 추가해봐도 같은 증상입니다..!
'com.google.gms.google-services'
저도 .auth를 인식하지 못해서 rebuild해보니
동일한증상이 발생하여 좀찾아봤는데 코틀린 버전을 올려주니까되네요.
에러메세지는 아래와같구요
java.com.google.android.libraries.firebase.firebase_analytics_ktx_granule.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
프로젝트 build.gradle고치고 sync맞춘다음 rebuild하면 잘됩니다.
이문제가맞나 싶어서 해당부분만 다시 지우고 rebuild하면 똑같은 에러가 뜨네요.ㅎㅎ
ext.kotlin_version ="1.8.0"하고
dependencies안에 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
이부분만 추가했습니다.
haero님은 에러메세지를보니 1.6.0으로 하시면되지않을까 싶네요
buildscript {
ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
선생님께서 말씀해주신 방법대로 전부해보았으나 역시 '.auth' 부분을 인식할 수 없다고 뜹니다 ㅠㅠ
e: C:\Projects\Android\Lec_Firebase_LoginEX\app\src\main\java\com\preferkim\lec_firebase_loginex\MainActivity.kt: (22, 25): Class 'com.google.firebase.auth.ktx.AuthKt' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.2.
The class is loaded from C:/Users/shine/.gradle/caches/transforms-2/files-2.1/5ffb82c9e1b94a920f4ac7f686cb7b1d/jetified-firebase-auth-ktx-21.0.2-api.jar!/com/google/firebase/auth/ktx/AuthKt.class
위는 에러 전문이고 해결법이 보통 1.4.32 코틀린 버전을 쓰라는 것인데
이미 1.4.32를 쓰고 있는 중입니다.. 스튜디오가 4.1.3이라서 그런 걸까요...?
또, 급한대로 일단 프로젝트에서는
방식으로 대체해서 쓰고 있는 중인데 파이어베이스에서도 잘 인식이 되서(로그인 정보가 보입니다) 그냥
' .auth ' 방식을 쭉 대체해서 써도 괜찮을까요..?
주말에도 답변해주셔서 정말 감사드립니다! (꾸벅)