我正在Eclipse中构建一个Android应用程序,并且基于相同的代码库有两个类似的应用程序,一个是“伦敦”,一个是“英国”。要构建每个应用程序,我只需重命名主包并在Application类中更改静态int。该应用程序使用此int的值来显示正确的UI,限制用户行为等。
我有两个图标文件,每个应用一个:
根据某种项目配置设置,有没有办法有条件地为应用程序和活动使用正确的图标文件?否则,项目维护会增加,因为每次代码库更改时我都必须更改清单,例如
<application
android:icon="@drawable/icon_london"
...
>
<activity
android:name="com.company.MainActivity"
android:logo="@drawable/icon_london"
>
</activity>
...依此类推,适用于所有活动。
答案 0 :(得分: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语法,但这并不困难。