我有一个安卓应用程序,它由不同的模块组成。Main模块使用了一些库,如Google的GSON或v4.support.package。一个带有正确proguard.cfg的自定义构建脚本也会构建它。现在我必须整合另一个";Android库";它使用了部分相同的libs(GSON support.v4)。除了得到很多像这样的Notes之外
注:程序类的定义重复[com.google.gson.gson]
我还收到了一些像这样的Notes
[proguard]注意:com.google.gson.UnsafeAllocater:找不到动态引用的类sun.msic.Unsafe
[proguard]注意:配置引用未知类"sun.mic.Unsafe"
我觉得很奇怪,因为我的Proguard.cfg中有一些"保留",尤其是
-keeptattributes签名,注释
-保持类com.google.gson.**{*;}
-保持类sun.msic.Unsafe{*;}
它在我的项目中运行良好,无需引用其中的模块库。我使用了最新的SDK和工具,并在模块库中添加了一个自定义proguard.cfg,它在模块库本身上运行良好(如果以独立模式构建)。在我看来,构建并不依赖于库项目中的自定义proguard.cfg。任何关于尝试什么的想法都值得高度赞赏
我终于自己找到了解决方案:使用最后一个Android工具(16),每个Android库都会首先编译自己的库。因此,当lib没有"standart"构建并定义了一些自定义构建脚本时,包括proguard-keep,而这个--keep是在同一个项目上定义的(不包括Android SDK类,因为它们没有编译),这会导致proguard错误。解决方案是将proguard从库中删除,并将--keeps复制到主应用程序中