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\
...
Klingt wie 'adl' die falsche' Playerglobal.swc' oder die falsche Version davon aufgreift. – SushiHangover
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? –
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