2016-05-22 20 views
1

Ich versuche, meine AIR-App unter dem ADL-Befehlszeilen-Debugger einschließlich einer third party native extension auszuführen (ich verwende keine IDE wie FlashDevelop). Meine App ist für Windows-Desktop-Computer gedacht.Flex/ADL: Native Methoden sind im geladenen Code nicht zulässig

Compilation erscheint ohne Problem zu umgehen:

$ amxmlc src/menustatemain.as 
    -o src/menustatemain.swf 
    -compiler.include-libraries C:\Users\Me\Downloads\AIRSDK_Compiler\frameworks\libs\player\21.0\playerglobal.swc 
    -external-library-path+=extensions\ane\NativeJoystick.swc 
    -use-network=false 
    -verbose-stacktraces=true 
    -debug=true 
    -advanced-telemetry 
    -omit-trace-statements=false 
    -define=CONFIG::debug,false 
    -define=CONFIG::test,true 
Loading configuration: C:\Users\Me\Downloads\AIRSDK_Compiler\frameworks\air-config.xml 

3383030 bytes written to C:\Users\Me\Documents\myproject\src\menustatemain.swf in 17.069 seconds 

Allerdings, wenn ich versuche, die app unter ADL ausführen, schlägt es mit diesem Fehler:

$ adl 
    -extdir extensions\ane_unzipped 
    -profile extendedDesktop 
    menustatemain.xml 
VerifyError: Error #1079: Native methods are not allowed in loaded code. 

ich ich mich um und nichts gegoogelt haben habe versucht das Problem gelöst. Es gibt einige ähnliche Fragen zu StackOverflow, deren Antworten mein Problem nicht lösen. Ich habe jede Einstellung geändert, die ich finden kann, um die Erweiterung zur Kompilierungszeit dynamisch zu verknüpfen und zur Laufzeit zu laden. Ich habe eine Ahnung, dass dies ein Problem mit der Erweiterung selbst sein könnte, aber ich weiß nicht, wie das zu überprüfen ist.

Wie kann ich dieses Problem debuggen?

Für Kontext, das ist der Inhalt von menustatemain.xml ist:

<application xmlns="http://ns.adobe.com/air/application/21.0"> 
    <id>com.me.MyProject</id> 
    <versionNumber>1.0</versionNumber> 
    <filename>MyProject</filename> 
    <initialWindow> 
     <content>MyProject.swf</content> 
     <visible>true</visible> 
     <width>640</width> 
     <height>480</height> 
     <maximizable>false</maximizable> 
     <resizable>false</resizable> 
    </initialWindow> 
    <supportedProfiles>extendedDesktop</supportedProfiles> 
    <extensions> 
     <extensionID>com.iam2bam.ane.nativejoystick</extensionID> 
    </extensions> 
</application> 

Auch habe ich die kompilierte und kompilierten Versionen der nativen Erweiterung in einem Projekt-Unterverzeichnis:

C:\Users\Me\Documents\myproject 
    extensions\ 
     ane\ 
      NativeJoystick.ane 
      NativeJoystick.swc 
     ane_unzipped\ 
      NativeJoystick.ane\ 
       META-INF\ 
        ... 
+0

Klingt wie 'adl' die falsche' Playerglobal.swc' oder die falsche Version davon aufgreift. – SushiHangover

+0

Ich spezifiziere es über '-compiler.include-libraries C: \ Benutzer \ Me \ Downloads \ AIRSDK_Compiler \ frameworks \ libs \ player \ 21.0 \ playerglobal.swc'. Sie denken, eine andere Version zu spezifizieren würde helfen? Wie würde ich wissen, welche Version verwendet werden soll? –

+0

Ich gehe davon aus, dass der Spieler, gegen den du kompilierst, der richtige ist seit 21.0 dir. Ich spreche von 'Adl'. Läuft das von und gegen 21.0 ... d. H. Bringt das Einstellen der '-runtime'-Option den Fehler # 1079? Normalerweise, wenn ich diesen Fehler sehe, ist 'adl' von der falschen Version und/oder es nimmt nicht die korrekte Spieler-SWC auf und somit scheitert es, da der Spieler-Sack, den er pflückt, ein Blitz ist und kein Luft-basierter. .. Was passiert auch, wenn Sie die App in einem nativen Air Installer verpacken? – SushiHangover

Antwort

0

Das Problem ist, dass Ich habe das falsche playerglobal.swc verwendet. Der Flex-SDK-Download wird mit einem "Player" -Framework und einem "AIR" -Framework ausgeliefert, und ich kompilierte mich fälschlicherweise mit dem "Player", der keine nativen Erweiterungen erlaubt. Das Ändern meines Kompilierbefehls hat Folgendes bewirkt:

-compiler.include-libraries C:\Users\Me\Downloads\AIRSDK_Compiler\frameworks\libs\air\21.0\airglobal.swc 

Danke für den Tipp @SushiHangover!