我正在 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/