我有一个Android应用程序,我分发给几个不同的市场提供商;应用程序在功能上对每个应用程序都相同,但需要某些不同的配置参数。理想情况下,我想在一个构建步骤中生成所有单独的APK。是否有“官方”方式来实现这一目标?
我正在考虑一种在项目结构中有模板文件的方法,在构建时使用ant将值插入到输出文件中,例如res / xml / config.xml。
提前致谢!
答案 0 :(得分:3)
有几种方法可以解决这个问题:
1)设置Android库应用程序 (专为Eclipse设计)
这是Android文档中建议的方法。使用此方法,您可以将应用程序设置为"Library Project"。
然后,对于您想要生成的每个特定构建,您将设置一个references先前创建的Library Project的新Android项目。这个项目需要有自己的AndroidManifest,它声明了库应用程序使用的组件。由于每个应用程序都有自己的清单,因此几乎可以通过交换组件或更改信息来进行任何类型的自定义。但是,虽然允许复杂的差异,但如果差异很小,这确实会在维护方面产生一些冗余。
2)构建ANT脚本或其他构建脚本来操作配置
ANT脚本可以在构建时操纵源文件或XML文件以允许自定义配置。最简单的方法是使用unix sed或python / ruby脚本来进行自定义。这是定制仅限于小变化和/或仅文本替换的理想选择。在大多数情况下,这是我的选择路线。
我建议在进行操作之前将源树复制到临时目录,以便可以在“ant clean”上清除它,并且不会影响源的工作副本。
对此的一个警告是我将设计修改,使得源仍然在不运行脚本的情况下构建(即,因此您可以在eclipse或任何其他环境中开发时执行标准构建,而无需运行特殊脚本)。 / p>
答案 1 :(得分:1)
您可以为您的apk设置基于Maven Android插件的构建,该构建使用资源过滤和配置文件为您的不同配置。检查官方样本项目的morseflash示例,看看它是如何详细完成的。
一旦设置了配置文件,您就可以使用maven调用程序插件在一次扫描中运行它。如果你想让它自动化,只需将构建放在Hudson上。
http://code.google.com/p/maven-android-plugin/
http://code.google.com/p/maven-android-plugin/wiki/Samples
http://www.simpligility.com/2010/11/release-version-management-for-your-android-application/
答案 2 :(得分:0)
我使用一个ant脚本,它会读取一些构建时参数并为我生成适当的APK(appname-1.1_ggl,appname-1.1_amz.apk,其中分别包含指向Google Market或Amazon Market的链接)。手动运行两次并不是什么大问题。
这可能不太现实,取决于你有多少排列(你没有提到),但你可以使用subant
。为您需要调用的每个排列使用不同的buildpath
和后续build.properties
。
答案 3 :(得分:0)
我使用的库项目包含所有代码和两个(或更多)项目引用该库。
库项目在其res文件夹中有一个名为config.xml的资源文件,该文件在其他项目中被覆盖。 这样我可以有不同的应用程序设置,每个构建都有自己的manifest.xml,因此您可以为每种构建类型配置不同的东西。
这也允许您拥有特定代码/权限/ ...只有特定构建需要,并使构建过程非常容易。