构建Android的本机扩展 - createExtensionContext返回null

时间:2016-05-12 14:33:52

标签: android actionscript-3 air air-native-extension

我一直在尝试在Adobe AIR for Android中构建原生扩展,并偶然发现了一些问题。看起来配置或构建它的步骤有问题。

我已经创建了一个ANEBoilerplate项目,因此我可以深入了解问题的基础。这是我用它的测试代码:

package
{
    import com.tomasz.boilerplate.BoilerplateAS;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    public class BoilerplateTest extends Sprite
    {
        public function BoilerplateTest()
        {
            super();

            // support autoOrients
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            var ane:BoilerplateAS = new BoilerplateAS();
        }
    }

这是ANE [BoilerplateAS.as]的AS3方面的来源:

package com.tomasz.boilerplate
{
    import flash.events.EventDispatcher;
    import flash.external.ExtensionContext;

    public class BoilerplateAS extends EventDispatcher
    {
        private var _extContext:ExtensionContext;

        public function BoilerplateAS()
        {
            super();
            _extContext = ExtensionContext.createExtensionContext("com.tomasz.boilerplate", "");
            if(!_extContext) {
                throw new Error("Boilerplate native extension is not supported on this platform.");
            }
        }
    }
}

问题是我让_extContext等于null。

这是我的extension.xml:

<extension xmlns="http://ns.adobe.com/air/extension/19.0">
    <id>com.tomasz.boilerplate</id>
    <versionNumber>1</versionNumber>
    <platforms>
        <platform name="Android-ARM">
            <applicationDeployment>
                <nativeLibrary>classes.jar</nativeLibrary>
                                <initializer>com.tomasz.boilerplate.MainActivity</initializer>
                                <finalizer>com.tomasz.boilerplate.MainActivity</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>

这是我的扩展目录的结构:

Directory structure

这就是我编译ANE的方式:

adt -package -target ane Boilerplate.ane extension.xml -swc BoilerplateAS.swc -platform Android-ARM -C Android-ARM .

我一直在OSX上使用JDK 1.7.0_79并使用Adobe AIR 21和Adobe AIR 19进行此操作。我对它们都有同样的问题。我也尝试使用JDK 1.8.0_91编译,但仍然是同样的问题。 JDK 1.6不可行,因为我需要更新SDK的Android功能。

有人可以告诉我,我可能做错了吗?有人可以编译这个源并使用它吗?我会感激任何帮助。

0 个答案:

没有答案