检查是否在Android应用中使用了库

时间:2015-10-13 02:23:06

标签: android dependencies android-gradle libraries build.gradle

我在build.gradle收到了一些遗留的应用程序代码(不是我开发的,但是由其他团队开发,没有文档),它有近20个以上的依赖项。

现在,我希望通过从build.gradle

中删除它们来清理未使用的库/依赖项

我在Google上搜索并遇到了http://php.net/manual/en/mysqli-stmt.bind-param.php资源缩减的问题。但它似乎用于在打包时在打包的应用程序中删除未使用的资源,如果您的应用程序实际上不需要它们,这也会从您依赖的库中删除资源。

另外,我使用ProGuardshrinkResources true中的build.gradle一起进行混淆和缩小

我的目的是从build.gradle中删除未使用的库/依赖项,而不会破坏应用程序功能。

是否有方法或工具可以在不破坏应用功能的情况下显示哪些库可以安全删除?

4 个答案:

答案 0 :(得分:1)

通过20多个依赖项,您不需要任何工具,可以进行手动检查。

我会这样:

  1. 注释掉所有依赖项并检查失败的原因(见下文)
  2. 取消注释导致失败的依赖项
  3. 重复

这样,您可能还会注意到很少使用或可以用标准库或项目中使用的其他库替换的依赖项。

以下内容将指示您需要依赖项(以减慢反馈循环的顺序):

  • 编译错误
  • 单元测试错误
  • 集成/系统/端到端/设备测试错误(无论您使用和调用的错误)
  • 运行时的应用程序功能
  • 运行时应用程序的性能

运行时依赖性可能特别棘手。例如,您的代码可能不依赖于库,但是此库为您依赖的其他一些库提供了运行时实现。由于缺少功能或性能问题,删除此类依赖项仅在运行时可见。

答案 1 :(得分:0)

与其注释掉所有依赖关系,不如反过来-一次注释掉一个依赖关系,看看有什么坏处。这样,您还将掌握所有依赖项的用例,因为IDE会将您指向代码中断的地方。如果在注释依赖项后一切都没有中断,您会知道它没有被使用。您可能要做的另一件事是分析未混淆的发行版.apk,其中所有未使用的依赖项都将丢失,但包结构将被保留。

答案 2 :(得分:0)

在多种情况下都会出现查找Android应用中使用的库和资源的情况。

对于在Google Play中发布的应用, AppBrain 维护从库到使用它的更流行应用的反向查找。例如,使用新版2D游戏library Godot的应用。

直接

Apktool will decode APK。

相反,作者希望从源代码和构建过程开始查找(未使用的)资源。上面的Gabriele Mariotti链接到该问题,该问题的接受答案提供了Gradle配置中的on use of minifyEnabled shrinkResources 的详细信息。

查看Shrinking Android应用和ProGuard vs R8

答案 3 :(得分:0)

如果您要查找未使用的库或导入,可以通过“ Ctrl + alt + shift + i” 轻松查看,然后键入“未使用的导入”

您现在可以看到所有未使用的导入。