0

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

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

我也得到一些笔记,比如

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

[proguard] 注:配置参考未知类'sun.misc.Unsafe'

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

-keepattributes 签名、注释

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

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

它在我的项目中运行良好,无需引用其中的模块库。我在最新的 SDK 和工具上,并向模块库添加了一个自定义 proguard.cfg,它在模块库本身上运行良好(如果以独立模式构建)。在我看来,构建不依赖于库项目中的自定义 proguard.cfg。任何关于尝试什么的想法都非常感谢

4

1 回答 1

-1

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

于 2012-01-23T01:33:10.237 回答