我有一个带有多个构建目标的 android 项目(使用 ant)。出于测试目的,这些构建目标都有不同的包名称(因此我的包名称是 com.mycompany.myapp(用于发布构建)和 com.mycompany.myapp.test(用于测试构建)。
这在大多数情况下都适用,但涉及布局文件中的自定义 xml 命名空间时除外。
所以这:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" />
一旦包名称被 com.mycompany.myapp.test 替换,它将停止工作。
因此,我必须在预构建过程中每次都替换 com.mycompany.myapp 值。由于所有这些文件都应该位于 vcs 中,并且每次一个人切换配置并合并它们时都不应该发生冲突,因此我必须将布局文件移动到特定的配置文件夹中,它们看起来像:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/@CONFIG.PACKAGENAME@" />
现在这个文件存储在vcs中,并且@CONFIG.PACKAGENAME@在预构建期间被替换,然后文件从./config/file.xml复制到./res/layout/file.xml。
这非常不方便,而且扩展性也不好(我无法想象在构建脚本中提及 50 个文件中的每一个)。
所以我的问题是:有没有办法在命名空间声明中自动使用当前的包名称?或者至少修改布局文件(或构建文件?),这样我就不必每次更改包名称时都替换 com.mycompany.myapp 。
事实证明有一个后缀:res-auto。
所以你需要做的就是写
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto" />
这将自动使用当前的包名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)