Apache flex 在Flex 3.6 SDK中创建本机扩展时发生ExtensionContext错误

Apache flex 在Flex 3.6 SDK中创建本机扩展时发生ExtensionContext错误,apache-flex,air,flash-builder,air-native-extension,Apache Flex,Air,Flash Builder,Air Native Extension,我正在用Flex3.6创建本机扩展。编码本机端然后创建Flex库项目,然后创建.ane文件。最后将.ane文件导入myFlex项目新建>Flex库项目 选中“包含Adobe AIR库”选项 谢谢,但最后我发现该扩展正在Flex v4.6 SDK上运行。所以我使用的FlexSDK中的问题是v3.6。我在SDK v3.6.0的flash.external包中已经看不到ExtensionContext类。这就是问题所在。现在我正在尝试了解FlexV3.6是否支持本机扩展。如果是,请说明如何在v3.6中

我正在用Flex3.6创建本机扩展。编码本机端然后创建Flex库项目,然后创建.ane文件。最后将.ane文件导入myFlex项目<这就是我遇到的问题。调试应用程序时,出现“1046:Type未找到或不是编译时常量:ExtensionContext”错误。附加了库项目。作为类

提前谢谢

package com.extension.samples
{
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import flash.external.ExtensionContext;

    public class NetworkConnectionANE extends EventDispatcher
    {
        public var _extContext : ExtensionContext;

        public function NetworkConnectionANE(target:IEventDispatcher=null)
        {
            _extContext = ExtensionContext.createExtensionContext("com.extension.samples.NetworkConnectionANE", null);
            super(target);
        }
        public function Connect(path:String):int
        {
            return _extContext.call("nativeFunc", path);
        }
        public function dispose():void
        {
            _extContext.dispose();
        }
    }
}
编辑: 我试图在另一个Flex桌面应用程序中使用从库项目创建的.swc文件,但出现了相同的错误
还尝试了使用_extContext=ExtensionContext.createExtensionContext(“com.extension.samples.NetworkConnectionANE”和“”)

编辑:关于FlexSDK的问题,在SDK 4.6中没有问题。现在的问题是,如何在Flex3.6SDK的lib项目中使用扩展

我知道ExtensionContext.createExtensionContext()在以下情况下可以为null:

  • 呼叫不在.ane文件中。不能从.swc或.swf文件调用此函数。换句话说,在调用它之前,它需要编译成一个.ane文件

  • 您尝试在扩展不支持的平台中使用扩展。例如,您尝试在PC上使用iOS扩展

  • 扩展的ID不存在。扩展ID必须与extension.xml中指定的ID相同,如:

    <extension xmlns="http://ns.adobe.com/air/extension/3.5">
        <id>com.extension.samples.NetworkConnectionANE</id>
        <versionNumber>0.0.1</versionNumber>
        ....
    
    
    com.extension.samples.NetworkConnectionANE
    0.0.1
    ....
    

  • 顺便说一句,您不需要设置ExtensionContext.createExtensionContext调用的第二个参数,除非您想指定特定于操作系统的API(我甚至没有见过这样做的应用程序)

    在flash builder中的项目上单击鼠标右键,转到项目的属性,并在flex library编译器中添加air库。

    我遇到了相同的问题,但通过以下方式解决了该问题:

  • 文件>新建>Flex库项目
  • 选中“包含Adobe AIR库”选项

  • 谢谢,但最后我发现该扩展正在Flex v4.6 SDK上运行。所以我使用的FlexSDK中的问题是v3.6。我在SDK v3.6.0的flash.external包中已经看不到ExtensionContext类。这就是问题所在。现在我正在尝试了解FlexV3.6是否支持本机扩展。如果是,请说明如何在v3.6中为本机Ext.@nthere9 Its创建库项目,因为它使用旧版本的AIR。ExtensionContext.createExtensionContext需要AIR 2.5。您可以在xmnlns标记中看到扩展的xml文件中使用了什么(我的示例使用3.5)。为什么需要使用Flex 3.6?ANE-s不应该包含任何Flex代码…你说得对,当我使用3.6创建时,我看到消息“Flex 3.6需要Air v1.5”,但在Air v3.0 for desktop()之后支持本机扩展,感谢+1这是解决
    flash.external.ExtensionContext
    编译时错误的正确方法