带警告的Android Studio构建版本无法找到引用的类

时间:2017-01-06 19:01:16

标签: android android-studio

当我使用签名APK构建我的应用程序时,我得到很多"无法找到引用的类"错误。我确实在我的pro guard-rules.pro(对于应用程序)中放了一些这些不警告的消息,但是当我运行发行版Build Variant时,JSON无法识别字段。 以下是我之前提出但未删除的警告声明:

#Warnings to be removed. Otherwise maven plugin stops, but not dangerous
#-dontwarn android.support.**
#-dontwarn com.sun.xml.internal.**
#-dontwarn com.sun.istack.internal.**
#-dontwarn org.codehaus.jackson.**
#-dontwarn org.springframework.**
#-dontwarn java.awt.**
#-dontwarn javax.security.**
#-dontwarn java.beans.**
#-dontwarn javax.xml.**
#-dontwarn java.util.**
#-dontwarn org.w3c.dom.**
#-dontwarn com.google.common.**
#-dontwarn com.octo.android.robospice.persistence.**
#

当我删除这些内容时,我会收到以下警告:

警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到引用的类org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到引用的类org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到引用的类org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:无法找到引用的类org.w3c.dom.bootstrap.DOMImplementationRegistry

我不确定我的依赖关系如:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    // compile "com.google.android.gms:play-services-gcm:8.3.0"
    // compile 'com.android.support:appcompat-v7:23.2.0'

    compile 'com.google.firebase:firebase-core:9.0.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    compile 'com.android.support:support-v13:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'

    compile 'com.fasterxml.jackson.core:jackson-databind:2.6.3'
    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
    compile 'jackson:jackson-asl:0.9.3'
    compile 'com.android.support:design:23.+'

正在进入发布版本。目前,它们位于app的build.gradle文件中。我应该把它们放在别的地方吗?

感谢 -Sonam

2 个答案:

答案 0 :(得分:1)

我设法让它发挥作用。我放回了" -dontwarn"声明。我还必须使用以下语句来模糊我的模型getter / setter,因为它无法对其对象类型进行编组。

-keep public class your.domain.package.* {
  public *** get*();
  public void set*(***);
}

这使我的应用程序正常运行。

答案 1 :(得分:0)

如果您为签名的apk启用了proguard,请在proguard规则文件中排除packages / classes / ..