APK包含未使用的资源

时间:2014-08-04 21:38:12

标签: android performance apk adt

是的,我看到类似的问题已被问过几年了,但没有得到答复,所以我不得不再给它一次。

我非常恼火的是,我正在构建的简单Android应用程序的.apk文件大小为4MB。

当我分析.apk时,我发现它不仅包含未使用的类(可以使用ProGuard剥离),还包含来自HoloEverywhere的所有图形资源。

我的意思是,即使是我根本没有使用的主题的drawable也在apk中。

这种行为看起来非常不合逻辑,或者可能是我做错了。

最后,我的问题是:有没有办法让.APK只包含所需的数据?

1 个答案:

答案 0 :(得分:2)

  

我的意思是,即使是我根本没有使用的主题的drawable也在apk中。

从构建工具的角度来看,他们没有很好的方法知道你没有使用那些drawables。

  

此行为看起来非常不合逻辑

欢迎您构建一个可以可靠地检测未使用资源并将其从APK中删除的工具。称之为ResGuard或其他东西。即使是商业DexGuard也不会这样做。

  

有没有办法让.APK只包含所需的数据?

删除您未使用的内容。你是唯一一个知道这是什么的人,而且由于HoloEverywhere似乎不再被维护,所以你不会担心会有更新。

长期来看,我了解有一个让Gradle for Android的计划允许您过滤掉资源,作为引用AAR的一部分。我还没有意识到这已经存在,您仍然需要知道应该以这种方式过滤哪些资源。这样可以避免修改原始项目。