如何阻止Proguard删除types参数?

我目前正试图混淆一系列图书馆。 我的基本库包含几个使用types参数的类和方法,由于Proguard混淆处理删除了types参数,所以其他代码无法使用它。 消除混淆消除了这些问题。 我已阅读了所有的ProGuard使用说明文档,示例和疑难解答,但一直未能find有关如何处理types参数或ProGuard的哪些方面去除types参数的任何文档。

构造器types参数问题:

库1包含以下类:

public abstract class AbstractFactoryFactory<T> 

库2包含几个扩展上述类的类,但构造函数抛出一个编译器错误,指出:

 error: type AbstractFactoryFactory does not take parameters 

返回types参数问题:

库1具有以下方法的Foo类:

 public List<String> doSomething() 

Libary 2尝试使用doSomething方法,但是在混淆之后,该方法返回一个无types的列表,该列表生成以下编译器错误,该错误指出:

 error: incompatible types Object 

Proguard.cfg

 -dontoptimize -renamesourcefileattribute SourceFile -keepparameternames -keepattributes Exceptions,*Annotation*,InnerClasses,SourceFile,LineNumberTable,Deprecated -keep public class * { public protected *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembernames class * { java.lang.Class class$(java.lang.String); java.lang.Class class$(java.lang.String, boolean); } -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } 

  • 与Android一起使用ProGuard
  • 图书馆项目需要proguard.cfg吗?
  • 为什么proguard处理AndroidManifest.xml
  • Proguard警告“不能写入资源(复制zip条目)”
  • Google Play开发控制台在Stacktrace中显示类和方法名称
  • 如果没有源更改,Proguard是否保证提供相同的映射?
  • Android Studio和ProGuard:无法解析符号getDefaultProguardFile?
  • Android支持v4 22.2.0的Proguardconfiguration
  • 根据ProGuard 典型库使用指南 :

    在“JDK 5.0”和更高版本中编译时,“Signature”属性需要能够访问genericstypes。

    添加下面的行解决了我的问题与缺lesstypes参数:

     -keepattributes Signature