我使用Maven Android Plugin来构建我的应用程序。
实际上,我正在为同一个应用程序构建3个"品牌"版本(应用程序图标,颜色等)……改变,但不要改变特性)。我知道我需要为每个应用程序使用不同的包名,以便它们被认为是不同的。
到目前为止,我已经设法拥有"动态"值,使用Maven过滤器在strings.xml:
<string name="app_name">${app_name}</string>
<string name="widget_name">${widget_name}</string>
<string name="app_icon">${app_icon}</string>
问题是这对包名不起作用!如果我这样做:
<manifest package="${foo.bar}">
ADT(实际上是XML验证器)报错说属性包有无效字符'$'
我找不到任何解决方法…是否有一种方法可以告诉ADT启动Maven资源过滤或类似的东西?
经过进一步研究,这似乎相当容易!
您只需要在Maven Android Plugin的配置中添加<renameManifestPackage>
。从版本> 2.9.0开始:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>maven-android-plugin</artifactId>
<version>2.9.0-beta-5</version>
<configuration>
...
<renameManifestPackage>${manifest_package}</renameManifestPackage>
</configuration>
</plugin>