构建信息:
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
错误吗?