2

Hudson 内で Android アプリケーションを構築するために Maven (3.x) を使用しています。ビルドの一部として、strings.xml ファイルのテキスト置換を行うために、フィルタリング/プロファイルを使用します。

したがって、strings.xml 内には、次のようなエントリがあります。

<string name="app_name">${app_name}</string>

pom.xml ファイル内に、次のプロファイル エントリがあります。

 <profiles>
    <profile>
        <id>local</id>
        <properties>
            <app_env>local</app_env>
       <app_name>Acme-loc</app_name>
        </properties>
    </profile>  
    <profile>
        <id>dev</id>
        <properties>
            <app_env>dev</app_env>
       <app_name>Acme-dev</app_name>
        </properties>
    </profile>      
    ....

*.apk の中を見ると、strings.xml ファイルが正しく置換されています。ただし、デバイスにインストールすると、 ${app_name} が表示され、アプリのコンパイル後に置換が行われていると思われます。置換が行われるビルドのステップを指定できますか?

4

2 に答える 2

4

標準の Maven ビルドでは、リソースのフィルタリングは、パッケージの前にあるコンパイルの前にある process-resources で行われます。リソース フィルタリングをどのように設定し、どのようにパッケージをビルドするかについての詳細がなければ、これ以上のことを言うのは困難です。

編集:おそらく、Android プラグインのgenerate-sourcesゴールを使用して R.java ファイルを生成しているようですよね? これは、generate-sources フェーズにバインドされている可能性が最も高いです。あなたの strings.xml は、 build の後半に来る process-resources フェーズまでフィルタリングされません。リソース フィルタリングが発生した後に android のゴールが実行され、ソース ファイルではなく、出力の strings.xml ファイルを指していることを確認する必要があります。

于 2011-07-19T13:07:34.003 に答える
3

Maven-Android-Pluginサンプルには、MavenリソースフィルタリングをAndroidリソースファイルに適用する方法の例と、それに関する簡単な説明があります。

具体的には、サンプルのMorseflashアプリpom.xmlをご覧ください。

キーポイントは次のとおりです。-

  • initializeフェーズ中にリソースフィルタリングを実行し、出力を/target/filtered-res
  • maven-android-pluginを構成して、フィルター処理されたリソースディレクトリからリソースを取得します。例:

<resourceDirectory>${project.build.directory}/filtered-res</resourceDirectory>

于 2011-08-24T10:15:47.840 に答える