9

我的 Eclipse 工作区中有一个 Android 库项目,我将其用作独特的工具箱。偶然(1),我刚刚发现库中的资源(xml 动画、xml 布局,甚至 drawables!!!)被打包到使用该库的项目的 APK 中,即使我不使用它们。

看完后android总是打包未使用的资源吗?, 请问这是否正常。我怎样才能避免这种情况?拥有不同图书馆项目的唯一方法是什么?

编辑:我发现,反编译.dex,未使用的代码也进入了apk。

(1)我试图为我的应用程序测试一个新图标/res/drawable/icon.png,但默认图标会一直出现。我删除了图像,它一直显示默认图标!一定是/res/drawable-mdpi/icon.png图书馆的

4

3 回答 3

3

新的 Android 构建系统具有内置的资源剥离机制,可以作为构建过程的最后一步运行。除了删除 lint 识别的资源之外,还可以使用它。

请注意,资源剥离机制与Proguard(也与构建系统捆绑在一起)以及在项目中使用库时特别有用。这个想法是:

  • Proguard 会删除您不使用的类,包括那些来自库的类。
  • 上述过程可以删除对这些库中包含的资源的代码引用。
  • 因此可以从 APK 中剥离那些未引用的资源,因为不再有代码使用它们。

删除 lint 标识的未使用资源仍然很有用,因为删除它们:

  • 加快构建速度
  • 减少项目的维护负担。
于 2015-07-15T22:15:05.077 回答
2

Proguard可以剥离未使用的代码。

但它不会对未使用的资源做任何事情,它也会混淆你的代码。在使用它之前,您必须考虑一下。

于 2011-04-06T12:11:04.363 回答
1

正如有人之前所说,Proguard可以剥离未使用的代码。

要删除未使用的资源,您可以使用ADT 16 中的Android Lint工具。它不仅可以帮助您删除未使用的资源,还可以发现潜在的错误。此报价来自其官方网站:

以下是它查找的错误类型的一些示例:

  • 缺少翻译(和未使用的翻译)
  • 布局性能问题(旧的 layoutopt 工具用来查找的所有问题,等等)
  • 未使用的资源
  • 数组大小不一致(当数组在多个配置中定义时)
  • 可访问性和国际化问题(硬编码字符串、缺少 contentDescription 等)
  • 图标问题(如缺少密度、重复图标、错误尺寸等)
  • 可用性问题(例如未在文本字段上指定输入类型)
  • 显示错误等等。
于 2011-12-14T17:04:16.307 回答