Странная ошибка в студии android, ничего подобного в сети нет и причина неизвестна - PullRequest
0 голосов
/ 05 августа 2020

Я новый разработчик android, и каждый раз, когда я пытаюсь запустить эмулятор для тестирования своего приложения, я получаю следующую ошибку:

2020-08-05 15:08:30.625 8361-8361/com.example.tender E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.tender, PID: 8361
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzx;
    at com.google.android.gms.measurement.internal.zzw.zzaT(Unknown Source:0)
    at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source:4)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2358)
    at android.app.ActivityThread.installProvider(ActivityThread.java:7239)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6780)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6697)
    at android.app.ActivityThread.access$1300(ActivityThread.java:237)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzx" on path: DexPathList[[zip file "/data/app/~~7yQ-4JW3qh-QJVNZiOJdsA==/com.example.tender-hor871ahRQoy1oE54-r8dg==/base.apk"],nativeLibraryDirectories=[/data/app/~~7yQ-4JW3qh-QJVNZiOJdsA==/com.example.tender-hor871ahRQoy1oE54-r8dg==/lib/x86, /system/lib, /system_ext/lib, /product/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.google.android.gms.measurement.internal.zzw.zzaT(Unknown Source:0) 
    at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source:4) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2388) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2358) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:7239) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6780) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6697) 
    at android.app.ActivityThread.access$1300(ActivityThread.java:237) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

Есть идеи, что может быть причиной этого? Я отменил свои изменения за последние два дня, но безрезультатно и поискал в Google, но ничего подобного не обнаружил. Если кто-то может понять ошибку, пожалуйста, помогите. Для контекста я недавно добавил в свое приложение SDK Google Places, но эта ошибка возникает даже тогда, когда я закомментировал весь связанный с этим код. файл:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.0"

    defaultConfig {
        applicationId "com.example.tender"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'com.google.android.gms:play-services:8.4.0'
    implementation 'com.google.android.libraries.places:places:2.2.0'

}

1 Ответ

2 голосов
/ 05 августа 2020

Я пока не могу комментировать, но я предполагаю, что вы используете R8 или Proguard при создании, и он запутывает классы / поля / интерфейсы и т. Д. c в SDK Google Places, который он пытается найти во время выполнения через отражение.

Найдите соответствующие правила для этой библиотеки, которые нужно включить в ваш файл правил R8 / Proguard, чтобы они не запутывались при сборке.

EDIT : Также , вы используете multidex с этим приложением?

EDIT2 : Работал с OP в комментариях - проблема, похоже, возникла из-за использования старой объединенной библиотеки play-services общего назначения в сочетании со специфическими c библиотеками игровых сервисов (например, карты и места). Удаление встроенной библиотеки устранило их проблему.

...