Java ';NoClassDefFoundError';应用Android Multidex时发生
我的应用程序的方法行得到65536,所以我应用了Multidex。我为应用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
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.** { *; }