2

同じコアライブラリ(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機能を使用すると、間違った言語が表示されます。

アイデアは、コンパイル時にcustomer1またはcustomer2をコンパイルするときにvalues / strings.xmlパッケージを変更するように、ant(またはこのようなもの)を使用してEclipseを構成することですが、これを行う方法がわかりません。

android>=3.2を使用するアプリケーションでEclipseJunoを使用しています。

よろしく

4

1 に答える 1

1

このケースはantで解決できます。

ant-contribをダウンロードして、C:\ ant-contrib\ant-contrib-1.0b3.jarに配置しました。

プロジェクトでは、ファイルspecific / lm/strings.xmlを作成しました。

custom_rules.xmlファイルを作成し、antで起動しました。

trueに設定する必要があるlmプロパティを使用します。ターゲット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ビルドプロファイルでMavenスキニングAndroidアプリを使用することもできます

于 2013-01-22T09:27:25.423 に答える