Flex en Linux con FB4Linux (plugin de Eclipse)

A raíz de mi artículo anterior, Aprende Flex en una Semana con “Flex in a Week” y la buena respuesta que obtuvo en Twitter (lo que les agradezco profundamente), Andrés Torres (@andr3s_T) escribió en su cuenta de Twitter:

[…] nada mas por esto voy a usar guindows 1 mes

Sumido en mi profunda ignorancia y recordando que Adobe había desarrollado una versión de prueba de Flash Builder para Linux, me apresuré en decirle que no era necesario porque de hecho existía una versión para este Sistema Operativo. Debí averiguar mejor antes de contestar.

Al buscar la fulana versión me topé con el hecho de que Adobe había descontinuado el proyecto (cosa que sabía pero no recordaba, entre otras cosas porque apenas hace poco fue que realmente me animé a usar Linux) y que no había otra solución oficial al asunto.

Buscando alternativas, me encontré con FB4Linux, un proyecto bajo licencia GNU para portar Adobe Flash Builder a Linux, como plugin de Eclipse y me decidí a probarlo a ver si funcionaba.

Personalmente no uso Eclipse, pero sí utilizo Aptana Studio, un IDE para desarrollo web basado en aquel, por lo que, tomando en cuenta mi anterior éxito para instalar en él el plugin de desarrollo para Android, decidí probar suerte con éste y en efecto, funciona. Así que lo que diga acá respecto a la instalación en Aptana Studio bien puede comprenderse también para su instalación en Eclipse.

Instalación de FB4Linux

Paso 1: descargar y unificar los archivos de instalación

Lo primero, claro, ir al sitio de FB4Linux y descargar los cuatro archivos de instalación: FB4Linuxaa, FB4Linuxab, FB4Linuxac y FB4Linuxad. Ten un poco de paciencia hasta que terminen de descargarse.
Una vez descargados, abres la terminal, vas al directorio donde descargaste los archivos y tecleas:

cat FB4Linux* > FB4Linux.tar.bz2

Con esto obtendrás un archivo tar/bz2 estándar donde se encuentran los archivos necesarios para la instalación.

Paso 2: Extraer los archivos

No hay misterio en ello, simplemente extraes los archivos (ya sea a través de la terminal o por medio de la interfaz gráfica) y los colocas en un sitio que te resulte cómodo para luego instalarlos en el IDE.

Paso 3: Instalar el Plugin

En mi caso voy a referirme a la instalación en Aptana pero, como ya dije antes, no debe ser muy diferente el proceso en Eclipse.

  1. Lo primero, vamos al menú Help -> Install New Software…
    Hacer click en 'Help -> Install New Software'
  2. Esto nos abrirá la ventana Install, que es donde se encuentran los repositorios de los plugins
    Ventana 'Install'
  3. Hacemos click en el botón Add.. que nos abrirá una ventana donde buscaremos el directorio donde descomprimimos nuestros archivos. Allí hacemos click en Local y buscamos la carpeta donde se encuentra nuestro plugin. Una vez allí, aceptamos, colocamos un nombre a nuestro repositorio (esto es opcional, pero altamente recomendable) y veremos los elementos que vamos a instalar.Agregando el Repositorio
    Nota: Si al momento de hacer estos pasos no ves nada en la lista de elementos sino un mensaje que dice There are no categorized items, deselecciona Group Items by category y entonces podrás verlos.
    Items a instalar de FB4Linux
  4. Una vez hecho esto, sólo sigue las instrucciones. Aptana te pedirá reiniciar una vez instalado. Acepta y voilá, ¡ya tienes un IDE para Flex en Linux!

Un Par de Notas sobre FB4Linux

  1. Al hablar de esto, es necesario colocar una “nota de advertencia” y es lo referente a la licencia. Si bien el proyecto aclara que no es un proyecto oficial de Adobe y está él mismo licenciado bajo GNU, no queda claro el tema respecto a si respeta o no las licencias de Adobe que, si bien no desarrolla este plugin para su uso en Linux, el mismo no deja de ser una adaptación de alguna de sus versiones (supongo que la de Mac, pero realmente no lo sé) para ser usada de esta forma, así que no puedo recomendarlo sin más sin antes advertir al respecto (en mi caso, la instalación ha sido fundamentalmente por motivos educativos puesto que no uso Linux para mi trabajo en Flex).
    Por lo que he visto hasta ahora, FB4Linux no utiliza la interfaz gráfica de Flash Builder (a excepción quizá de su página de inicio) y al parecer sólo hecha mano del SDK que es de libre distribución, pero no soy un experto en licencias por lo que no puedo decir mucho más al respecto. De hecho en la página de Issues de FB4Linux hay una discusión respecto a este tema.
  2. Es importante tener en cuenta que FB4Linux no incluye el SDK de Flex, que deberás descargar del sitio de Adobe, lo que no implica ningún problema mayor ya que es gratuito, y luego configurar Aptana (o Eclipse) para que trabaje con la versión con la que deseas, para ello ve al menú Window -> Preferences -> Flash Builder -> Installed Flex SDKs

    Localizar el SDK de Flex
  3. En otro aspecto ya meramente técnico, cada vez que creaba un nuevo proyecto en Flex aparecía un error, que indicaba que no podía abrir la carpeta que se refiere a la configuración de localización por defecto del proyecto, que en mi caso, al estar en Venezuela, es “es_VE” y, por supuesto, no existe. Hay dos formas de resolver esto:
    1. Seleccionar el proyecto e ir al menú Project -> Properties. Aparecerá seleccionado por defecto “Flex Compiler”. En “Aditional compiler arguments” cambiar “es_VE” por alguno de los existentes (en mi caso lo cambié a es_ES). El problema con esta solución es que deberá hacerse por cada proyecto, individualmente.
    2. Una solución definitiva (y que encontré casi a las tres de la mañana después de buscar incesamente en internet) la encontré en los foros de Adobe, donde alguien presentaba el mismo problema.
      La solución en este caso es tan simple como modificar el archivo aptanastudio.ini (o eclipse.ini según el caso) y agregar al principio del archivo estas líneas:

      -nl
      es_ES

      Con esto, todos los nuevos proyectos tendrán la localización por defecto que hayan seleccionado. Para saber cuáles son las opciones disponibles hay que ir a la carpeta donde se encuentra el SDK y de allí ir a la carpeta frameworks -> locale.


