使用Ant和Proguard编译Android应用程序的问题

时间:2012-01-18 09:32:21

标签: android ant proguard android-library

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

这样的笔记
  

注意:程序类[com.google.gson.Gson]

的重复定义

我也得到了一些像

这样的笔记
  

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

     

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

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

  

-keepattributes签名,注释

     

-keep class com.google.gson。** {*;}

     

-keep class sun.misc.Unsafe {*; }

在我的项目中运行良好,而不引用其中的模块库。 我正在使用最新的SDK和工具,并在模块库中添加了一个自定义的proguard.cfg,它适用于module-lib本身(如果在独立模式下构建)。 在我看来,构建不依赖于库项目中的自定义proguard.cfg。关于尝试高度赞赏的任何想法

1 个答案:

答案 0 :(得分:-1)

我终于找到了解决方案: 使用最新的Android工具(16),每个Android-Library都会自行编译。 因此,当lib没有“标准”构建并定义一些自定义构建脚本(包括proguard --keeps),并且这个--keeps是在同一个Project上定义的(不包括Android SDK类,因为它们没有编译),它导致一个程序错误。 解决方案是从lib中删除proguard并复制主App中的--keeps