【问题标题】:Does Proguard remove unused code (on Android)Proguard 是否删除未使用的代码(在 Android 上)
【发布时间】:2011-07-25 09:40:30
【问题描述】:

我只是想知道,我正在设计一个用于我的 Android 项目的库。现在我开始包含诸如 apache FTP jar 之类的东西来支持一些调试文件上传。

我知道并非所有项目都会使用库的所有部分(例如,某些项目根本没有 FTP 上传,但想使用库中的 UI 工具)。

现在我有三个问题:

  1. Proguard 是否删除未使用的源(自己的代码),例如我的 UI 工具类,如果它们从未从主项目中引用 - 表示未在应用程序中使用。

  2. 如果从未使用过,Proguard 是否会删除外部库(例如 apache ftp jar)。如果不是,如果选项 1 适用,我可能会包括来源。

  3. 资源文件怎么样(不是真正的 Proguards 工作,更多的是 IntelliJ 或 Eclipse) - 示例:我使用存储在库项目中的默认标记编写了一个谷歌地图扩展。如果我仍然不需要地图,是否将文件包含在每个 android 项目中 - 有没有一种简单的方法可以防止这种情况发生。

更多背景知识:我尽量将我所有的图书馆资料保存在一个项目中。我还不知道拆分库的好点,所以我不想为所有东西创建单独的库(过去这样做过,而且大部分时间都是模块化的方式)......

感谢您的任何见解, 克里斯

【问题讨论】:

  • “设计”听起来是个有趣的过程 :-)
  • 该死的德国人...我们得到了很多 -ing 并且通常没有 -ign - 为正射术爱好者更正:-)

标签: java android proguard


【解决方案1】:

Proguard 是否会删除未使用的来源

如果配置正确,它会尝试这样做。

如果从未使用过,Proguard 是否会删除外部库(例如 apache ftp jar)。

如果配置正确,它会尝试这样做。

资源文件怎么样(不是真正的 Proguards 工作,更多的是 IntelliJ 或 Eclipse) - 示例:我使用存储在库项目中的默认标记编写了一个谷歌地图扩展。如果我仍然不需要地图,是否将文件包含在每个 android 项目中 - 有没有一种简单的方法可以防止这种情况发生。

没有。

【讨论】:

  • 所以在我的库中包含源代码和 jar 之间没有区别。大多数罐子也提供源代码,但如果我正确理解你的答案,只要我弄清楚如何正确使用 Proguard,例如没有任何好处。包括 apache commons 源代码与 jars。
  • @Christian:正确。在任何情况下,Proguard 都不能在源代码上工作 AFAIK - 它可以在 .class 文件上工作。
  • @CommonsWare 如果您添加了一个如何正确配置它的基本示例,那就太好了。
  • @Raghunandan:由于“android.jar 中的类”从一开始就不是您应用程序的一部分,因此不需要删除它们。 android.jar 是编译时类路径的一部分,但其内容不会放入您的 APK。
  • @Raghunandan:“我将从 android.jar 中导入一些类。对吗?” -- 您将从这些类的编译时android.jar 存根中引用一些android.* 类。 那些 android.* 类不属于您的 APK 文件,因此不受 ProGuard 影响。真正的类在运行时已经在你的进程中,由固件放在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多