AndroidManifest.xml から変数を取得して ant を使用できるかどうかは誰にもわかりませんか?
具体的には、どうにかしてversionCode
、versionName
、 を出そうとしています。packageName
前もって感謝します。
結論
これは面倒すぎて、この問題はMavenで簡単に解決できるので、私は今のところ迅速な解決の可能性をあきらめました.
たぶん、私が知らないAndroid専用のソリューションがあるかもしれませんが、それとは別に、Androidマニフェストファイルを他のxmlファイルとして扱うことができます->必要なのは、xmlファイルを解析してそこから値を取得するためのantタスクだけです。
Java でカスタム ant タスクを作成することはロケット科学ではないため、使用を試みることができるものは既にあります。
したがって、あなたの場合は次のようになります(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"/>
実際にはそれほど難しいことではありません:
<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/>
そして、あなたはそれを次のように使います:
${mymanifest.manifest.android:versionName}