在此过程中默认 FirebaseApp 未初始化...请确保先调用 FirebaseApp.initializeApp(Context)

问题描述 投票:0回答:4

我正在尝试将数据添加到 firestore。我也想用匕首来做到这一点。但我不断收到此错误。你能帮我吗......

** 默认 FirebaseApp 在此进程 com.example.vvvv 中未初始化。确保首先调用 FirebaseApp.initializeApp(Context)。 **

Firestore存储库

class FirestoreRepository @Inject constructor(private val usersRef: 
CollectionReference) {

fun saveSearchResults(userEntities: List<UserEntity>) {
    usersRef.add(userEntities).addOnCompleteListener { task ->
        when (task.isSuccessful) {
            true ->  Log.d(ContentValues.TAG, "added:success")
            false ->  Log.d(ContentValues.TAG, "added:unsuccess")
        }
    }
  }
 }

视图模型

@HiltViewModel
class UserListViewModel @Inject constructor(private val repository: RoomRepository, private 
val firestoreRepository: FirestoreRepository) :
ViewModel() {

private val _users = MutableLiveData<List<User>>()

val users: LiveData<List<User>>
    get() = _users

var userData: MutableLiveData<List<User>> = MutableLiveData()

fun userSearch(term: String) {
    viewModelScope.launch {
        loadFromCache(term)
        val getPropertiesDeferred = 
  GithubApi.retrofitService.searchUser(term)
        try {
            val userEntities: MutableList<UserEntity> = mutableListOf()
            val result = getPropertiesDeferred.body()
            _users.value = result?.users
            result?.users?.forEach {
                userEntities.add(
                    UserEntity(
                        term = term,
                        login = it.login,
                        avatar_url = it.avatar_url
                    )
                )
            }
            clearSearchResults(term)
            updateSearchResults(userEntities, term)
            firestoreRepository.saveSearchResults(userEntities) //save 
data with firebase
        } catch (e: Exception) {
            Log.e("userListErr", e.message.toString())
        }
    }
}

private fun updateSearchResults(userEntities: List<UserEntity>, term: 
String) {
    viewModelScope.launch(Dispatchers.IO) {
        repository.insertSearchResults(userEntities)
        loadFromCache(term)
    }
}

private fun loadFromCache(term: String) {
    viewModelScope.launch(Dispatchers.IO) {
        val list = repository.getSearchResults(term)
        userData.postValue(list)
    }
}

private fun clearSearchResults(term: String) {
    viewModelScope.launch(Dispatchers.IO) {
        repository.deleteSearchResults(term)
    }
   }
}

应用模块

@Module
@InstallIn(SingletonComponent::class)
object APPModule {

@Singleton
@Provides
fun getAppDB(context: Application): AppDatabase {
    return AppDatabase.getAppDB(context)
}

@Singleton
@Provides
fun getDao(appDB: AppDatabase): AppDao {
    return appDB.getDAO()
}

@Provides
fun provideFirebaseFirestore() = FirebaseFirestore.getInstance()

@Provides
fun provideUsersRef(db: FirebaseFirestore) = db.collection("users")
}
firebase kotlin google-cloud-firestore dagger
4个回答
3
投票
  1. 在依赖项中的build.gradle(project)中添加以下内容:

      classpath 'com.google.gms:google-services:4.3.5'
    
  2. 在build.gradle(module)中添加以下内容:

    plugins {
    id 'com.google.gms.google-services'
     }
    
  3. 在最后一行代码中添加以下内容:

    apply plugin: 'com.google.gms.google-services'
    

1
投票

我在这个项目中使用了多模块。 id

com.google.gms.google-services
到应用程序目录并解决。


0
投票

我遇到这个问题,因为 google-service sdk 版本不适用于 gradle 版本。

也许你可以尝试这个方向。

原项目build.gradle配置没问题。

buildscript {
   dependencies {
          classpath "com.android.tools.build:gradle:3.2.1"
          classpath 'com.google.gms:google-services:4.1.0'

最后通过查找兼容的SDK版本解决。

buildscript {
   dependencies {
          classpath "com.android.tools.build:gradle:3.3.3"
          classpath 'com.google.gms:google-services:4.2.0'

0
投票

升级到最新版本时出现此错误。肯定有更好的解决方案,但现在我用这种方式修复了错误。我降级了“com.google.gms:google-services”。

dependencies {
    classpath 'com.android.tools.build:gradle:7.3.1'
    classpath 'com.google.gms:google-services:4.4.0'
}

致:

dependencies {
    classpath 'com.android.tools.build:gradle:7.3.1'
    classpath 'com.google.gms:google-services:4.3.15'
}
© www.soinside.com 2019 - 2024. All rights reserved.