我的Eclipse工作区中有一个Android库项目,我将其用作一个独特的工具箱。偶然(1),我刚刚发现库中的资源(xml动画,xml布局,甚至是drawables !!!)被打包到使用该库的项目的APK中,即使我不使用它们。 / p>
阅读Does android always package unused resources?后,我想知道这是否正常。我怎么能避免这个?是不同的图书馆项目的唯一方法吗?
编辑:我发现,反编译.dex,未使用的代码也会进入apk。
(1)我正在尝试为我的应用/res/drawable/icon.png
测试一个新图标,但默认图标会一直显示。我删除了图像,它一直显示默认图标!它必须是库中的/res/drawable-mdpi/icon.png
。
答案 0 :(得分:2)
Proguard可以删除未使用的代码。
但它不会对未使用的资源做任何事情,它也会混淆你的代码。在使用之前你必须先考虑一下。
答案 1 :(得分:2)
新的Android构建系统内置resource stripping mechanism,可以作为构建过程的最后一步运行。除了删除lint标识的资源外,还可以使用它。
请注意,资源剥离机制与Proguard(也与构建系统捆绑在一起)以及在项目中使用库时特别有用。这个想法是:
删除lint标识的未使用资源仍然有用,因为删除它们:
答案 2 :(得分:1)
如前所述,Proguard可以删除未使用的代码。
要删除未使用的资源,您可以使用ADT 16中的Android Lint工具。它不仅可以帮助您删除未使用的资源,还可以帮助您查找潜在的错误。该引用来自其官方网站:
以下是它寻找的错误类型的一些示例:
- 缺少翻译(和未使用的翻译)
- 布局性能问题(旧的layoutopt工具用来查找的所有问题,以及更多)
- 未使用的资源
- 不一致的数组大小(当数组在多个配置中定义时)
- 可访问性和国际化问题(硬编码字符串,缺少内容描述等)
- 图标问题(如缺少密度,重复图标,错误尺寸等)
- 可用性问题(例如未在文本字段中指定输入类型)
- 显示错误等等。