7 thoughts on “Flex en Linux con FB4Linux (plugin de Eclipse)

    1. ¡Me alegra que te haya servido el artículo!
      Mmmm, sí es diferente a FlashDevelop, ya que -al contrario de éste- está basado en Eclipse, sin embargo, la interfaz de Eclipse es bastante intuitiva (y por tanto de Aptana Studio, que fue lo que usé en esta instalación) y el propio Flash Builder está basado en Eclipse, así que con el cambio saldrás ganando. No te preocupes, en un día estarás trabjando cómodamente con él.

  1. Hola amigos, estoy intersado en aprender Flex, trabajo sobre aptana en linux y segui esta guia, todo estupendo creo mi primera APP compila sin errores, pero no se ve nada en el navegador, se carga el swf(todo en blanco) pero no se ve ningun componen ni lo que cree. Se que la pregunta es muy ambigua, pero alguien me puede dar una guia de como empezar quizas este obviando algo.

    Por cierto el MXML que uso es este http://pastebin.com/U6bV8gUf no hay mucha ciencia. cargo el html generado carga la pelicula pero todo en un reluciente blanco 😀

    Saludos 😀

    1. Pues, es curioso lo que comentas. De hecho acabo de probar tu código en el plugin en Linux y me ha funcionado perfectamente. Aventurándome podría decirte que te asegures de estar usando la SDK 4.0 por lo menos (ahora mismo está disponible la 4.1, que te recomiendo) y que tu versión del Flash Player este actualizado.

  2. Hola Gracias por responder. 😀
    El fallo esta al momento en que aptana me compila, porque si lo compilo manualmente me crea en swf correcto y lo veo, pero si lo hago por aptana me crea el swf con casi el doble de peso! WTF? y sin nada dentro… revise las propiedades del proyecto y probe de todo, pero no hay caso. La verdad se agoto mi paciencia O.o

    Una pregunta pueso seguir usando aptana e ir avanzando e ir compilando manualmente, o hay algo especial que tenga y que me este perdiendo?

    Saludos compañero 😀

  3. Encontre la solucion 😀 Por si a alguien mas le pasa. Despues de darle mil vueltas es un problema de “seguridad” se supone que en local no trabaja(lo extraño es que no te da el tipico error de seguridad que da comummente) la solucion fue alojar los archivos en el servidor en mi caso http://localhost/……/archivo.html y caro ok…. Cosas de la vida…

    Saludines. Ahora a leer 😛

  4. Hola, soy novato en Flex, de hecho se me encomendò la tarea de instalarlo en linux Ubuntu 11.04, para luego instalarlo en CentOS.
    el problema que me da es lo siguiente:
    No tengo problemas con la instalacion de el plugin, pero si tengo problemas con los Componentes.

    El eclipse no carga los componentes, ninguno.
    me sale este error.
    si alguien me pudiese ayudar lo agradeceria…

    Error:
    Could not create the view: (class: com/adobe/flexbuilder/mxml/editor/views/AbstractDesignOnlyView$EditorListener, method: attachToEditor signature: (Lcom/adobe/flexbuilder/mxml/editor/MXMLEditor;)V) Incompatible argument to function
    
    
    java.lang.VerifyError: (class: com/adobe/flexbuilder/mxml/editor/views/AbstractDesignOnlyView$EditorListener, method: attachToEditor signature: (Lcom/adobe/flexbuilder/mxml/editor/MXMLEditor;)V) Incompatible argument to function
    	at com.adobe.flexbuilder.mxml.editor.views.components.ComponentsView.createEditorListener(ComponentsView.java:1095)
    	at com.adobe.flexbuilder.mxml.editor.views.AbstractDesignOnlyView.createPartControl(AbstractDesignOnlyView.java:136)
    	at com.adobe.flexbuilder.mxml.editor.views.components.ComponentsView.createPartControl(ComponentsView.java:1036)
    	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:367)
    	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:226)
    	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
    	at org.eclipse.ui.internal.WorkbenchPage$ActivationList.setActive(WorkbenchPage.java:4212)
    	at org.eclipse.ui.internal.WorkbenchPage$18.runWithException(WorkbenchPage.java:3271)
    	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3468)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3115)
    	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    	at org.eclipse.ui.internal.Workbench$28.runWithException(Workbench.java:1384)
    	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3468)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3115)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2316)
    	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
    	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:616)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
    

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s