5

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

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

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

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

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

4

2 回答 2

2

看一下 ant replace 任务:

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

但是,您应该再次注意它们是唯一的值。

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

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

于 2012-08-29T11:05:31.990 回答
2

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

  1. 创建 Android 项目并将其设置为适用于特定品牌。这将确保您仍然可以从 Eclipse 构建和运行。假设代码库在不同品牌的版本之间没有变化,那应该没问题。
  2. 创建一个 ant 构建配置:
    1. 将要更改的所有文件复制到备份目录
    2. 根据配置文件修改项目文件(见下文)
    3. 编译项目源代码并使用发布密钥对其进行签名(如果进行发布构建)
    4. 复制步骤 1 中的文件,覆盖所有更改并将项目恢复到原始状态
  3. 为场景中的每个“品牌”或特定语言版本创建配置文件。

基本上,这些步骤将允许您通过简单地使用 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任务来更改几乎任何文件中的配置相关变量。后者可以特别方便地对源代码进行构建时更改。
于 2012-08-31T07:01:39.790 回答