2009-12-23 16 views
5

¿Es posible desarrollar una aplicación para Android dirigida a dispositivos móviles y también usar el mismo código para ejecutar en Windows, Linux o OSX como una aplicación de escritorio java independiente sin usar un emulador? Es decir. tener el aspecto y la sensación de una aplicación java convencional funcionando de forma autónoma?¿Puedo ejecutar ejecutar una aplicación de Android como una aplicación de escritorio independiente sin un emulador?

+1

Recuerdo esto desde hace un tiempo: http://arstechnica.com/open-source/news/2009/05/canonical-developers-aim-to-make-android-apps-run-on- ubuntu.ars Havnt visto ningún progreso ya que aunque –

+0

Gracias, buena información. – icecream

Respuesta

3

Android usa un marco de interfaz de usuario personalizado, que no se ejecuta en el escritorio. Entonces, la respuesta corta es no.

Respuesta larga:

A pesar de lo anterior, usted todavía será capaz de volver a utilizar algún código no interfaz de usuario entre los dos. Cualquier código que no llame a Android. * Probablemente se transfiera.

También podría escribir una capa de abstracción que oculte los detalles del conjunto de herramientas de la interfaz de usuario.

Finalmente, también hay algunos marcos de desarrollo de aplicaciones de terceros que funcionan en múltiples plataformas. El que viene inmediatamente a la mente es Appcelerator's Titanium, pero también hay otros por ahí. Puede tener algo de suerte con esto.

+0

Gracias, veo que requerirá trabajo adicional. – icecream

+0

¿No parece que, dado que Android es de código abierto, esta es una oportunidad de desarrollo madura, una aplicación de marco que permitiría que las aplicaciones de Android se ejecutaran en sistemas operativos de escritorio? Eso sería IMPRESIONANTE. – delfuego

+0

Parece un trabajo para Chrome OS. – GuyNoir

1

Bueno, para hacer esto es necesario escribir una capa de abstracción estándar para las API específicas de UI y Android. Básicamente esconder todas las llamadas específicas de Android y Escritorio detrás de las interfaces.

Esto no debería ser un problema muy grande ya que existe una gran superposición entre Android SDK y el JDK.

Además, para cosas como el análisis XML, la red puede usar las clases que funcionan en ambos.

Aparte de esto, no creo que haya otro enfoque que 'automáticamente' haga que su código Android se ejecute como una aplicación Java Desktop.

2

Las aplicaciones de Android se ejecutan en el Dalvik Virtual Vachine que una máquina virtual personalizada (VM) que no es directamente compatible con una máquina virtual estándar de Java.

Por lo que yo sé, las únicas implementaciones de Dalvik VM están en dispositivos Android y el emulador.

Obviamente, las aplicaciones de Android están escritas en Java, por lo que no hay nada que le impida compartir algún código entre una aplicación de Android y la aplicación Java Desktop, pero probablemente esa sea la parte de "lógica de negocios". Va a ser difícil hacer que se vean iguales ya que las clases de Android no se han portado a la máquina virtual Java y no hay implementación de AWT o Swing para Android.

lo que podría ser capaz de crear su propia ListModel clase de datos que contiene y luego mostrarlo usando un ListView en Android y un JList en el escritorio, por lo que tendrá los datos, pero las pantallas se verá diferente.

1

El proyecto Skorpios le permite ejecutar aplicaciones OpenGL tanto en el escritorio como en Android utilizando una sola base de código.

Hay algunos ejemplos mínimos. Here es el código común para aquellos.

Para ejecutar el código común en el escritorio, pase una instancia del juego a DesktopGLView. Yo uso this class para ejecutar las pruebas, simplemente paso el nombre simple de la clase de prueba como un argumento de línea de comando. Por ejemplo, "FontTest".

Para ejecutar el código común en Android, pase una instancia del juego a AndroidGLView, que es un android.view.SurfaceView que puede poner en su android.app.Activity. A menudo querrás una actividad que solo muestre tu juego, en cuyo caso puedes pasar la instancia del juego a GameActivity en lugar de AndroidGLView. Si solo desea ejecutar las aplicaciones de prueba en un teléfono Android, puede implementar el skorpios-android-test project en su teléfono.

Skorpios es bastante resbaladizo y funciona bien. La velocidad de desarrollo aumenta drásticamente mediante el uso de HotSwap de Java en el escritorio, ya que los tiempos de implementación de Android suelen ser de más de 60 segundos. Desarrollar en el escritorio y después de hacer algún progreso real, ejecute su aplicación en Android y simplemente funciona. FWIW, tengo algunos proyectos relacionados que también son compatibles con el escritorio y Android para las redes cliente/servidor with TCP/UDP y otro with HTTP/servlets/Google App Engine.

Sin embargo, Skorpios todavía es temprano en su vida. Soy el autor y me he distraído con otras cosas últimamente. Hasta ahora tiene many basic OpenGL functions. Es muy fácil admitir nuevas funciones (solo agréguelas a GL, DesktopGL y AndroidGL) y las he agregado cuando sea necesario.

Tengo la intención de que el proyecto actúe como una capa de abstracción para OpenGL, pero también para las características de escritorio/Android que no sean de OpenGL, comúnmente usadas en los juegos. He aquí algunos ejemplos que se implementan actualmente:

  • Preferences persiste un HashMap en el disco en el escritorio y utiliza android.content.SharedPreferences en Android.

  • Database proporciona un acceso simple a SQLite en Android y actualmente no es operativo para el escritorio.

  • Device proporciona acceso a la vibración de Android y actualmente no funciona en el escritorio.

  • ResourceLoader proporciona acceso a archivos, preferencias y bases de datos en cada plataforma.

+0

¿Algún ejemplo de esto? – icecream

+0

Sí. He actualizado mi respuesta con información adicional. – NateS

Cuestiones relacionadas