Android java lang NoClassDefFoundError Caldroid
Android java lang NoClassDefFoundError Caldroid
当我尝试在移动设备上 运行 我的应用程序时出现此错误:
java.lang.NoClassDefFoundError: com.roomorama.caldroid.CalendarHelper
at com.roomorama.caldroid.CaldroidFragment.retrieveInitialArgs(CaldroidFragment.java:1087)...
有趣的是,当我 运行 模拟器上的应用程序时,它可以运行。
这是我的 build.gradle 依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.roomorama:caldroid:3.0.1'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
compile 'com.google.android.gms:play-services-base:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
compile 'com.android.support:support-v4:23.1.1'
compile('com.google.api-client:google-api-client-android:1.20.0') {
exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-calendar:v3-rev125-1.20.0') {
exclude group: 'org.apache.httpcomponents'
}}
看来我必须在 build.gradle 文件中将 multiDexEnabled 设置为 false。
multiDexEnabled false
可能是编译器或 ProGuard 问题。我假设您在设备上使用的是发布版本,并且出于某种原因,编译器或 ProGuard 认为不需要 CalendarHelper class(可能是由于使用了反射),并将其从发布版本中删除。尝试将 -keep 指令添加到 ProGuard 文件。
当我尝试在移动设备上 运行 我的应用程序时出现此错误:
java.lang.NoClassDefFoundError: com.roomorama.caldroid.CalendarHelper
at com.roomorama.caldroid.CaldroidFragment.retrieveInitialArgs(CaldroidFragment.java:1087)...
有趣的是,当我 运行 模拟器上的应用程序时,它可以运行。
这是我的 build.gradle 依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.roomorama:caldroid:3.0.1'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
compile 'com.google.android.gms:play-services-base:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
compile 'com.android.support:support-v4:23.1.1'
compile('com.google.api-client:google-api-client-android:1.20.0') {
exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-calendar:v3-rev125-1.20.0') {
exclude group: 'org.apache.httpcomponents'
}}
看来我必须在 build.gradle 文件中将 multiDexEnabled 设置为 false。
multiDexEnabled false
可能是编译器或 ProGuard 问题。我假设您在设备上使用的是发布版本,并且出于某种原因,编译器或 ProGuard 认为不需要 CalendarHelper class(可能是由于使用了反射),并将其从发布版本中删除。尝试将 -keep 指令添加到 ProGuard 文件。