Платформа Adobe AIR ANE по умолчанию не может найти имя метода - PullRequest
0 голосов
/ 09 марта 2012

У меня есть Adobe AIR ANE, который прекрасно работает и работает на iOS.Я хочу запустить это приложение в симуляторе AIR, но с версией actioncript нативного ANE.

При чтении документов кажется, что для этого идеально подойдет профиль по умолчанию.

Iдобавил профиль по умолчанию в файл extension.xml.Я добавил реализацию AS собственного интерфейса для каждого проекта в моей рабочей области.Я сделал методы статическими / не статичными и т. Д. Я перепробовал все, но постоянно получаю эту ошибку:

ArgumentError: Error #3500: The extension context does not have a method with the name

Я в полной растерянности.Вот соответствующие файлы:

extension.xml

<extension xmlns="http://ns.adobe.com/air/extension/3.1">
    <id>com.novel.analytics.ext.ApsalarNativeInterface</id>
    <versionNumber>0.0.0</versionNumber>
    <platforms>
        <platform name="iPhone-ARM">
            <applicationDeployment>
                <nativeLibrary>libApsalarNativeInterface.a</nativeLibrary>
                <initializer>ExtInitializer</initializer>
                <finalizer>ExtFinalizer</finalizer>
            </applicationDeployment>
        </platform>
        <platform name="default"> 
            <applicationDeployment/> 
        </platform>              
    </platforms>
</extension>

Моя реализация AS:

package com.novel.analytics.ext
{
    public class ApsalarNativeInterface
    {
        public function ApsalarNativeInterface()
        {
        }

        private static function initExtension():void    
        {
        }       

        public function initApsalar(apiKey:String, secret:String):void
        {
        }       
    }
}

мой собственный интерфейс:

package com.novel.analytics
{
    import flash.external.ExtensionContext;

    public class ApsalarInterface
    {
        private static const EXTENSION_ID : String = "com.novel.analytics.ext.ApsalarNativeInterface";
        private var context : ExtensionContext;

        public function ApsalarInterface()
        {
            this.context = ExtensionContext.createExtensionContext(EXTENSION_ID, null);
        }       

        public function initApsalar(apiKey:String, secret:String):void
        {
            context.call("initApsalar", apiKey, secret);
        }
    }
}

Вот моя командная строка adt (library.swf - это библиотека, содержащая два вышеуказанных файла:

/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0/bin/adt -package -target ane ../../$PRODUCT_NAME.ane extension.xml -swc NativeInterface.swc -platform iPhone-ARM -C . library.swf -platform default -C . library.swf

Как я уже сказал, я полностью проиграл.

1 Ответ

2 голосов
/ 30 апреля 2012

Извините за столь запоздалый ответ, но я думаю, что вам было бы полезно проверить этот замечательный учебник: http://www.digitalprimates.net/author/nweber/2012/04/10/building-a-native-extension-part-3/

Исходя из приведенных выше фрагментов кода, похоже, что вы пытаетесь определить реализацию чистого ActionScript в другом пакете с другим именем класса. Кажется, что вы на самом деле хотите использовать один и тот же пакет + имена классов + методов и просто сохранить его в другой библиотеке (поэтому он связан как собственный SWF) Затем вы говорите ADT, как связывать вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...