加载初始内容Adobe air时出现ADL错误

问题描述 投票:6回答:3

我是AdobeAir的新手。我通过以下链接开始使用helloworld应用程序。

http://help.adobe.com/en_US/air/build/WS144092a96ffef7cc4c0afd1212601c9a36f-8000.html

我能够成功编译HelloWorld.mxml文件,但我无法通过以下命令adl HelloWorld-app.xml运行该应用程序。加载初始内容时错误消息说..错误。

另外我附加了HelloWorld-app.xml

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.0">
    <id>samples.flex.HelloWorld</id>
    <version>0.1</version>
    <filename>HelloWorld</filename>
    <initialWindow>
        <content>HelloWorld.swf</content>
        <visible>true</visible>
        <systemChrome>none</systemChrome>
        <transparent>true</transparent>
        <width>400</width>
        <height>200</height>
    </initialWindow>
</application>

和HelloWorld.mxml是

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://`enter code here`ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" 
                       title="Hello World"> 

    <s:Label text="Hello AIR" horizontalCenter="0" verticalCenter="0"/> 
</s:WindowedApplication>

请帮我。

air
3个回答
7
投票

根据this blog post,您应该检查HelloWorld-app.xml中的命名空间行是否与您的AIR版本匹配。

例如,使用Flex 4.6发行版附带的mxml / adl工具,似乎是正确的命名空间行

<application xmlns="http://ns.adobe.com/air/application/3.1">

您的mxmlc或amxmlc编译器也不是来自比adl更新的SDK。

例如,您无法在AIR 2.6中运行adl中使用Flex 4.6编译的AIR应用程序,您需要使用Flex 4.5工具。


7
投票

谢谢,您的回答有助于解决我的IntelliJ Idea和最新的FLEX / AIR软件包的问题。为了解决这个错误,我必须为我的模块提供一个修改过的应用程序描述符文件,因为自动生成的文件有这个设置:

<application xmlns="http://ns.adobe.com/air/application/2.0">

这里是创建自定义应用程序描述符文件所需的步骤:

文件 - 项目结构 - 模块 - AIR包 - 自定义模板 - 创建

选择最小的AIR版本(实际上是Flex 4.10,我认为它是AIR 3.8),您的模块将编译并运行没有问题。

见截图here


5
投票

xmlns中找到的AIR命名空间编号只是故事的一半。这定义了显示内容所需的最小运行时版本。故事的另一半是-swf-version是编译的内容。

如果使用比AIR adl可以处理的更新的-swf-version编译SWF,则会在加载初始内容时收到“错误”消息。

我从another answer拿起这张桌子并添加了AIR版本信息(source):

  SWF Version  |  Flash Player Version  |  AIR Version
---------------+------------------------+---------------
        9      |        9.0.115.0       |      N/A
       10      |        10.0, 10.1      |      1.5, 2.0
       11      |        10.2            |      2.6
       12      |        10.3            |      2.7
       13      |        11.0            |      3
       14      |        11.1            |      3.1
       15      |        11.2            |      3.2
       16      |        11.3            |      3.3
       17      |        11.4            |      3.4
       18      |        11.5            |      3.5
       19      |        11.6            |      3.6
       20      |        11.7            |      3.7
       21      |        11.8            |      3.8
       22      |        11.9            |      3.9
       23      |        12              |      4
       24      |        13              |      13
       25      |        14              |      14
       26      |        15              |      15
       27      |        16              |      16
       28      |        17              |      17
       29      |        18              |      18
       30      |        19              |      19
       31      |        20              |      20
       32      |        21              |      21
       33      |        22              |      22
       34      |        23              |      23
       35      |        24              |      24
       36      |        25              |      25
       37      |        26              |      26
       38      |        27              |      27
       39      |        28              |      28
       40      |        29              |      29
       41      |        30              |      30
       42      |        31              |      31

您可以使用Flex和AIR SDK中包含的-swf-version实用程序确定SWF文件的swfdump

> swfdump example.swf | grep -i '<swf'
<swf xmlns='http://macromedia/2003/swfx' version='18' framerate='24' size='10000x7500' compressed='false' >

上面的SWF是用-swf-version=18编译的,因此需要AIR 3.5或更新版本,以及xmlns="http://ns.adobe.com/air/application/3.5"

另请注意,较新的工具仍然可以针对较旧的-swf-versions。因此,您可以构建与旧AIR和Flash播放器兼容的SWF。请注意检查文档中使用的API。一些较新的API(如BitmapData.drawWithQuality)列出了运行时版本下的最低播放器版本要求。

© www.soinside.com 2019 - 2024. All rights reserved.