我正在开发Android应用程序,我想在市场上为不同语言提供几种不同的apks(每种语言都包含大量文件,我想避免使用所有语言包创建一个巨大的apk)。
所以我需要为每种语言自定义Manifest文件:例如应用程序的包和可能的应用程序版本等。我知道如何模板清单,以便我可以手动在文件中的某些点插入我的值(请参阅this post)。问题是我使用ant来准备我的生产apks,但是否则我使用Eclipse开发,所以我也需要我的项目在IDE中工作。 Eclipse需要完整的Manifest文件,据我所知,我不会理解我将用于ant构建的模板(请有人证明我错了)。
我的问题是我想避免维护两个大部分相同的清单文件(一个是模板化的,一个是完整的Eclipse)。目前我可以想到两种可能的方法,但我不知道如何实现它们:
如果有人知道如何完成上述任何一项,或者有任何其他想法如何解决我的问题:帮助!
答案 0 :(得分:2)
看看ant替换任务:
<replace file="${build.out}/src/config.prop" token="@@@" value="${build.version}-${build.type}"/>
但是你应该小心它们是独特的价值。
您还可以使用echoxml任务生成的清单替换您的eclipse清单。
或者你可以重用这个关于xml操作的好task。
答案 1 :(得分:2)
在我工作的公司,我们几乎使用Eugen提供的方法来自动化应用程序的构建过程,例如应该通过交换某些资产,样式,字符串和配置来简单地标记品牌。我们倾向于按如下方式设置项目和构建过程:
基本上,这些步骤允许您通过简单地使用ant build命令提供适当的配置来创建品牌/合作伙伴/语言特定的构建。在我们的例子中,它看起来像这样:
ant partner-release -Dpartner=stackoverflow
其中'stackoverflow'将指向具有相同名称的配置。在我们的示例中,这些配置文件是小的xml文件,其中包含要为该特定构建替换的所有参数。它可能包含字符串,但也可能指向应复制到资产/资源中的其他文件(例如徽标图像)。例如:
<config>
<version_name>1.00</version_name>
<version_code>1</version_code>
...
</config>
更多指示:
xmltask
修改项目中的任何xml文件;例如清单和资源。replace
和ReplaceRegExp
任务来更改几乎所有文件中与配置相关的变量。后者可以特别方便地对源代码进行构建时更改。