¿Cómo se evita que Proguard elimine los parámetros de tipo?

Actualmente estoy intentando ofuscar una serie de bibliotecas. Mi biblioteca base, que contiene varias clases y métodos que usan parámetros de tipo, no puede ser utilizada por otro código debido a los parámetros de tipo eliminados por la ofuscación de Proguard. Eliminar la ofuscación elimina estos problemas. He leído todos los documentos de uso de ProGuard, ejemplos y solución de problemas, pero no he podido encontrar ninguna documentación sobre cómo tratar los parámetros de tipo o qué aspecto de ProGuard elimina los parámetros de tipo.

Tipo de parámetro de constructor Problema:

La Biblioteca 1 contiene la siguiente clase:

public abstract class AbstractFactoryFactory 

La Biblioteca 2 contiene varias clases que extienden la clase anterior, pero el constructor arroja un error de comstackción que dice:

 error: type AbstractFactoryFactory does not take parameters 

Tipo de devolución Problema del parámetro:

La Biblioteca 1 tiene una clase Foo con el siguiente método:

 public List doSomething() 

Libary 2 intenta usar el método doSomething, pero después de la ofuscación, el método devuelve una lista sin tipo que genera el siguiente error de comstackción que indica:

 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 ; } -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(); } 

De acuerdo con la guía de uso de la Biblioteca Típica de ProGuard:

El atributo “Firma” es necesario para poder acceder a los tipos generics al comstackr en JDK 5.0 y versiones posteriores.

Agregar la siguiente línea solucionó mis problemas con los parámetros de tipo faltantes:

 -keepattributes Signature