我基于同一个核心库(包含整个UI和所有业务逻辑)为多个客户开发了一个软件。如果一切都很简单,我将在开始项目时引用该库,并使用变量修改核心库中的不同标签。
例如:
Core library : com.test.core
package (and apk) 1 : com.test.core.customer1
apk 2 : com.test.core.customer2
最终结果:根据初始包(标签等)对原始包进行了一些修改。
我试图改变启动包上的语言(例如package1 = fr, package2 = es):启动具有不同资源文件的android应用程序
但缺点很简单:如果我使用一些Android功能,比如复制/粘贴,就会显示错误的语言。
一个想法是用ant(或类似的东西)配置eclipse,以便在编译customer1或customer2时在编译时动态修改values/strings.xml包,但我不知道如何做到这一点。
我使用Eclipse Juno与android>= 3.2的应用程序。
对
这种情况可以用ant解决。
我下载了ant-contrib并把它放在C:ant-contribant-contrib-1.0b3.jar
在项目中,我创建了文件specific/lm/strings.xml.
我创建了custom_rules.xml文件,并使用ant启动它。
它使用lm属性,该属性应该设置为true。您也可以使用目标lm。
<?xml version="1.0" encoding="UTF-8"?>
<project
name="com.test"
default="help" >
<target name="lm">
<property name="lm" value="true"/>
</target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" >
<classpath>
<pathelement location="C:/ant-contrib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
<if>
<equals
arg1="${lm}"
arg2="true" />
<then>
<property name="startproject" value="specific/lm"/>
<echo message="Build spécial LM / Projet : ${startproject}" />
</then>
</if>
<copy file="${startproject}/strings.xml"
tofile="res/values/strings.xml"
overwrite="true" />
</project>
你也可以使用maven skin Android应用程序与maven构建配置文件