Java ';NoClassDefFoundError';应用Android Multidex时发生

Java ';NoClassDefFoundError';应用Android Multidex时发生,java,android,noclassdeffounderror,android-multidex,Java,Android,Noclassdeffounderror,Android Multidex,我的应用程序的方法行得到65536,所以我应用了Multidex。我为应用Multidex编写的代码如下所示 buildscript { repositories { flatDir { dirs 'libs/lib' } maven { url 'https://maven.fabric.io/public' } } dependencies { classpath ':dexguard:' classpath 'io.fabric.t

我的应用程序的方法行得到65536,所以我应用了Multidex。我为应用Multidex编写的代码如下所示

buildscript {
repositories {
    flatDir {
        dirs 'libs/lib'
    }
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    classpath ':dexguard:'
    classpath 'io.fabric.tools:gradle:1.27.1'
}
}

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'com.android.application'
apply plugin: 'dexguard'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.kihno.kihnoplay"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 7532
        versionName "1.984"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
        ndk {
            abiFilters "armeabi"
        }
    }
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            useProguard false
            shrinkResources false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFile getDefaultDexGuardFile('dexguard-debug.pro')
            proguardFile 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled true
            useProguard true
            shrinkResources false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFile getDefaultDexGuardFile('dexguard-release.pro')
            proguardFile 'proguard-rules.pro'
        }
        china {
            debuggable false
            minifyEnabled true
            useProguard true
            shrinkResources false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFile getDefaultDexGuardFile('dexguard-release.pro')
            proguardFile 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation 'com.ssomai:android.scalablelayout:2.1.3'
    testImplementation 'junit:junit:4.12'
    testImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v13:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:percent:28.0.0'
    implementation 'com.android.support:support-media-compat:28.0.0'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    // JSON Parsing
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.github.bumptech.glide:glide:3.8.0'
    implementation 'com.github.omadahealth:swipy:1.2.3@aar'
    // Live JS Bridge 라이브러리
    implementation 'com.github.wendux:WebViewJavascriptBridge:master-SNAPSHOT'
    // Socket IO
    implementation('io.socket:socket.io-client:1.0.0') {
        // excluding org.json which is provided by Android
        exclude group: 'org.json', module: 'json'
    }
    implementation 'com.github.ybq:Android-SpinKit:1.2.0'
    // 커스텀 qr 리더 라이브러리
    implementation 'com.journeyapps:zxing-android-embedded:3.0.3@aar'
    implementation 'com.google.zxing:core:3.3.0'
    // 크롬 캐스트 라이브러리
    implementation 'com.android.support:mediarouter-v7:28.0.0'
    // Firebase crashlytics
    implementation 'com.google.firebase:firebase-core:16.0.7'
    implementation 'com.google.android.gms:play-services-cast-framework:16.1.2'
    implementation 'com.google.android.gms:play-services-analytics:16.0.4'
    // FFMpeg
    implementation 'com.writingminds:FFmpegAndroid:0.3.2'
    // 새로운 슬라이드 이미지 라이브러리
    implementation 'com.yarolegovich:discrete-scrollview:1.4.7'
    // SNS GiraffePlayer2 커스텀화
    implementation 'com.github.tcking:viewquery:1.6'
    implementation 'com.github.tcking:ijkplayer-java:0.8.8'
    implementation 'com.github.tcking:ijkplayer-armv7a:0.8.8'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
        transitive = true;
    }
    // Dot Indicator
    implementation 'com.romandanylyk:pageindicatorview:1.0.0@aar'
    implementation 'me.omidh:liquidradiobutton:1.0.01'
    implementation 'com.getkeepsafe.taptargetview:taptargetview:1.12.0'
    implementation 'de.hdodenhof:circleimageview:3.0.0'
    implementation 'com.github.gsotti:EqualizerView:v0.2'
    implementation 'com.scottyab:rootbeer-lib:0.0.7'
    implementation 'com.android.support:multidex:1.0.3'
}

apply plugin: 'com.google.gms.google-services'
这是我的app/build.gradle代码

public class AppController extends MultiDexApplication { ... }
这是我的应用程序类代码

