Android:依赖项和模块的Proguard规则

Android:依赖项和模块的Proguard规则,第1张

概述我有一个带有几个模块的项目,libs文件夹中的一些jar依赖项和一些其他gradle依赖项.我正在尝试构建一个启用了proguard的发布apk,但是在构建过程中我遇到了很多警告,因为某些依赖项.例如:Warning:org.codehaus.jackson.jaxrs.JacksonJsonProvider:can'tfindsuperclassorinterf

我有一个带有几个模块的项目,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.*
总结

以上是内存溢出为你收集整理的Android:依赖项和模块的Proguard规则全部内容,希望文章能够帮你解决Android:依赖项和模块的Proguard规则所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1118094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存