java - 根据项目有条件地在 Android (Eclipse) 中包含资源

标签 java android eclipse resources

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

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

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

是否有任何方法可以根据某种项目配置设置有条件地为应用程序和 Activity 使用正确的图标文件?否则,项目维护会增加,因为每次代码库更改时我都必须更改 list ,例如

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

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

...等等,对于所有的 Activity 。

最佳答案

我遇到了类似的问题,最终构建了我的自定义 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 语法,但这并不难。

关于java - 根据项目有条件地在 Android (Eclipse) 中包含资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593043/

相关文章:

java - 间接 Hibernate/JPA 方法调用丢失事务

java - 自定义排序与插入排序

eclipse ee 和 tomcat 7 - 如何添加 library.path

java - 用java读取乌尔都语文件

java - Java 中何时以及如何收集类垃圾?

java - 如何在 Java EE 中运行并行进程

android - 在服务和 Activity 之间传递参数

android - 您可以在 Android 和 iOS 上以编程方式发送带有正文和附件的电子邮件吗?

android - 水平居中 RelativeLayout 的所有 child

android - 如何在 Root设备上使用文件资源管理器?