proguard规则不适用于某些Java文件



我正在使用房间数据库库,接口具有方法

@Query(Select * from employee where deptName = :DeptName)
List<Employee> getAllEmployeeFrom(deptName: String);

我应用了proguard规则:

-keep interface androidx.* { *; }
-keepclasseswithmembernames public interface packagename.dao.*{*;}
-keepclasseswithmembernames public class packagename.dao.*$DefaultImpls{*;}

但proguard混淆后生成的最后一个类是

@Query(Select * from employee where deptName = :DeptName)
List getAllEmployeeFrom(deptName: String);

这里的列表不见了。请帮助我理解列表类型更改的原因。同样,用Kotlin编写的代码也很好。我无法将Java文件迁移到Kotlin。proguard规则必须为java文件编写。

-keep选项指定具有保存。

-keep class packageName.Employee ** { *; }
-keepclassmembers class packageName.Employee ** { *; }

必须使用-keepattributes-Signature才能将泛型保留在列表中。

根据Proguard文件(https://www.guardsquare.com/manual/configuration/examples#library)

;签名";属性才能访问泛型类型。

最新更新