Java(Android):查找未使用的类

时间:2013-02-12 06:18:55

标签: java android removeclass

在我的Android应用程序中,我使用了很多开源JAVA库作为源代码。它使应用程序的规模非常大。

classes的数量 6000 + 。我想从中删除unused classes。任何人都知道如何做到这一点。我找到了很多工具,但那是为了删除未使用的代码。提前谢谢。

5 个答案:

答案 0 :(得分:2)

使用Proguard。它剥离了未使用的类和库。链接:http://developer.android.com/tools/help/proguard.html

编辑: 超出gc开销限制不是因为您使用的是proguard。因为允许eclipse使用的内存很低。您可以通过增加允许的内存限制(https://www.simplified.guide/eclipse/fix-gc-overhead-limit-exceeded)来解决此问题。这样做,运行proguard,你的应用程序大小将是最小的。

答案 1 :(得分:0)

如果您使用的是开源Java库,那么首先应该找出这些库所分发的许可证。某些许可证不允许您重新打包可分发的许可证,如果您使新软件开源(包括您的代码),其他许可证只允许您重新打包。 http://opensource.org/licenses

所以,在检查了liceneces后,或者联系了权利人。

您可以通过所有第三方代码编写一个跟随类的依赖关系树的工具,并生成一个不在该树中的类列表。我想大多数IDE都不会做你想要的,因为他们会考虑使用或不使用库。

答案 2 :(得分:0)

proguard为java做这个。 从我所看到的它已经是android堆栈的一部分 - http://developer.android.com/tools/help/proguard.html

查看链接并尝试找出它不适合您的原因(可能您没有创建发布版本)。 如果它正在工作,并且你仍然有一个巨大的文件,那么你可能正在使用使用大量文件的库,而且你可以做的事情并不多。

答案 3 :(得分:0)

第一步

使用 Proguard 或 R8 生成 usage.txt 和 mapping.txt

-printusage 添加到您的 proguard.pro 文件运行

./gradlew app:minifyReleaseWithProguard./gradlew app:minifyReleaseWithR8

步骤 2

查找usage.txt中没有mapping.txt中的类名记录,即Proguard/R8删除的未使用类

编写这样的算法并不难,但您可以考虑我使用 Java Set 数据结构的方法

更多详情here

答案 4 :(得分:-4)

6000班?????这就是为什么人们为了删除未使用的代码的编译器而支付2000的原因。如果你把代码放在eclipse中,它会在库下面放一条黄线,而你根本就没有使用变量。

希望这有帮助。