1

我正在 Eclipse 中构建一个 Android 应用程序,并且有两个基于相同代码库的类似应用程序,一个是“伦敦”,一个是“英国”。要构建每个应用程序,我只需重命名主包并更改 Application 类中的静态 int。应用程序使用此 int 的值来显示正确的 UI、限制用户行为等。

我有两个图标文件,每个应用程序一个:

  • res/drawable-hdpi/icon_london.png
  • res/drawable-hdpi/icon_uk.png

有没有办法根据某种项目配置设置有条件地为应用程序和活动使用正确的图标文件?否则,项目维护会增加,因为每次代码库更改时我都必须更改清单,例如

<application
    android:icon="@drawable/icon_london"
    ...
    >

    <activity
        android:name="com.company.MainActivity" 
        android:logo="@drawable/icon_london"
        >
    </activity>

...等等,对于所有的活动。

4

1 回答 1

1

我遇到了类似的问题,最终构建了我的自定义 Ant 脚本来构建应用程序。您可以运行宏或正则表达式来分配一种或另一种资源。

编辑:

首先,将 build.xml 添加到项目中:

打开命令提示符并导航到项目目录:

android update project --path

然后,您可以覆盖现有的 build.xml,如下所示。

注意:这个 Ant 脚本只是一个例子,我没有测试过:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Example" default="help">
    <property file="local.properties" />
    <property file="ant.properties" />

    <loadproperties srcFile="project.properties" />

    <!-- quick check on sdk.dir -->
    <fail
            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
            unless="sdk.dir"/>

    <!-- IMPORT ANT?S BUILD.XML -->
    <import file="${sdk.dir}/tools/ant/build.xml" />

    <property name="app.icon"       value="${icon}" />
    <property name="icon.file"      location="res/drawable/icon.png" />

    <target name="test-release">
      <antcall target="test-pre-release" />
      <antcall target="release" />
    </target>

    <target name="test-pre-release">
      <copy file="${app.icon}" tofile="${icon.file}" overwrite="true"/>
    </target>

</project>

然后,要使用自定义图标构建此项目,请打开命令提示符并转到项目目录:

CALL ant -f build.xml test-release -Dicon=path/to/your/icon.png

如前所述,这是一个非常基本的示例。要构建一个好的脚本,您必须学习一点 Ant 语法,但这并不难。

于 2012-07-21T14:38:50.273 回答