<application
        android:name="android.support.multidex.MultiDexApplication"
        android:allowBackup="true"
        android:allowClearUserData="true"
        android:banner="@drawable/icon_tv"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:theme="@style/AppTheme"
        android:vmSafeMode="true"
        tools:replace="android:allowBackup">

这是我的清单代码

按照上面的方法应用和编译之后,我得到了以下错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.kihno.kihnoplay, PID: 31582
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/R$string;
        at com.google.android.gms.common.internal.StringResourceValueReader.<init>(Unknown Source:4)
        at com.google.firebase.FirebaseOptions.fromResource(com.google.firebase:firebase-common@@16.0.2:160)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.2:301)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@16.0.2:53)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1925)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1900)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@16.0.2:47)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6572)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6127)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037)
        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:6938)
        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/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/base.apk"],nativeLibraryDirectories=[/data/app/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/lib/arm, /data/app/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/base.apk!/lib/armeabi, /system/lib, /system/vendor/lib]]
        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:4) 
        at com.google.firebase.FirebaseOptions.fromResource(com.google.firebase:firebase-common@@16.0.2:160) 
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.2:301) 
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@16.0.2:53) 
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1925) 
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1900) 
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@16.0.2:47) 
        at android.app.ActivityThread.installProvider(ActivityThread.java:6572) 
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6127) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037) 
        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:6938) 
        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) 
D/libEGL: loaded /vendor/lib/egl/libGLES_mali.so
Application terminated.
E/AndroidRuntime:致命异常:主
进程:com.kihno.kihnoplay,PID:31582
java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/R$string;
位于com.google.android.gms.common.internal.StringResourceValueReader。(未知来源:4)
在com.google.firebase.FirebaseOptions.fromResource上(com.google.firebase:firebase common@@16.0.2:160)
在com.google.firebase.FirebaseApp.initializeApp上(com.google.firebase:firebase common@@16.0.2:301)
位于com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase common@@16.0.2:53)
位于android.content.ContentProvider.attachInfo(ContentProvider.java:1925)
位于android.content.ContentProvider.attachInfo(ContentProvider.java:1900)
位于com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase common@@16.0.2:47)
位于android.app.ActivityThread.installProvider(ActivityThread.java:6572)
位于android.app.ActivityThread.installContentProviders(ActivityThread.java:6127)
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037)
位于android.app.ActivityThread.-wrap1(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)上
位于android.os.Handler.dispatchMessage(Handler.java:105)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6938)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:327)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”/data/app/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/base.apk]的NativeLibrary目录中未找到类“com.google.android.gms.common.R$string”=[/data/app/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/lib/arm,/data/app/com.kihno.kihnoplay-VqxiJ_TyyN3-XKwP3gSXGw==/base.apk!/lib/armeabi,/system/lib,/system/vendor/lib]]
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:379)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:312)
位于com.google.android.gms.common.internal.StringResourceValueReader。(未知来源:4)
在com.google.firebase.FirebaseOptions.fromResource上(com.google.firebase:firebase common@@16.0.2:160)
在com.google.firebase.FirebaseApp.initializeApp上(com.google.firebase:firebase common@@16.0.2:301)
位于com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase common@@16.0.2:53)
位于android.content.ContentProvider.attachInfo(ContentProvider.java:1925)
位于android.content.ContentProvider.attachInfo(ContentProvider.java:1900)
位于com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase common@@16.0.2:47)
位于android.app.ActivityThread.installProvider(ActivityThread.java:6572)
在android.app.ActivityThread.installContentProviders(ActivityThread.java:6127)
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037)
位于android.app.ActivityThread.-wrap1(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)上
位于android.os.Handler.dispatchMessage(Handler.java:105)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6938)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:327)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
D/libEGL:load/vendor/lib/egl/libGLES_mali.so
申请终止。
我认为android支持库存在一些冲突,但我不知道如何追踪这些问题


有人知道导致此错误的原因和修复方法吗?如果您有任何想法,请告诉我。谢谢。

将所有依赖项设置为最新版本。例如,Firebase和所有

不要忘记在proguard-rules.pro文件中排除Firebase

要排除proguard.U中的内容,可以使用以下命令:


谢谢您的回复。您能更清楚地解释一下吗?我正在使用firebase库消息和core。我想知道如何在proguard rule.pro文件中排除firebase库。
-keep class com.google.firebase.** { *; }