有条件的资源包含/排除Android的apk版本

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

我有两种情况:

1 – 基础库项目为en,es等提供本地化文件

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

– 儿童项目2仅本地化为英语,但最终的.apk将由于父资源而具有部分本地化(尽pipeADT19添加了Lint规则来警告/阻止您这样做)。

我现在唯一的解决scheme是为本地化设置一个单独的父库,并且只将它包含在子项目1中。如果有很多库项目,这是一个很大的麻烦。

2 – 排除特定于build筑物的资源。 我有一些图片仅仅是我的应用程序的Nook特定的版本所需要的,这是由一个标志触发的。 有条件的代码工作得很好,但资源总是包含在内。

我宁愿不为每一个我的应用程序创build另一个子项目。 有没有办法设置一个编译/编译标志来修剪特定的图像资源,所以他们不进入最后的.apk?

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

Solutions Collecting From Web of "有条件的资源包含/排除Android的apk版本"

1 – 基础库项目为en,es等提供本地化文件

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

现在,一旦开始进入更复杂的混音(例如,两个项目需要翻译,三分之一不需要),那么你开始遇到问题。

排除构build特定的资源。 我有一些图片仅仅是我的应用程序的Nook特定的版本所需要的,这是由一个标志触发的。 有条件的代码工作得很好,但资源总是包含在内。

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

这两件事都可以通过自定义发行版本脚本来处理。 在正常的debugging版本中,你会放弃一切; 在生产版本中,在编译,签名和zipaligning之前,有一个Ant脚本处理项目的副本,修剪不需要的目录。