如何从应用程序描述符文件中读取版本

inv*_*ear 3 xml apache-flex air actionscript-3 air2

所以我有一个AIR应用程序的基本应用程序描述符文件.它看起来像这样,缩短了理智:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
  <version>1.0.10</version>
</application>
Run Code Online (Sandbox Code Playgroud)

现在我想在应用程序中显示版本,但我不想在多个地方维护版本,那么如何从应用程序中读取该版本号?

Cor*_*nga 6

检查以下代码:

            var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
            var ns:Namespace = appXml.namespace(); 
            trace(appXml.ns::version); 
Run Code Online (Sandbox Code Playgroud)


T G*_*ham 6

在最新版本的AIR(AIR版本3.x)中,这稍有改变.而不是appXml.ns :: version,而是使用appXml.ns :: versionNumber.

请注意,appXml.ns :: versionNumber是一个由单个XML对象组成的XMLList,因此如果要获取实际的String值,需要进行一些挖掘:

var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXml.namespace();
var appVersion:String = appXml.ns::versionNumber[0].toString();
trace("appVersion", appVersion);
Run Code Online (Sandbox Code Playgroud)

更新,2017年3月17日:在某些时候,他们再次更改了AIR的applicationDescriptor.以下代码适用于AIR 23:

var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:String = appXml.namespace().toString();
var nsArray:Array = ns.split("/");
var appVersion:Number = nsArray[nsArray.length - 1];
trace("appVersion:", appVersion); // appVersion: 23.0
Run Code Online (Sandbox Code Playgroud)