使用Ant和Proguard编译Android应用程序时出现问题

使用Ant和Proguard编译Android应用程序时出现问题,android,ant,proguard,android-library,Android,Ant,Proguard,Android Library,我有一个Android应用程序,它由不同的模块组成。主要模块使用一些lib,如谷歌的GSON或v4.support.package。带有正确proguard.cfg的自定义构建脚本也将构建它。 现在我必须集成另一个“Android库”,它部分使用相同的libs(GSON support.v4)。除了收到很多像 注:程序类[com.google.gson.gson]的定义重复 我还收到一些便条,比如 [proguard]注意:com.google.gson.UnsafeAllocator:找不到动

我有一个Android应用程序,它由不同的模块组成。主要模块使用一些lib,如谷歌的GSON或v4.support.package。带有正确proguard.cfg的自定义构建脚本也将构建它。 现在我必须集成另一个“Android库”,它部分使用相同的libs(GSON support.v4)。除了收到很多像

注:程序类[com.google.gson.gson]的定义重复

我还收到一些便条,比如

[proguard]注意:com.google.gson.UnsafeAllocator:找不到动态引用的类sun.misc.Unsafe

[proguard]注意:配置引用了未知类“sun.misc.Unsafe”

我觉得很奇怪,因为我的Proguard.cfg中有一些“保留”,特别是:

-keepattributes签名、注释

-保持类com.google.gson.*{*;}

-保持类sun.misc.Unsafe{*;}

它在我的项目中运行良好,无需引用其中的模块库。 我使用最新的SDK和工具,并向模块库中添加了一个自定义proguard.cfg,它在模块库本身上运行良好(如果以独立模式构建)。
在我看来,构建并不依赖于库项目中的定制proguard.cfg。我终于自己找到了解决办法: 使用最新的Android工具(16),每个Android库都会首先编译自己的程序。 因此,当lib没有“标准”构建并定义了一些自定义构建脚本(包括proguard--keeps)时,并且这个--keeps是在同一个项目上定义的(不包括Android SDK类,因为它们没有编译),就会导致proguard错误。
解决方案是将proguard从lib中删除,并将--keeps复制到主应用程序中

答案毫无意义。。。想解释一下吗?“复制--保留在主应用程序中”是什么意思?