Android mupdf库的Proguard问题
在我尝试构建发布版本之前,我的应用程序运行良好。我收到以下错误消息: java.lang.NoSuchFieldError:没有名为='globals'signature='J'的字段 Lcom/artifex/mupdfdemo/MuPDFCore类中 显然问题出在我的mupdf库中。我在没有使用proguard的情况下将这个库构建为aar文件。以下是mupdf库的my build.gradle:Android mupdf库的Proguard问题,android,android-studio,proguard,mupdf,Android,Android Studio,Proguard,Mupdf,在我尝试构建发布版本之前,我的应用程序运行良好。我收到以下错误消息: java.lang.NoSuchFieldError:没有名为='globals'signature='J'的字段 Lcom/artifex/mupdfdemo/MuPDFCore类中 显然问题出在我的mupdf库中。我在没有使用proguard的情况下将这个库构建为aar文件。以下是mupdf库的my build.gradle: apply plugin: 'android-library' android { c
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
正如您所看到的,runProguard是错误的
接下来是我的应用程序的build.gradle文件:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
versionCode 6
versionName "2.0"
}
signingConfigs {
}
buildTypes {
release {
runProguard true
proguardFile file('key/proguard-android.txt')
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.artifex.mupdfdemo:mupdfreader-lib:1.0.0@aar'
}
下面是proguard-android.txt文件:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-dontpreverify
-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-dontwarn android.support.**
-dontwarn android.support.v4.** -keep class android.support.v4.** { *; }
-dontwarn android.support.v7.** -keep class android.support.v7.** { *; }
-keep public class com.artifex.mupdfdemo.MuPDFActivity
-keep public class com.artifex.mupdfdemo.MuPDFCore
-dontusemixedcaseclassnames
-DontskipnonPublicLibraryClass
-冗长的
-dontoptimize
-不要翻转
-keepattributes*注释*
-保持公共类com.google.vending.licensing.ILicensingService
-保持公共类com.android.vending.licensing.ILicensingService
-KeepClassSwithMemberNames类*{
本地人;
}
-keepclassmembers公共类*扩展了android.view.view{
无效集*(***);
***得到*();
}
-keepclassmembers类*扩展了android.app.Activity{
public void*(android.view.view);
}
-keepclassmembers枚举*{
公共静态**[]值();
公共静态**valueOf(java.lang.String);
}
-keep class*实现android.os.Parcelable{
公开静态最终android.os.Parcelable$Creator*;
}
-keepclassmembers类**.R$*{
公共静态;
}
-dontwarn android。支持。**
-dontwarn android.support.v4.*-保留类android.support.v4.*{*;}
-dontwarn android.support.v7.*-保留类android.support.v7.*{*}
-保持公共类com.artifex.mupdfdemo.MuPDFActivity
-保留公共类com.artifex.mupdfdemo.MuPDFCore
如您所见,MuPDFCore被添加到我的proguard文件中。有人能帮忙告诉我问题出在哪里吗?非常感谢。添加这一行
-keep class com.artifex.mupdfdemo.** {*;}
解决了这个问题
我总是在将问题发布到stackoverflow后找到问题的解决方案。无论如何,它可能会帮助其他人。谢谢分享您的知识。:)为回答您的问题向公众竖起大拇指您有64位版本的MuPDF库吗?