带有MultiDex的Android Proguard(常量池中的未知常量类型[100])失败

时间:2014-11-04 06:44:11

标签: android proguard android-gradle

构建信息:

compileSdkVersion = 19
buildToolsVersion = '21.1'

gradle配置(省略琐碎的选项):

android {
defaultConfig {
    multiDexEnabled true
}
signingConfigs {
    release {
        ...
    }
}
buildTypes {
    release {
        minifyEnabled true
        signingConfig signingConfigs.release
        proguardFile 'proguard-rules.txt'
    }
}
dexOptions {
    preDexLibraries = false // this one doesn't matter
}
dependencies {
    compile 'com.android.support:multidex:1.+'
}
}

我相信其他配置(如MultiDexApplication)也没问题,因为调试版本运行良好。

但是当我执行assembleRelease(a.k.a与Proguard)时,它失败了错误:

Error:Execution failed for task ':app:shrinkReleaseMultiDexComponents'.
java.io.IOException: Can't read [/(some locations)/build/intermediates/classes-proguard/release/classes.jar] (Can't process class [com/nhn/android/naverlogin/ui/OAuthLoginImage.class] (Unknown constant type [100] in constant pool))

以下是相关的Proguard选项:

-keep public class com.nhn.android.naverlogin.** {*;}
-keep public class com.nhn.android.naverlogin.ui.** {*;}
-dontwarn com.nhn.android.navelogin.**
-libraryjars libs/naveroauthlib-4.0.1.jar
-keepclassmembers class * {
 public static <fields>;
 public *;
}

有人遇到过这类Unknown constant type [100] in constant pool错误吗?

0 个答案:

没有答案