3

AndroidManifest.xml から変数を取得して ant を使用できるかどうかは誰にもわかりませんか?

具体的には、どうにかしてversionCodeversionName、 を出そうとしています。packageName

前もって感謝します。


結論

これは面倒すぎて、この問題はMavenで簡単に解決できるので、私は今のところ迅速な解決の可能性をあきらめました.

4

2 に答える 2

5

たぶん、私が知らないAndroid専用のソリューションがあるかもしれませんが、それとは別に、Androidマニフェストファイルを他のxmlファイルとして扱うことができます->必要なのは、xmlファイルを解析してそこから値を取得するためのantタスクだけです。

Java でカスタム ant タスクを作成することはロケット科学ではないため、使用を試みることができるものは既にあります。

参照: ANT で xml を解析する方法

したがって、あなたの場合は次のようになります(http://www.oopsconsultancy.com/software/xmltask/を使用):

<target name="retrieveFromManifest" desciption="retrieveFromManifest">
    <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
    <xmltask source="${pathToAndroidManifestFile}">
        <copy path="/manifest/@android:versionCode" property="androidVersionCode"/>
        <copy path="/manifest/@android:versionName" property="androidVersionName"/>
        <copy path="/manifest/@package" property="androidPackage"/>
    </xmltask>
    <echo message="Version code: ${androidVersionCode}" />
    <echo message="Version name: ${androidVersionName}" />
    <echo message="package: ${androidPackage}" />
</target>

編集:

Android プロジェクトの build.xml でこれを解析することを考えると、「すぐに使える」xpath タスクがあります。Android プロジェクト用に自動生成されたビルド ファイルは、グローバル SDK のビルド ファイルをインポートし<import file="${sdk.dir}/tools/ant/build.xml" />ます。

<taskdef name="xpath"
        classname="com.android.ant.XPathTask"
        classpathref="android.antlibs" />

そして、数行後の使用例:

<xpath input="AndroidManifest.xml" 
                expression="/manifest/application/@android:hasCode"
                output="manifest.hasCode" default="true"/>
于 2012-04-16T22:29:56.037 に答える
3

実際にはそれほど難しいことではありません:

<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/>

そして、あなたはそれを次のように使います:

${mymanifest.manifest.android:versionName}
于 2014-04-08T12:50:10.710 に答える