Я испытываю затруднения при попытке реализовать firebase в проекте modulair android, написанном на kotlin.
Моя структура выглядит следующим образом:
А затем в своей основной деятельности по созданию я вызываю FirebaseApp.inialize (this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
FirebaseApp.initializeApp(this)
setContentView(R.layout.activity_main)
spotifyAuthDataViewModel = ViewModelProviders.of(this)
.get(SpotifyAuthDataViewModel::class.java)
val liveData = spotifyAuthDataViewModel.getAuthData()
info { liveData.value!!.spotifyToken }
}
Моя модель представления с liveata выглядит так:
class SpotifyAuthDataViewModel : ViewModel() {
var authData: MutableLiveData<SpotifyAuthData> = MutableLiveData()
private var mDatabase: DatabaseReference? = null
fun getAuthData(): LiveData<SpotifyAuthData> {
mDatabase = FirebaseDatabase.getInstance().reference
FirebaseDatabase.getInstance()
.getReference("/spotify_data")
.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError?) {
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
var spotifyAuthData: SpotifyAuthData? =
dataSnapshot.getValue<SpotifyAuthData>(SpotifyAuthData::class.java)
authData.postValue(spotifyAuthData)
}
}
}
)
return authData
}
}
Но когда я пытаюсьЗапустите приложение, я получаю это сообщение
java.lang.RuntimeException: Unable to resume activity {com.jd.test.app/com.jd.test.feature.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.jd.test.app. Make sure to call FirebaseApp.initializeApp(Context) first.
Я также пытался создать класс, расширяющий мое приложение и вызывающий firebaseapp.initialize (this) и добавив его в мой манифест, но я все еще получаю ту же ошибку.
Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.jd.test.feature">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:name=".BaseApplication">
<activity android:name=".MainActivity"
android:theme="@style/AppTheme">
<intent-filter android:order="1">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data
android:host=""
android:pathPrefix="/.*"
android:scheme="https"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".spotify.views.SpotifyLogin"/>
</application>
</manifest>
BaseApplication.kt:
class BaseApplication : Application() {
override fun onCreate() {
super.onCreate()
FirebaseApp.initializeApp(this)
}
}
Моя функция gradle
apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 23
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
useProguard false
minifyEnabled false
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
def lifecycle_version = "1.1.0"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'io.github.tonnyl:spark:0.1.0-alpha'
implementation 'com.github.Joran-Dob:PlayPauseFab:0.0.3'
implementation project(':base')
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.github.bumptech.glide:glide:4.4.0'
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "com.squareup.retrofit2:converter-gson:2.3.0"
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
implementation 'com.spotify.android:auth:1.1.0'
implementation 'com.spotify.sdk:spotify-player-24-noconnect-2.20b@aar'
implementation "org.jetbrains.anko:anko:0.10.5"
implementation 'com.android.support:palette-v7:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-database:15.0.1'
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // use -ktx for Kotlin
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
kapt "android.arch.lifecycle:compiler:$lifecycle_version"
kapt 'com.github.bumptech.glide:compiler:4.4.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'