我有一个带有几个模块的项目,libs文件夹中的一些jar依赖项和一些其他gradle依赖项.我正在尝试构建一个启用了proguard的发布apk,但是在构建过程中我遇到了很多警告,因为某些依赖项.例如:
Warning:org.codehaus.jackson.jaxrs.JacksonjsonProvider: can't find superclass or interface javax.ws.rs.ext.MessageBodyReader
有人请参考指南,了解如何正确定义依赖关系的规则.我是否需要为app模块之外的模块添加规则.
编辑:
我已将以下规则添加到app build.gradle文件中:
-keep interface org.codehaus.jackson.** { *; }
-keep class org.codehaus.jackson.** { *; }
但我仍然在构建过程中收到警告.
解决方法:
我正在使用此规则进行改造
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
-dontwarn rx.**
-dontwarn retrofit.**
-dontwarn okio.**
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
而我的杰克逊规则是
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-keep class org.codehaus.** { *; }
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility {
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; }
-keep public class your.class.** {
public void set*(***);
public *** get*();
}
编辑
你的库罐子引用了更多的库罐子(Mortbay,SLF4J,Apache Commons Logging,Log4j,…)添加这些带有额外“-libraryjars”选项的罐子应该可以解决问题.如果你没有重新引用它们,那么使用这个规则
-dontwarn javax.management.**
-dontwarn java.lang.management.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.slf4j.**
-dontwarn org.json.*
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。