Здесь есть много вопросов по этой же проблеме, но ни один не затрагивает основную причину или то, что я вижу - и поэтому предлагаемые ответы не помогают.
Мое приложение создается без проблем, однако при запуске я постоянно получаю исключение времени выполнения:
java.lang.NoSuchMethodError: No static method isDeviceProtectedStorage(Landroid/content/Context;)Z in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.ohmd-1/base.apk:classes116.dex)
at com.google.firebase.FirebaseApp.zzc(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
Из других вопросов я вижу, что это может быть связано с поддержкой библиотек в зависимостях, имеющихразные версии, поэтому я ввел в действие одну (ые) библиотечную (ые) версию (и), добавив в свой gradle следующее:
configurations.all {
resolutionStrategy {
force 'com.google.firebase:firebase-core:15.0.2'
force 'com.google.firebase:firebase-messaging:15.0.2'
}
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group.equals('com.android.support')) {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0'
}
}
}
}
Однако, похоже, это не имеет значения.Я вижу в своем дереве зависимостей, что все версии поддержки действительно 28.0.0 , как указано в resoutionStrategy
, так что похоже, что эта часть работает.
Мой полный файл Gradle здесь .
Я разместил свои зависимости gradle (./gradlew app:dependencies
) здесь .
На данный момент я пытаюсь узнать, какчтобы правильно отладить это.Я в полной растерянности. Кто-нибудь знает, как отладить этот тип ошибки?
У меня есть - конечно - очищенные и недействительные кэши много раз.
ОБНОВЛЕНИЕ
Я обнаружил, что проблема действительно в разделе initializeAllApis
FirebaseApp.Конкретная строка:
boolean isDeviceProtectedStorage = ContextCompat.isDeviceProtectedStorage(this.applicationContext);
ContextCompat
говорит, что это от com.android.support:support-compat:28.0.0
.
Так что это, кажется, ссылается на самую последнюю, но когда эта строка выполняется, я получаю вышеуказанную трассировку стека.Поэтому, пока я сужаю его, я все еще не уверен, почему выдается ошибка или как ее исправить.