8

我一直回到这个问题,因为似乎没有一个干净的解决方案。有没有人有一个很好的策略来从 Android 的子项目中排除资源?

我有两种情况:

1 - 基础库项目有 en、es 等的本地化文件。

--子项目1使用所有本地化,一切都很好

--子项目 2 仅本地化为英语,但最终的 .apk 将由于父资源而进行部分本地化(尽管 ADT19 左右添加了 Lint 规则来警告/防止您这样做)。

我现在唯一的解决方案是有一个单独的本地化父库,并且只将它包含在子项目 1 中。如果你有很多库项目,这将是一个很大的痛苦。

2 - 排除特定于构建的资源。我有一些仅适用于我的应用程序的特定于 Nook 的构建所需的图像,这些图像由标志触发。条件代码效果很好,但总是包含资源。

我不想为我的每一个应用程序创建另一个子项目。有没有办法设置构建/编译标志来修剪特定的图像资源,这样它们就不会进入最终的.apk?

第二个问题可能是我特有的,但我很惊讶我找不到关于第一点的任何好的讨论。没有其他开发人员只本地化一些应用程序吗?还是大多数人只是忽略了这个问题?

4

1 回答 1

3

1 - 基础库项目有 en、es 等的本地化文件。

你有两个项目使用这个库,其中只有一个需要所有的翻译。因此,这些翻译可能在使用库并需要翻译的项目中,而不是在库本身中。这与任何其他项目自定义库资源(例如,替换图标、替换布局)没有什么不同。

现在,一旦您开始进行更复杂的混合(例如,两个项目需要翻译而第三个不需要),您就会开始遇到问题。

排除特定于构建的资源。我有一些仅适用于我的应用程序的特定于 Nook 的构建所需的图像,这些图像由标志触发。条件代码效果很好,但总是包含资源。

Xav 和我在这个问题上聊了一点条件资源。他的重点是调试与生产(资源相当于BuildConfig.DEBUG),但听起来更灵活的东西是可能的。

这两件事都可以通过自定义发布构建脚本来处理。在正常的调试版本中,您将不理会它;在生产构建中,在编译、签名和压缩对齐之前,让 Ant 脚本处理项目的副本,修剪掉不需要的目录。

于 2012-07-02T22:47:42.607 回答