我开发我想船在市场上不同的语言几种不同的APK(每种语言包括一个巨大的文件包,我想避免与所有语言包创建一个巨大的APK),Android应用程序。
所以,我需要的是定制位每种语言的清单文件:例如应用程序的包,可能的应用程序版本等。我知道我可以在模板清单,以便我可以手动插入在某些点上我的价值观文件(参见这篇文章 )。 问题是,我使用ant准备我的生产的APK,但除此之外,我开发使用Eclipse的,所以我需要我的项目在IDE中工作过。 Eclipse的要求完整清单文件,也不会明白,我将使用蚂蚁模板的,据我所知构建(请别人证明我错了)。
我的问题是,我想避免维持两个能在很大程度上(一个模板,一个完整的Eclipse)相同的清单文件。 目前我能想到的两种可能的方法,但我不知道如何去实现它们:
- 使用某种类型的定义注入的清单文件:如果我能够注入一定的XML文件中AndroidManifest文件的身体,我可以保持相同的部分在一个XML部件和定制唯一不同的点
- 如果有可能配置Eclipse使用Ant任务序列的一些建设项目的Android,而不是预生成程序我也许能我建立我的生产的APK在IDE的方式进行整合。
如有的人谁知道如何完成上述任何两个,或有任何其他想法,我怎么能解决我的问题:救命!
以蚂蚁替换任务来看一看:
<replace file="${build.out}/src/config.prop" token="@@@" value="${build.version}-${build.type}"/>
但同样,你应该小心,他们是唯一的值。
你也可以用产生的舱单代替你的Eclipse清单echoxml任务。
或者你可以重用这个漂亮的任务有关XML操作。
在我工作的公司,我们几乎使用由欧根给出的方法来自动执行,例如应该简单地通过交换部分资产,样式,字符串和配置不同品牌的应用程序的构建过程。 我们倾向于建立项目和编译过程如下:
- 创建Android项目,并设置它,使得它适用于一个特定的品牌。 这将确保你仍然可以建立,并从Eclipse中运行。 假设该代码库不打上不同版本之间的变化,这应该是罚款。
- 创建一个Ant构建配置是:
- 副本的任何文件,这些文件将被改变为一个备份目录
- 根据配置文件修改项目文件(见下文)
- 编译项目源,并释放键的标志(如果做一个发布版本)
- 副本从步骤1备份文件,覆盖任何变化,该项目返回其原始状态
- 创建你的情况下,每个“品牌”,或语言特定版本的配置文件。
基本上,这些步骤将允许您创建品牌/合作伙伴/语言特定的建立只需提供与Ant构建命令适当的配置。 在我们的情况下,它看起来有点像这样:
ant partner-release -Dpartner=stackoverflow
其中,“计算器”将指向具有相同名称的配置。 在我们的情况下,这些配置文件是包含所有将被替换为特定生成的参数小的XML文件。 它可以包含字符串,但还不如指向应该被复制到资产/资源的其他文件(如标志图像)。 例如:
<config>
<version_name>1.00</version_name>
<version_code>1</version_code>
...
</config>
一些更多的指针:
- 我们使用
xmltask
修改项目中的任何XML文件; 如清单和资源。 - 由于上述的任务是很容易使用,我们构建配置文件也被设置为XML文件,如上图所示。 这是相当人类可读,并且简单易懂改变。
- 您还可以使用
replace
和ReplaceRegExp
任务改变几乎任何文件配置相关的变量。 后者可以使构建时更改源代码特别方便。