java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/R$string;
Posted
技术标签:
【中文标题】java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/R$string;【英文标题】:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/R$string; 【发布时间】:2018-10-26 05:05:09 【问题描述】:我尝试了很多东西,但它并没有解决我的问题。
完整的错误代码(kompletter 错误代码):
05-16 09:59:53.428 25010-25010/main.faseflex.de.fgnapp E/androidRuntime: FATAL EXCEPTION: main
Process: main.faseflex.de.fgnapp, PID: 25010
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/R$string;
at com.google.android.gms.common.internal.StringResourceValueReader.<init>(Unknown Source:14)
at com.google.firebase.FirebaseOptions.fromResource(Unknown Source:2)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:19)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source:4)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1925)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1900)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:23)
at android.app.ActivityThread.installProvider(ActivityThread.java:6578)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6133)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6043)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.R$string" on path: DexPathList[[zip file "/data/app/main.faseflex.de.fgnapp-C4iBOV7sIO2cNc4pfCATmA==/base.apk"],nativeLibraryDirectories=[/data/app/main.faseflex.de.fgnapp-C4iBOV7sIO2cNc4pfCATmA==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.google.android.gms.common.internal.StringResourceValueReader.<init>(Unknown Source:14)
at com.google.firebase.FirebaseOptions.fromResource(Unknown Source:2)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:19)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source:4)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1925)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1900)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:23)
at android.app.ActivityThread.installProvider(ActivityThread.java:6578)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6133)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6043)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
build.gradle 应用程序:
apply plugin: 'com.android.application'
android
compileSdkVersion 25
//buildToolsVersion "25.0.2"
defaultConfig
applicationId "main.faseflex.de.fgnapp"
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
dexOptions
preDexLibraries true
versionCode 1
versionName "0.98.41"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
multiDexKeepFile file('multidex-config.txt')
productFlavors
dependencies
implementation 'com.android.support:support-v4:25.4.0'
implementation 'com.android.support:support-vector-drawable:25.4.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2',
exclude group: 'com.android.support', module: 'support-annotations'
)
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.google.firebase:firebase-database:15.0.1'
implementation 'com.google.firebase:firebase-auth:15.1.0'
implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:design:25.4.0'
implementation 'com.android.support:preference-v7:25.4.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.github.SHashank02051997:FancyToast-Android:0.1.3'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
testImplementation 'junit:junit:4.12'
apply plugin: 'com.google.gms.google-services'
configurations.all
resolutionStrategy.eachDependency DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support')
if (!requested.name.startsWith("multidex"))
details.useVersion '25.3.0'
build.gradle 项目:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript
repositories
jcenter()
google()
dependencies
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
allprojects
repositories
jcenter()
google()
maven
url "https://jitpack.io"
maven
url "https://maven.google.com"
task clean(type: Delete)
delete rootProject.buildDir
AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="main.faseflex.de.fgnapp"
tools:node="replace">
<supports-screens
android:anyDensity="true"
android:compatibleWidthLimitDp="50"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="false"
android:smallScreens="false"
android:xlargeScreens="false" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/fgn_icon"
android:label="@string/app_name"
android:resizeableActivity="false"
android:roundIcon="@mipmap/fgn_icon"
android:supportsRtl="true"
android:theme="@style/AppTheme">
------------------------------------------------
MAIN ACTIVITY
------------------------------------------------
<activity
android:name=".FGNmainActivity"
android:label="FGN-App"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
------------------------------------------------
STUNDENPLAN
------------------------------------------------
<activity
android:name=".activity_timetable"
android:label="FGN-App | Stundenplan"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
ESSENSBESTELLUNG
------------------------------------------------
<activity
android:name=".activity_food"
android:label="FGN-App | Essenplan"
android:parentActivityName=".FGNmainActivity"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
MDV
------------------------------------------------
<activity
android:name=".activity_mdv"
android:label="FGN-App | Verkehrsverbund"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
DOKUMENTE
------------------------------------------------
<activity
android:name=".activity_documents"
android:label="FGN-App | Dokumente"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
NEWS
------------------------------------------------
<activity
android:name=".activity_news"
android:label="FGN-App | News"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
LEHRER
------------------------------------------------
<activity
android:name=".activity_teachers"
android:label="FGN-App | Lehrer"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
MOODLE
------------------------------------------------
<activity
android:name=".activity_moodle"
android:label="FGN-App | Moodle"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
OFFICE 365
------------------------------------------------
<activity
android:name=".activity_office"
android:label="FGN-App | Office 365"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
KONTAKT
------------------------------------------------
<activity
android:name=".activity_contact"
android:label="FGN-App | Kontakt"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
TERMINE
------------------------------------------------
<activity
android:name=".activity_termine"
android:label="FGN-App | Termine"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
MITTAGSBAND
------------------------------------------------
<activity
android:name=".activity_mittagsband"
android:label="FGN-App | Mittagsband"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.APP_BROWSER" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
FEEDBACK
------------------------------------------------
<activity
android:name=".activity_menu_feedback"
android:label="FGN-App | Feedback"
android:parentActivityName=".SettingsActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
IMPRESSUM
------------------------------------------------
<activity
android:name=".activity_menu_impressum"
android:label="FGN-App | Impressum"
android:parentActivityName=".FGNmainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
------------------------------------------------
FIREBASE
------------------------------------------------
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".FirebaseIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service android:name=".MyInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
------------------------------------------------
EINSTELLUNGEN
------------------------------------------------
<activity
android:name=".SettingsActivity"
android:label="FGN-App | Einstellungen"
android:parentActivityName=".FGNmainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="main.faseflex.de.fgnapp.FGNmainActivity" />
</activity>
------------------------------------------------
SPLASH SCREEN
------------------------------------------------
<activity
android:name=".SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
------------------------------------------------
CHANGELOG
------------------------------------------------
<activity
android:name=".ChangelogActivity"
android:label="FGN-App | Changelog"
android:parentActivityName=".SettingsActivity"></activity>
</application>
</manifest>
我知道 NoClassDefFoundError 的作用,但我没有发现问题。询问您是否需要更多文件来解决问题。
【问题讨论】:
这可能是多索引问题。你能试试developer.android.com/studio/build/multidex的2ed解决方案吗? 我没有阅读您的所有帖子,如果您删除 proguard 会怎样?是否还会出现异常?该库中的其他类(在同一个包中)是否在运行时出现?) @Vishu 我添加了 multidex 但它不起作用:/ @deathangel908 我删除了proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
行,但它不起作用
项目中有一些冲突的库,请查看./gradlew app:dependencies
【参考方案1】:
我遇到了同样的问题,所以请确保扩展应用程序的类具有以下内容:
@Override
protected void attachBaseContext(Context base)
super.attachBaseContext(base);
MultiDex.install(this);
否则你需要做干净 - 重建。
【讨论】:
【参考方案2】:由于realm-db
而刚刚遇到这个问题
它是在 gradle 的 alpha 版本和一些其他项目特定环境(AndroidX、Kotlin)上,所以这不是一般问题,而是需要检查的另一件事
【讨论】:
要扩展此答案,您可能需要将类路径“io.realm:realm-gradle-plugin:5.11.0”更新为类路径“io.realm:realm-gradle-plugin:5.13。 1" 在项目的 build.gradle 中。【参考方案3】:如果您在应用中使用 Realm 插件,那么您可以尝试 升级您的插件,因为这是应用程序崩溃的原因之一 正在运行。
更新领域插件的步骤:
打开build.gradle(Project: Project_name_here)
文件。
将领域 gradle 插件的类路径替换为 latest stable version,如下所示:
classpath "io.realm:realm-gradle-plugin:7.0.0"
另外,请检查build.gradle
文件中是否有任何过时的插件,因为这可能是应用程序崩溃的原因之一。
或
在使用 Gradle 3.6.0 将 Android Studio 更新到 3.6 后,我遇到了类似的问题。
我降级我的 Gradle 到 3.5.3 以解决这个问题,直到它在未来得到修复。
步骤:
打开build.gradle(Project: Project_name_here)
文件。
将依赖项下的 android tools build gradle 的 classpath 替换为以下内容:
classpath 'com.android.tools.build:gradle:3.5.3'
请注意:这是临时修复。它可能会在未来得到修复,因此在此之前降级并继续进行应用开发。
【讨论】:
【参考方案4】:如果您刚刚将项目更新到 Gradle 3.6.0
并且正在使用 Realm,则此问题很可能是由 Realm 插件 引起的。
根据this 的评论,这个问题发生在较旧的Realm 插件版本上,少于5.13.1
。
所以只要更新到最新的 Realm 版本就很可能解决这个问题。
在撰写本文时,它是:
classpath "io.realm:realm-gradle-plugin:6.1.0"
【讨论】:
这行得通。 github.com/firebase/firebase-android-sdk/issues/…【参考方案5】:我从我的项目中删除了所有的 firebase 和 gms 依赖项,并且leakycanary 发生了错误,因此将其删除。再次出现错误与书法3等等...... 我认为它的 multidex 错误。
【讨论】:
【参考方案6】:我最近也遇到了同样的问题。
使用classpath('com.google.firebase:perf-plugin:1.2.1')
。并在禁用后工作。
【讨论】:
【参考方案7】:您好,我知道问题很晚,但是对于当前的 android 版本,我解决了这个问题。
在 build.grade 项目级依赖项更新您的:
com.android.tools.build:gradle 到最新的稳定版(android 更新不这样做)
链接在这里 -> developer android gradle releases如果使用领域:
链接在这里 ->realm lastest versions如果使用 gms 服务
也更新一下在 build.grade 应用级别更新您的依赖项
这个问题的一些答案涉及 multidex 和其他修复,但没有为我解决。
这就是做出这个答案的原因。
我当前的设置:
项目级
dependencies
classpath 'com.android.tools.build:gradle:4.0.0'
classpath "io.realm:realm-gradle-plugin:6.0.2"
classpath 'com.google.gms:google-services:4.3.3'
应用级
dependencies
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.core:core:1.3.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.android.volley:volley:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.facebook.android:facebook-login:5.15.3'
implementation "com.google.android.gms:play-services-location:17.0.0"
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'commons-validator:commons-validator:1.6'
implementation 'com.appeaser.sublimepickerlibrary:sublimepickerlibrary:2.1.2'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.google.maps.android:android-maps-utils:0.5+'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.evrencoskun.library:tableview:0.8.8'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'com.onesignal:OneSignal:[3.9.1, 3.99.99]'
implementation 'com.google.firebase:firebase-core:17.4.3'
implementation 'com.facebook.android:facebook-share:5.15.3'
implementation('com.smartlook.recording:app:1.1.0-native')
希望我能帮助一些人!
【讨论】:
【参考方案8】:您必须更新您的 REALM-PLUGIN 并且您需要在 Top-Level Gradle (Project:Gradle)中编写此内容>,复制粘贴到“classpath”这一行:
buildscript
...
dependencies
classpath 'io.realm:realm-gradle-plugin:7.0.0' //<--Your answer.
【讨论】:
【参考方案9】:最近,在更新到Gradle 3.6.4
(和更新版本)后遇到了同样的问题ClassNotFoundException: Didn't find class "com.google.android.gms.common.R$string"
。
在我的情况下,它是旧的不推荐使用的 io.mironov.smuggler
插件。
似乎在大多数情况下,问题出在旧插件上(尤其是那些使用转换 api 的插件),所以要找到你首先应该尝试更新它们的插件。如果这没有帮助,只需将它们一一禁用,直到应用开始运行且没有错误。
【讨论】:
【参考方案10】:据我所知,这个问题来自 'project level' build.gradle 文件中依赖项的版本冲突。 尤其是在更新 gradle 版本时被捕获。
buildscript
...
dependencies
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.android.tools.build:gradle:4.1.1'
classpath "io.objectbox:objectbox-gradle-plugin:2.8.1"
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
当您更新您的 gradle 版本 (classpath 'com.android.tools.build:gradle:4.1.1'
) 时,请确保您的其他类路径依赖项也是最新的。
【讨论】:
以上是关于java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/R$string;的主要内容,如果未能解决你的问题,请参考以下文章