自定义Android Manifest的部分内容

时间:2012-08-29 08:36:05

标签: android ant android-manifest

我正在开发Android应用程序,我想在市场上为不同语言提供几种不同的apks(每种语言都包含大量文件,我想避免使用所有语言包创建一个巨大的apk)。

所以我需要为每种语言自定义Manifest文件:例如应用程序的包和可能的应用程序版本等。我知道如何模板清单,以便我可以手动在文件中的某些点插入我的值(请参阅this post)。问题是我使用ant来准备我的生产apks,但是否则我使用Eclipse开发,所以我也需要我的项目在IDE中工作。 Eclipse需要完整的Manifest文件,据我所知,我不会理解我将用于ant构建的模板(请有人证明我错了)。

我的问题是我想避免维护两个大部分相同的清单文件(一个是模板化的,一个是完整的Eclipse)。目前我可以想到两种可能的方法,但我不知道如何实现它们:

  • 在清单文件中使用某种定义注入:如果我能够在AndroidManifest文件的主体中注入某些xml文件,我可以将相同的部分保存在一个xml部分中并仅自定义差异点
  • 如果可以将Eclipse配置为使用一些ant任务序列来构建Android项目而不是预构建例程,我可以集成我在IDE中构建生产apks的方式。

如果有人知道如何完成上述任何一项,或者有任何其他想法如何解决我的问题:帮助!

2 个答案:

答案 0 :(得分:2)

看看ant替换任务:

<replace file="${build.out}/src/config.prop" token="@@@" value="${build.version}-${build.type}"/>

但是你应该小心它们是独特的价值。

您还可以使用echoxml任务生成的清单替换您的eclipse清单。

或者你可以重用这个关于xml操作的好task

答案 1 :(得分:2)

在我工作的公司,我们几乎使用Eugen提供的方法来自动化应用程序的构建过程,例如应该通过交换某些资产,样式,字符串和配置来简单地标记品牌。我们倾向于按如下方式设置项目和构建过程:

  1. 创建Android项目并进行设置,使其适用于特定品牌。这将确保您仍然可以从Eclipse构建和运行。假设代码库在不同品牌的版本之间没有变化,那应该没问题。
  2. 创建一个ant build配置:
    1. 将要更改的所有文件复制到备份目录
    2. 根据配置文件修改项目文件(见下文)
    3. 编译项​​目源并使用发布密钥对其进行签名(如果进行发布构建)
    4. 从第1步复制文件,覆盖任何更改并将项目恢复为原始状态
  3. 为您的方案中的每个“品牌”或特定语言版本创建配置文件。
  4. 基本上,这些步骤允许您通过简单地使用ant build命令提供适当的配置来创建品牌/合作伙伴/语言特定的构建。在我们的例子中,它看起来像这样:

    ant partner-release -Dpartner=stackoverflow
    

    其中'stackoverflow'将指向具有相同名称的配置。在我们的示例中,这些配置文件是小的xml文件,其中包含要为该特定构建替换的所有参数。它可能包含字符串,但也可能指向应复制到资产/资源中的其他文件(例如徽标图像)。例如:

    <config>
        <version_name>1.00</version_name>
        <version_code>1</version_code>
        ...
    </config>
    

    更多指示:

    • 我们使用xmltask修改项目中的任何xml文件;例如清单和资源。
    • 由于上述任务非常简单易用,我们的构建配置文件也设置为xml文件,如上所示。它非常易读,易于更换。
    • 您还可以使用replaceReplaceRegExp任务来更改几乎所有文件中与配置相关的变量。后者可以特别方便地对源代码进行构建时更改。