在我的Android应用程序中,我使用了很多开源JAVA库作为源代码。它使应用程序的规模非常大。
classes
的数量 6000 + 。我想从中删除unused classes
。任何人都知道如何做到这一点。我找到了很多工具,但那是为了删除未使用的代码。提前谢谢。
答案 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中,它会在库下面放一条黄线,而你根本就没有使用变量。
希望这有帮助。