【问题标题】:Detect and remove unused classes in external libraries检测并删除外部库中未使用的类
【发布时间】:2014-08-23 14:44:31
【问题描述】:

我正在开发一个使用多个大型外部库(.jar 文件)的 Android 项目。由于 Android 有 DEX 的 65536 个方法限制,我想删除外部库中我在代码中没有使用过的所有类和方法。

问题是我在外部库中使用的类有它们自己的依赖项。我希望识别外部库中我不需要的所有类(我的代码没有使用,也不是我需要的类的依赖项)。

两个澄清:

  1. ProGuard 和 DexGuard 不相关,因为它们不修改外部库

  2. 我不希望使用自定义加载程序或将我的代码拆分为多个 dex 文件。我想做的就是识别并删除有问题的类。

【问题讨论】:

  • 我不建议您实际修改库本身,因为每次更新库时您都必须重复该过程。 “ProGuard 和 DexGuard 无关紧要,因为它们不会修改外部库”——但是,它们会从外部库中删除未使用的类,作为构建 APK 的一部分。
  • 我不打算在不久的将来升级这些库。 ProGuard 仍然无关紧要,因为它使我无法调试应用程序,因为使用 Eclipse 进行调试不会调用 ProGuard
  • 找到解决方案了吗?我还在找一个。这确实展示了如何减少 google play services jar,但对我来说还不够:medium.com/@rotxed/…

标签: java android android-studio


【解决方案1】:

也许一个提示可以帮助您或任何其他对此主题感兴趣的人。来这里的大多数人都面临着实施 multidex 的问题。 然而,对于大多数人来说,主要问题是他们实现了所有的 google play 服务,而不仅仅是来自 google play 服务的特定所需的 api,这会让您达到方法限制计数。

因此,从应用级别的 gradle 依赖项中删除此导入并仅添加所需的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2018-02-08
    • 2021-12-07
    • 1970-01-01
    • 2015-02-24
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多