Artículo actualizado en: Aplicaciones Java (JavaFX) para móviles y escritorio con JavaFXPorts en NetBeans

JavaFXPorts Gluon

El proyecto JavaFXPorts mantenido por Gluon permite desarrollar aplicaciones Java cuyo entorno gráfico se haya realizado con la librería JavaFX de manera que puedan ser instaladas y ejecutadas en dispositivos móviles Android y iPhone.

En esta prueba, se ha utilizado el entorno de desarrollo NetBeans 8.0.2 y se ha ejecutado en un dispositivo Android la aplicación básica que crea el asistente.

Instalación del plugin de Gluon en NetBeans

En el tutorial The Gluon Plugin for NetBeans, dentro del apartado 5.1.1, se encuentran las instrucciones paso a paso de la instalación de este plugin para NetBeans que permitirá crear un proyecto con la estructura básica necesaria para empezar a desarrollar la aplicación.

Creación de un proyecto Gluon

También en otro apartado (5.1.2) de la misma página web se puede encontrar el tutorial Creating a new Gluon project con instrucciones bastante claras de los pasos a seguir.

Configuración de los requisitos

Actualizar versión de fxmobile-plugin

Una vez creado el proyecto, y como se indica en las instrucciones anteriores, conviene comprobar cuál es la última versión de la librería jfxmobile-plugin. En el proyecto que se ha creado aparece en el archivo build.gradle una referencia a la versión 1.0.0-b9

En este repositorio puedes encontrar las versiones publicadas de este plugin: http://mvnrepository.com/artifact/org.javafxports/jfxmobile-plugin

Observa el número de la última versión y cambia el que aparece en el proyecto. Durante la creación de este artículo, la última versión que aparecería es la 1.0.3, como se muestra en la siguiente captura:

Por tanto, el archivo build.gradle ha quedado así:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.0.3'
    }
}
 
apply plugin: 'org.javafxports.jfxmobile'
 
repositories {
    jcenter()
}
 
mainClassName = 'com.gluonapplication.GluonApplication'
 
jfxmobile {
    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
    ios {
        infoPList = file('src/ios/Default-Info.plist')
    }
}

Estas indicaciones, junto con todos los requisitos necesarios para crear el proyecto, puedes verlas también en el tutorial Getting Started de Gluon. 

SDK de Android

Para poder crear la versión ejecutable de este proyecto para Android se necesita tener instalado en el ordenador el SDK de Android. Si no se tuviera previamente instalado, se puede descargar desde la web de http://developer.android.com/sdk/ (es suficiente con descargar sólo el SDK, no hace falta descargar Android Studio. Puedes ver una sección SDK Tools Only

Una que se tenga instalado el SDK debes comprobar que se tengan instalados los siguientes paquetes (usa el SDK Manager para instalarlos, que puedes abrirlo ejecutando el archivo android que se encuentra dentro de la carpeta tools del SDK):

  • Version 21.1.2 de Build-tools
  • SDK Platform API 21
  • Android Support Library

En la siguiente imagen se pueden ver destacados en rojo los paquetes requeridos:

Indicación de la ruta al SDK de Android

Para que todos los proyectos que se vayan a crear de este tipo puedan conocer dónde se encuentra el SDK, se debe tener creado un archivo de texto llamado gradle.properties que debe alojarse en la carpeta .gradle dentro de la carpeta de usuario. Por ejemplo, para esta prueba se ha creado el archivo con la siguiente ruta completa (ten en cuenta que se ha realizado en un Mac): /Users/javier/.gradle/gradle.properties

Dentro de ese archivo se ha asignado al identificador ANDROID_HOME la ruta a la carpeta donde se ha instalado el SDK. En mi caso lo he encontrado en /Users/javier/Library/Android/sdk, por tanto el contenido del archivo gradle.properties ha quedado así:

ANDROID_HOME=/Users/javier/Library/Android/sdk

En caso de usar un PC con Windows, la ruta debe indicarse cambiando la barra invertida que normalmente se indica en las rutas de Windows, por barras normales. Por ejemplo:

ANDROID_HOME=C:/Users/Javier/AppData/Local/Android/sdk

O bien, usar la doble barra invertida para separar cada carpeta:

ANDROID_HOME=C:\\Users\\Javier\\AppData\\Local\\Android\\sdk1

Existen otras alternativas para indicar la ruta al SDK en lugar de hacerlo en ese archivo, por ejemplo, indicándolo dentro del proyecto en el archivo build.gradle que se ha comentado anteriormente. Puedes ver cómo hacerlo en el apartado 2.1.3. Android del manual Getting Started.

Ejecución de la aplicación

Para hacer una primera prueba, se ha ejecutado la aplicación como versión de escritorio para tener una primera idea de su funcionamiento. Con en otros proyectos de NetBeans, se puede ejecutar en el menú Run > Run Project o usando su botón correspondiente de la barra de herramientas.

Para ejecutarlo en un dispositivo Android que tengas correctamente conectado al ordenador, usa la opción Tasks > android > androidInstall desde el menú contextual del proyecto.

Si todo termina correctamente podrás ver el mensaje Installed on device y podrás ejecutar la aplicación GluonApplication desde el dispositivo.

 

Quedando algo así:

Se ha conseguido ejecutar también en un dispositivo virtual, pero sólo siendo configurado con una imagen del sistema de tipo ARM. Con una imagen del sistema de tipo Intel se ha obtenido el error: INSTALL_FAILED_NO_MATCHING_ABIS. El problema es que la ejecución de un dispositivo virtual de tipo ARM se ejecuta mucho más lento que el Intel al no usar la aceleración por hardware. Ver comentarios sobre este problema: https://bitbucket.org/javafxports/android/issues/65/emulator