我不断回到这个问题,因为似乎没有一个干净的解决方案。有没有人有一个好的策略来从 Android 子项目中排除资源?
我有两种情况:
1 - 基础库项目具有 en、es 等本地化文件。
--子项目1使用所有本地化,一切都很好
--子项目 2 仅本地化为英语,但由于父资源的原因,最终的 .apk 会有部分本地化(尽管 ADT19 左右添加了 Lint 规则来警告/阻止您这样做)。
我现在唯一的解决方案是拥有一个单独的父库用于本地化,并且仅将其包含在子项目 1 中。如果您有很多库项目,这将是一个很大的痛苦。
2 - 排除特定于构建的资源。我有一些图像仅用于我的应用程序的 Nook 特定构建,这些图像由标志触发。条件代码效果很好,但资源始终包含在内。
我不想为我的每一个应用程序创建另一个子项目。有什么方法可以设置构建/编译标志来删除特定的图像资源,这样它们就不会进入最终的 .apk 中?
第二个问题可能是针对我的,但令我惊讶的是我找不到关于第一点的任何好的讨论。没有其他开发人员只本地化某些应用程序吗?还是大多数人都忽视了这个问题?
1 - 基础库项目具有 en、es 等本地化文件。
您有两个项目使用该库,并且只有其中一个需要所有翻译。因此,这些翻译可能位于使用库并需要翻译的项目中,而不是位于库本身中。这与自定义库资源的任何其他项目没有什么不同(例如,替换图标、替换布局)。
现在,一旦您开始进行更复杂的混合(例如,两个项目需要翻译,而第三个项目则不需要),您就会开始遇到问题。
排除特定于构建的资源。我有一些图像仅用于我的应用程序的 Nook 特定构建,这些图像由标志触发。条件代码效果很好,但资源始终包含在内。
Xav 和我聊了一些关于条件资源的话题在这个问题上 http://code.google.com/p/android/issues/detail?id=30895。他的重点是调试与生产(资源相当于BuildConfig.DEBUG
),但听起来更灵活的东西是可能的。
这两件事都可以通过自定义发布构建脚本来处理。在正常的调试版本中,您可以不理会它;在生产构建中,让 Ant 脚本处理项目的副本,在编译、签名和压缩对齐之前删除不需要的目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)