Я использую firebase для нескольких сервисов (аналитика, firestore, crash ...) и все обычно работает нормально.
Но всякий раз, когда я запускаю свое приложение на устройстве API 28, я получаю следующую ошибку:
java.lang.RuntimeException: невозможно получить провайдера
com.google.firebase.provider.FirebaseInitProvider:
java.lang.ClassNotFoundException: не нашел класс
"com.google.firebase.provider.FirebaseInitProvider" по пути:
DexPathList [[почтовый файл "/data/app/[...]
Это случилось со многими до меня (как можно было видеть здесь , здесь , здесь или здесь ), но никто описывает такое поведение, селективное к API (часто даже наоборот, оно работает на новых API и вылетает на старых).
Я мог бы проверить это на нескольких устройствах и получить следующие результаты:
- это работало как прелесть в API 22, 23 и 26 (эмуляторы genymotion)
- сбой на API 28 (эмулятор и настоящий One Plus 6)
Я использую плагин com.getkeepsafe.dexcount
, чтобы убедиться, что мне действительно не нужен мультидекс. Вот вывод:
Methods remaining in app-dev-debug.apk: 15744
Fields remaining in app-dev-debug.apk: 33647
Classes remaining in app-dev-debug.apk: 59277
Вот мой app
модуль build.gradle
(но не стесняйтесь просить больше или другой код):
apply {
plugin 'com.android.application'
plugin 'io.fabric'
plugin 'realm-android'
plugin 'com.google.gms.google-services'
plugin 'com.getkeepsafe.dexcount'
}
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionCode = 54
versionName = "4.1.0"
multiDexEnabled false
}
buildTypes {
release {
debuggable false
minifyEnabled true
shrinkResources true
manifestPlaceholders = [crashlyticsEnabled: true]
ext.enableCrashlytics = true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.seqa_free
}
debug {
debuggable true
minifyEnabled true
shrinkResources false
manifestPlaceholders = [crashlyticsEnabled: false]
ext.enableCrashlytics = false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
//proguard-rules.pro = just one line: "-dontobfuscate"
}
}
flavorDimensions "stage"
productFlavors {
dev {
versionNameSuffix "-dev"
applicationIdSuffix '.dev'
resConfigs "fr", "xxhdpi"
}
prod {
signingConfig signingConfigs.seqa_free
}
}
lintOptions {
disable 'InvalidPackage'
return void
}
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
realm {
syncEnabled = true
}
dependencies {//some are defined on the project builde.gradle
implementation project(path: ':core')
implementation project(path: ':data')
implementation project(path: ':crunches')
//Firebase
implementation firebaseDependencies.core
implementation firebaseDependencies.auth
implementation firebaseDependencies.firestore
implementation firebaseDependencies.ui_auth
//support
implementation supportDependencies.appcompat
implementation supportDependencies.customtabs
implementation supportDependencies.preference
implementation supportDependencies.recyclerview
implementation supportDependencies.cardview
implementation supportDependencies.design
implementation supportDependencies.constraint_layout
//3 old crashlytics supports...
implementation supportDependencies.support_v4
implementation supportDependencies.animated_vector_drawable
implementation supportDependencies.support_media_compat
//indispensables
implementation sharedDependencies.crashlytics
implementation sharedDependencies.realm
implementation sharedDependencies.threetenabp
implementation sharedDependencies.butterknife
annotationProcessor sharedDependencies.butterknife_annotation
//Others
implementation 'com.pavelsikun:material-seekbar-preference:2.3.0'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
implementation 'com.github.bumptech.glide:glide:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.uphyca:stetho_realm:2.2.2'
}
Я пытался ответить на другие вопросы, например, добавить мультидекс (даже если он мне явно не нужен), но это не помогло. Ни очистки моего проекта или восстановления.
В чем может быть моя проблема с API 28?