runtimes integrated extension dofus descargar air flex4 flash-builder flex-mobile air-native-extension

air - integrated - adobe runtimes



Adobe ANE funciona en dispositivos con iOS y Android, pero no en el simulador de AIR (3)

Una solución que he usado en el pasado fue algo como esto:

  • Cree una clase de utilidad que devuelva si está ejecutando en un dispositivo que admita ANE. En mi caso, la clase contenía un método estático que verificaba el valor de Capabilities.os . Vea la lista de valores que puede devolver aquí .

  • Coloque el código que llama al (los) método (s) ANE en su propia función, y llame a esta función si el ANE es compatible. Si recuerdo bien, era necesario poner el código que usaba el ANE en una función separada, no solo dentro de un bloque if, de lo contrario el mismo error ocurriría en el simulador:

Hacer esto:

public function doSomethingThatWillUseANE():void { if (DeviceCapabilities.supportsANE) // static utility class { methodThatUsesANE(); } } private function methodThatUsesANE() { // execute actual ANE method here }

En lugar de hacerlo todo en una función como esta:

public function doSomethingThatWillUseANE():void { if (DeviceCapabilities.supportsANE) // static utility class { // execute actual ANE method here } }

La vibración ane de Adobe funciona bien en una aplicación móvil Flex tanto en iOS como en Android, pero cuando intento lanzar un simulador AIR desde Flash Builder 4.7 en Windows 7, aparece el siguiente error:

Aquí una copia del mensaje de error de la última captura de pantalla:

Process terminated without establishing connection to debugger. The content cannot be loaded because there was a problem loading an extension: Error: Requested extension com.adobe.Vibration is not supported for Windows-x86. Launch command details: "C:/Program Files/Adobe/Adobe Flash Builder 4.7 (64 Bit)/sdks/4.6.0 (AIR 3.5)/bin/adl.exe" -runtime "C:/Program Files/Adobe/Adobe Flash Builder 4.7 (64 Bit)/sdks/4.6.0 (AIR 3.5)/runtimes/air/win" -profile extendedMobileDevice -screensize 640x920:640x960 -XscreenDPI 326 -XversionPlatform IOS -extdir "C:/Users/xxx/Adobe Flash Builder 4.7/.metadata/.plugins/com.adobe.flexbuilder.project.ui/ANEFiles/MyApp-Mobile/win32/" C:/Users/xxx/Documents/MyApp/mobile/bin-debug/MyApp-app.xml C:/Users/xxx/Documents/MyApp/mobile/bin-debug

Al mismo tiempo:

  1. Otro ANE de Adobe: GameCenter.ane incluido con Adobe Gaming SDK funciona perfectamente con AIR Simulator

  2. El com.adobe.extensions.Vibration.ane mencionado anteriormente no falla cuando selecciono el simulador BlackBerry AIR (pero los simuladores AIR de iOS y Android no funcionan).

¿Hay alguna manera de hacer que este trabajo sea más cómodo?

Me gustaría usar com.adobe.extensions.Vibration.ane en mi aplicación móvil Flex, pero también quiero usar el simulador AIR, sin comentar el código fuente y eliminar ese ANE de las propiedades del proyecto.

ACTUALIZACIÓN 2016:

Adobe ha actualizado su muestra de extensión nativa de vibración (ANE) con soporte de 64 bits.


El problema con el ANE es que no es una implementación completa. Lo más importante es que ANE no implementa una implementación de respaldo predeterminada, que es a lo que recurriría el dispositivo si no hubiera una implementación particular para la plataforma actual.

Esto hace que el ANE sea muy difícil de usar en el desarrollo multiplataforma ya que fallará en algunos casos. Cualquier plataforma que no esté específicamente incluida fallará con el mensaje que recibió.

Básicamente, sin cambiar el ANE usted mismo no podrá usarlo como está esperando. Su única forma es hacer una compilación de estilo condicional y no llamar al ANE en el simulador.

Si desea cambiar el ANE, entonces la mejor opción es implementar la biblioteca predeterminada. Esto es bastante simple, pero necesitará: XCode, eclipse con las herramientas de desarrollo de Android y adt del AIR SDK.

En primer lugar, deberá compilar los proyectos existentes, la lib de Android, la lib de iOS y la biblioteca de actionscript existente, para generar VibrationAndroidLibrary.jar , libVibrationiOSLibrary.a y VibrationActionScriptLibrary.swc, respectivamente.

A continuación, deberá crear otra biblioteca actionscript y duplicar la clase com.adobe.nativeExtensions.Vibration de la siguiente manera:

public class Vibration { public function Vibration() { } public static function get isSupported():Boolean { return false; } public function vibrate(duration:Number):void { } }

Esta clase reemplazará a la otra clase en los casos en que la extensión no se implemente en lugar de que usted obtenga el mensaje anterior.

Luego, tendremos que agregar la definición predeterminada al archivo extension.xml :

<extension xmlns="http://ns.adobe.com/air/extension/2.5"> <id>com.adobe.Vibration</id> <versionNumber>1</versionNumber> <platforms> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>VibrationAndroidLibrary.jar</nativeLibrary> <initializer>air.extensions.VibrationExtension</initializer> <finalizer>air.extensions.VibrationExtension</finalizer> </applicationDeployment> </platform> <platform name="iPhone-ARM"> <applicationDeployment> <nativeLibrary>libVibrationiOSLibrary.a</nativeLibrary> <initializer>ExtInitializer</initializer> <finalizer>ExtFinalizer</finalizer> </applicationDeployment> </platform> <platform name="default"> <applicationDeployment /> </platform> </platforms> </extension>

Luego, tendremos que volver a compilar el ANE con el nuevo SWC de actionscript predeterminado. Digamos que estás en el directorio VibrationNEDeliverables del ANE mencionado, puedes ingresarlo en un archivo bash y ejecutarlo o ponerlo todo en una línea desde la línea de comando). Las primeras dos líneas solo extraen el archivo library.swf y lo mueven a las ubicaciones que necesita el comando package. Tenga cuidado con las rutas, etc. aquí, he asumido que ha puesto la lib predeterminada en VibrationActionScriptDefaultLibrary pero tendrá que cambiar esto apropiadamente.

unzip -o -d VibrationActionScriptLibrary/bin VibrationActionScriptLibrary/bin/VibrationActionScriptLibrary.swc unzip -o -d VibrationActionScriptDefaultLibrary/bin VibrationActionScriptDefaultLibrary/bin/VibrationActionScriptDefaultLibrary.swc cp VibrationActionScriptLibrary/bin/library.swf VibrationiOSLibrary/build/Release-iphoneos/. cp VibrationActionScriptLibrary/bin/library.swf VibrationAndroidLibrary/bin/. adt -package / -storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD / -target ane com.adobe.extensions.Vibration.ane VibrationActionScriptLibrary/src/extension.xml / -swc VibrationActionScriptLibrary/bin/VibrationActionScriptLibrary.swc / -platform iPhone-ARM -C VibrationiOSLibrary/build/Release-iphoneos . / -platform Android-ARM -C VibrationAndroidLibrary/bin . / -platform default -C VibrationActionScriptDefaultLibrary/bin .

Una vez que esté completo, ahora debería tener una nueva versión del ANE con una lib predeterminada que lo hará mucho más útil. Personalmente, no creo que un ANE debería ser lanzado sin eso.

Si necesita un ANE completamente funcional, puede consultar nuestro: http://distriqt.com/native-extensions


El mismo problema existe con la nueva vibración ane construida para compatibilidad con ios de 64 bits. Mi solución fue colocar una declaración de importación dentro de la función que realmente llamó al método de vibración, y desmarcar el cuadro de inclusión para el ane en la configuración de ruta de compilación del proyecto para Android e iOS.

Tengo una variable de indicador (establecida por una función separada) en mi aplicación que indica si la aplicación se está ejecutando dentro del ide. La vista que usa vibración solo llamará a la función de vibración anterior si la bandera está configurada en modo no IDE. Sigo recibiendo una advertencia inicial cuando ejecuto el simulador ide, pero no el error crítico. Cuando hago una compilación de lanzamiento, FlashBuilder me obliga a marcar el cuadro de inclusión para el ane en la configuración de ruta de compilación del proyecto aplicable (tengo que desmarcarlo nuevamente la próxima vez que quiero ejecutar el simulador).

Es torpe, pero hace que trabajar con el ane sea vivible. Me molesta que el adobe no haya abordado esto.