>有谁知道是否可以从AndroidManifest.xml获取变量供蚂蚁使用?
具体来说,我试图以某种方式获得versionCode
、versionName
和packageName
。
提前谢谢。
结论
这似乎太麻烦了,而且由于这个问题很容易用Maven解决,我暂时放弃了快速解决的可能性。
也许有一个 android 专用解决方案,我不知道,但除此之外,您可以将 android 清单文件视为任何其他 xml 文件 ->,所以您所需要的只是一个用于解析 xml 文件并从中检索值的 ant 任务。
由于在 Java 中编写自定义 Ant 任务不是一门火箭科学 - 您可以尝试使用 AllReady 的东西。
请参阅: 如何通过 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项目的构建中解析它.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}