英文:
Strange error in android studio, nothing similar online and no idea of the cause
问题
I am a new android developer, and every time I try to run the emulator to test my app I get the following error:
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)
Any idea what could be causing this? I reverted my changes for the last two days to no avail, and searched google with nobody experiencing anything similar. If someone can make sense of the error, please help. For context, I recently added the Google Places SDK into my app, but this error occurs even when I comment out all the code related to that.
EDIT: As requested, here is my module-level build.gradle file:
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'
}
Please note that this translation doesn't include the code part.
英文:
I am a new android developer, and every time I try to run the emulator to test my app I get the following error:
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) 
Any idea what could be causing this? I reverted my changes for the last two days to no avail, and searched google with nobody experiencing anything similar. If someone can make sense of the error, please help. For context, I recently added the Google Places SDK into my app, but this error occurs even when I comment out all the code related to that.
EDIT: As requested, here is my module-level build.gradle file:
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
无法评论,但我假设您在构建时正在使用R8或Proguard,并且它正在通过反射查找在Google Places SDK中混淆类/字段/接口等。
查找该库的相关规则,将其包含在您的R8/Proguard规则文件中,以便在构建时保持不混淆。
编辑:另外,您是否在此应用程序中使用multidex?
编辑2:与评论中的OP一起工作 - 问题似乎源于将旧的通用捆绑的“play-services”库与特定的play-services库(如地图和位置)一起使用。删除捆绑库解决了他们的问题。
英文:
I can't comment yet, but I'm assuming you're using R8 or Proguard when building, and it's obfuscating classes/fields/interfaces etc within the Google Places SDK that it tries to find at runtime through reflection.
Find the relevant rules for that library to include within your R8/Proguard rules file so they'll remain un-obfuscated when building.
EDIT: Also, are you using multidex with this application?
EDIT2: Worked with OP in the comments - issue seems to have stemmed from using the older general purpose bundled 'play-services' library in conjunction with the specific play-services libraries (like maps and places). Removing the bundled library fixed their issue.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论