如何防止 ProGuard 在输出 jar 中包含引用的库
Posted
技术标签:
【中文标题】如何防止 ProGuard 在输出 jar 中包含引用的库【英文标题】:How to prevent ProGuard from including referenced libraries in the output jar 【发布时间】:2014-06-02 00:36:41 【问题描述】:我正在尝试使用 ProGuard 来混淆我的 android 库项目源代码。
我在我的项目中使用了一些库,一些作为 libs
文件夹中的 jars(例如 android-async-http-1.4.4.jar
)和一个作为引用库项目 (google-play-services_lib
)。
当我在没有 ProGuard 的情况下(使用 ant release
)构建项目时,只有我编写的类被打包到创建的 jar 中。这就是我想要的,因为将使用我的库的 Android 应用程序可能已经在使用我正在使用的一些相同的库。
但是当我使用 ProGuard 构建项目时,我使用的库包含在输出 jar 中。我不知道为什么,我不想要这个。我认为使用 -libraryjars
命令添加这些 jar 会阻止它们包含在我的输出 jar 中,因为 ProGuard 文档很清楚,但它没有帮助。
-libraryjars 类路径
指定要处理的应用程序的库 jars(或 aars、wars、ears、zip、apks 或目录)。这些 jar 中的文件不会包含在输出 jar 中。
我可能没有正确使用它。有人知道我做错了什么(或者我还没有做什么)吗?
-libraryjars ./libs/android-async-http-1.4.4.jar
-libraryjars ./libs/AndroidIBeaconLibrary-0.7.5.jar
-libraryjars ../google-play-services_lib/libs/google-play-services.jar
【问题讨论】:
【参考方案1】:我仍然不知道为什么引用的库包含在混淆的 jar 中,但是纠正与此相关的问题的简单解决方案是用 winrar 打开混淆的 jar 并删除我不想的类在那里...
【讨论】:
以上是关于如何防止 ProGuard 在输出 jar 中包含引用的库的主要内容,如果未能解决你的问题,请参考以下文章
如果在proguard中包含带有注释的字段,如何保持类的成员不受影响