我一直回到这个问题,因为似乎没有一个干净的解决方案。有没有人有一个很好的策略来从Android中的子项目中排除资源?
我有两种情况:
1 - 基础库项目具有en,es等的本地化文件
- 子项目1使用所有本地化,一切都很好
- 子项目2仅本地化为英语,但最终的.apk将由于父资源而具有部分本地化(尽管ADT19左右添加了Lint规则以警告/阻止您这样做)。
我现在唯一的解决方案就是为本地化建立一个单独的父库,并且只将它包含在子项目1中。如果你有很多库项目,这将是一个巨大的痛苦。
2 - 排除特定于构建的资源。我有一些图像仅供我的应用程序的Nook特定版本所需,这些图像由标志触发。条件代码工作得很好,但资源总是包含在内。
我不想为我的每个应用程序创建另一个子项目。有没有办法设置构建/编译标志来修剪特定的图像资源,以便它们不会进入最终的.apk?
第二个问题可能是我特有的,但我很惊讶我找不到关于第一点的任何好的讨论。没有其他开发人员只对某些应用进行本地化吗?或者大多数人都忽略了这个问题?
答案 0 :(得分:3)
1 - 基础库项目具有en,es等的本地化文件
您有两个使用此库的项目,其中只有一个需要所有翻译。因此,那些翻译可能在项目中使用库并需要翻译,而不是在库本身。这与定制库的资源的任何其他项目没有什么不同(例如,替换图标,替换布局)。
现在,一旦你开始涉及更复杂的混音(例如,两个项目需要翻译而第三个不需要翻译),那么你就开始遇到问题了。
排除特定于构建的资源。我有一些图像仅供我的应用程序的Nook特定版本所需,这些图像由标志触发。条件代码工作得很好,但资源总是包含在内。
Xav和我聊了一下条件资源in this issue。他的重点是调试与生产(资源相当于BuildConfig.DEBUG
),但听起来更灵活的可能性。
这两件事都可以通过自定义发布构建脚本来处理。在正常的调试版本中,您可以将其全部保留;在生成版本中,让Ant脚本处理项目的副本,在编译,签名和zipaligning之前修剪掉不需要的目录。