【发布时间】:2019-03-10 01:00:42
【问题描述】:
我正在尝试在我的应用程序上实现 Google 登录。
它工作正常,但是当我尝试登录时,我的 logcat 上出现以下错误:
2018-10-04 14:55:14.784 16313-16313/? I/AppCompatDelegate:无法实例化自定义视图充气器 android.support.v7.app.AppCompatViewInflater。回退到默认状态。 java.lang.ClassNotFoundException: android.support.v7.app.AppCompatViewInflater 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:453) 在 java.lang.Class.forName(Class.java:378) 在 android.support.v7.app.AppCompatDelegateImpl.a(:com.google.android.gms@13280019@13.2.80 (040400-211705629):1) 在 android.support.v7.app.AppCompatDelegateImpl.onCreateView(:com.google.android.gms@13280019@13.2.80 (040400-211705629):1) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.DecorView.onResourcesLoaded(DecorView.java:1933) 在 com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:2586) 在 com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:2659) 在 com.android.internal.policy.PhoneWindow.getDecorView(PhoneWindow.java:2067) 在 android.app.ActivityTransitionState.setEnterActivityOptions(ActivityTransitionState.java:160) 在 android.app.Activity.performCreate(Activity.java:7016) 在 android.app.Activity.performCreate(Activity.java:7000) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 引起:java.lang.ClassNotFoundException:在路径上找不到类“android.support.v7.app.AppCompatViewInflater”:DexPathList [[zip文件“/system/framework/com.android.media.remotedisplay.jar”,压缩文件“/system/framework/com.android.location.provider.jar”,压缩文件“/data/app/com.google.android.gms-mJ0x6f9TEv9BnQUq-xGhTw==/base.apk”],nativeLibraryDirectories=[ /data/app/com.google.android.gms-mJ0x6f9TEv9BnQUq-xGhTw==/lib/arm64, /data/app/com.google.android.gms-mJ0x6f9TEv9BnQUq-xGhTw==/base.apk!/lib/arm64 -v8a、/system/lib64、/vendor/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:453) 在 java.lang.Class.forName(Class.java:378) 在 android.support.v7.app.AppCompatDelegateImpl.a(:com.google.android.gms@13280019@13.2.80 (040400-211705629):1) 在 android.support.v7.app.AppCompatDelegateImpl.onCreateView(:com.google.android.gms@13280019@13.2.80 (040400-211705629):1) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.DecorView.onResourcesLoaded(DecorView.java:1933) 在 com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:2586) 在 com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:2659) 在 com.android.internal.policy.PhoneWindow.getDecorView(PhoneWindow.java:2067) 在 android.app.ActivityTransitionState.setEnterActivityOptions(ActivityTransitionState.java:160) 在 android.app.Activity.performCreate(Activity.java:7016) 在 android.app.Activity.performCreate(Activity.java:7000) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
我正在使用新的 AndroidX 库,并实现了以下依赖项:
implementation 'androidx.appcompat:appcompat:1.0.0'
我还更改了 gradle.properties,让 Android 知道我正在使用新的 AndroidX 库:
# Default properties
org.gradle.jvmargs=-Xmx1536m
# Android X properties
android.useAndroidX=true
android.enableJetifier=true
通过修改 gradle.properties,所有其他依赖项都应该使用新的 AndroidX 库,对吗?为什么要尝试使用旧的 V7 库?我应该如何解决这个问题?
编辑
这是我的毕业作品:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId 'my.package.name'
versionName '1.0.0'
versionCode 1
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.multidex:multidex:2.0.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.2.71'
}
【问题讨论】:
-
你的 android studio 版本是多少?
-
AppcompatViewInflator 的 androidX 依赖是 androidx.appcompat.app.AppCompatViewInflater。也许您的代码没有被 AS 重构。我认为使用 AppCompatViewInflator 时手动更改导入可能会解决问题。每当我需要切换到 AndroidX 时,我都会使用“迁移到 AndroidX”,以便也可以重构现有代码。
-
@sanaebadi 我使用的是 Android Studio 3.2
-
@WasabiTea 不幸的是,即使使用 AS 进行重构也不能解决问题。
-
你是如何解决这个问题的?
标签: android gradle error-handling libraries androidx