是的,我看到类似的问题已被问过几年了,但没有得到答复,所以我不得不再给它一次。
我非常恼火的是,我正在构建的简单Android应用程序的.apk文件大小为4MB。
当我分析.apk时,我发现它不仅包含未使用的类(可以使用ProGuard剥离),还包含来自HoloEverywhere的所有图形资源。
我的意思是,即使是我根本没有使用的主题的drawable也在apk中。
这种行为看起来非常不合逻辑,或者可能是我做错了。
最后,我的问题是:有没有办法让.APK只包含所需的数据?
答案 0 :(得分:2)
我的意思是,即使是我根本没有使用的主题的drawable也在apk中。
从构建工具的角度来看,他们没有很好的方法知道你没有使用那些drawables。
此行为看起来非常不合逻辑
欢迎您构建一个可以可靠地检测未使用资源并将其从APK中删除的工具。称之为ResGuard或其他东西。即使是商业DexGuard也不会这样做。
有没有办法让.APK只包含所需的数据?
删除您未使用的内容。你是唯一一个知道这是什么的人,而且由于HoloEverywhere似乎不再被维护,所以你不会担心会有更新。
长期来看,我了解有一个让Gradle for Android的计划允许您过滤掉资源,作为引用AAR的一部分。我还没有意识到这已经存在,您仍然需要知道应该以这种方式过滤哪些资源。这样可以避免修改原始项目。