Munozferna (Talk | contribs) |
|||
| (9 intermediate revisions not shown) | |||
| Line 9: | Line 9: | ||
== Introducción == | == Introducción == | ||
| - | Este tutorial es una introducción para desarrollo de dispositivos MeeGo x86 en Linux. Se explica el flujo de trabajo basico para el desarrollo de aplicaciones, enfocandose en como trabajar conjuntamente las herramientas incluidas en el SDK. | + | Este tutorial es una introducción para el desarrollo de aplicaciones para dispositivos MeeGo x86 en Linux. Se explica el flujo de trabajo basico para el desarrollo de aplicaciones, enfocandose en como trabajar conjuntamente las herramientas incluidas en el SDK. |
| - | No se entra en detalles sobre Qt, las APIs de MeeGo, o como hacer que una aplicación se integre en el entorno de MeeGo | + | No se entra en detalles sobre Qt, las APIs de MeeGo, o como hacer que una aplicación se integre en el entorno de MeeGo. |
== Como hacerlo (versión corta) == | == Como hacerlo (versión corta) == | ||
| Line 34: | Line 34: | ||
=== Instalar el SDK MeeGo en su equipo con Linux === | === Instalar el SDK MeeGo en su equipo con Linux === | ||
| - | Vea [[Getting started with the MeeGo SDK for Linux]] para más instrucciones. | + | Vea [[SDK/Docs/1.0/Getting started with the MeeGo SDK for Linux]] para más instrucciones. |
=== Entre al entorno chroot MeeGo === | === Entre al entorno chroot MeeGo === | ||
| - | Vea [[Getting_started_with_the_MeeGo_SDK_for_Linux#Enter the MeeGo chroot environment|estas instrucciones]]. | + | Vea [[SDK/Docs/1.0/Getting_started_with_the_MeeGo_SDK_for_Linux#Enter the MeeGo chroot environment|estas instrucciones]]. |
=== Ejecute el simulador === | === Ejecute el simulador === | ||
| - | Con todo instalado, usted deberia poder ahora [[Getting_started_with_the_MeeGo_SDK_for_Linux#Run_the_Simulator|ejecutar el simulador]] desde el entorno de MeeGo. | + | Con todo instalado, usted deberia poder ahora [[SDK/Docs/1.0/Getting_started_with_the_MeeGo_SDK_for_Linux#Run_the_Simulator|ejecutar el simulador]] desde el entorno de MeeGo. |
=== Construya el proyecto con Qt Creator === | === Construya el proyecto con Qt Creator === | ||
| Line 58: | Line 58: | ||
* Cree un nuevo proyecto (''File > New File or Project''). En la opción ''Projects'', seleccione ''Qt Gui Application'' y haga clic en ''OK''. | * Cree un nuevo proyecto (''File > New File or Project''). En la opción ''Projects'', seleccione ''Qt Gui Application'' y haga clic en ''OK''. | ||
* Escriba '''helloworld''' para el nombre; seleccione un directorio para guardarlo (por ejemplo ''/root'' si usted trabaja como el usuario root). Haga clic en ''Next''. | * Escriba '''helloworld''' para el nombre; seleccione un directorio para guardarlo (por ejemplo ''/root'' si usted trabaja como el usuario root). Haga clic en ''Next''. | ||
| - | * | + | * Acepte las configuraciones por defecto en el cuadro de ''Class Information'' y haga clic en siguiente ''Next''. |
| - | * | + | * En el cuadro ''Project Management'', haga clic a ''Finish''. |
| - | + | Luego escribimos algo de codigo: | |
* Abra la carpeta ''Forms'' y luego haga doble clic en '''mainwindow.ui''' para abrir el editor gráfico de formularios. | * Abra la carpeta ''Forms'' y luego haga doble clic en '''mainwindow.ui''' para abrir el editor gráfico de formularios. | ||
| Line 68: | Line 68: | ||
* Ponga cualquier otra cosa que le parezca atractiva en el formulario. | * Ponga cualquier otra cosa que le parezca atractiva en el formulario. | ||
| - | + | Y configuramos el proyecto: | |
| - | * | + | * Haga clic en el icono ''Projects'' en la parte izquierda de la ventana de Qt Creator. |
| - | * Configure | + | * Configure la versión de Qt: |
| - | ** | + | ** En el menú ''Build Settings > General'', haga clic al boton ''More''. Esto le mostrará la versión de Qt que será usada para compilar y construir el proyecto. |
| - | ** | + | ** Haga clic en el boton ''Manage'' que esta al lado de ''Qt Version''. Esto le mostrara el panel de ''Qt Versions'':<br/>[[File:simulator_QtCreator_qt_versions.png]] |
| - | ** | + | ** Seleccione '''Qt in PATH'''. |
| - | ** | + | ** Haga clic en ''Rebuild'' para configurar el ''Debugging Helper'' de esta versión de Qt. |
| - | ** | + | ** Clic en''OK'' para guardar sus cambios. |
| - | * | + | * Asegurese de que ''Qt Version'' esta configurado como '''Default Qt Version (Qt in PATH)'''. |
| - | * | + | * Luego, configure el entorno de ejecución para que use el simulador para mostrar la aplicación cuando se este ejecutando: |
| - | ** | + | ** Haga clic en la pestaña ''Run Settings''. |
| - | ** | + | ** Clic en el boton ''More'' dentro de ''Run Environment''. |
| - | ** | + | ** Doble clic en el campo de texto junto a ''Display''; y cambie ''':0.0''' a ''':2'''. Esto le dice a Qt Creator que ejecute las aplicaciónes en el display número :2, el cual es usado por Xephyr. |
=== Ejecute la aplicación dentro del simulador === | === Ejecute la aplicación dentro del simulador === | ||
| - | + | En este momento, ya tenemos todo listo para ejecutar la aplicación. | |
| - | + | Desde el Qt Creator, haga clic sobre la el boton de ejecutar (flecha verde en la parte inferior izquierda) para ejecutar la aplicación. Esto la construirá utilizando la version de Qt que configuró, y luego la ejecutara en el display ''':2''' (dentro del escritorio MeeGo simulado en Xephyr). | |
| - | + | En el simulador, puede ser necesario hacer clic en el icono MyZone (icono de casa) para mostrar la aplicación que esta corriendo: | |
[[File:Simulator_running_meego_app.png]] | [[File:Simulator_running_meego_app.png]] | ||
| Line 95: | Line 95: | ||
=== Depure la aplicación dentro del simulador === | === Depure la aplicación dentro del simulador === | ||
| - | + | Esto quiere decir, ejecutar la aplicación desde Qt Creator, pero con las opciones de depuración activadas, para poder observer el estado de la aplicación mientras corre bajo Xephyr. | |
| - | + | En las secciones anteriores, construimos el asistente de depuración para la version de Qt que estamos usando. Esto es lo primero que se debe hacer, de lo contrario, no es posible depurar la aplicación. | |
| - | + | Para habilitar el modo de depuración en Qt Creator, haga click en el icono de un insecto en la barra de herramientas de la izquierda. Esto deberia añadirle nuevos paneles a la ventana, los cuales son usados para mostrar la pila, inspecionar expresiones, etc. | |
| - | + | Luego, necesitamos algo que depurar. Añadimos un ''Push Button' al formulario: | |
[[File:QtCreator_form_with_push_button.png]] | [[File:QtCreator_form_with_push_button.png]] | ||
| - | + | Luego hacemos un metodo que maneje los eventos de clic, para que cuando el boton sea presionado, un mensaje se asigne a una variable, y luego se muestre en la consola. | |
| + | |||
| + | El codigo debe verse asi: | ||
<pre> | <pre> | ||
| Line 198: | Line 200: | ||
== Instrucciones opcionales para usar un equipo real MeeGo == | == Instrucciones opcionales para usar un equipo real MeeGo == | ||
| - | + | Si usted tiene disponible un equipo con MeeGo, tambien es posible ejecutar y depurar sus aplicaciones en el usando Qt Creator. | |
=== Prepare el equipo === | === Prepare el equipo === | ||
| - | + | El equipo requiere cierta configuración y paquetes extras antes de que pueda desplegar la aplicacion desde Qt Creator. Instalelos desde la linea de comandos como se explica: | |
<ol> | <ol> | ||
<li> | <li> | ||
| - | + | El despliegue de aplicaciones desde Qt Creator a un equipo utiliza SSH para copiar los archivos, será necesario instalar el servidor de OpenSSH en el equipo: | |
<pre>sudo zypper install openssh-server</pre> | <pre>sudo zypper install openssh-server</pre> | ||
| - | + | Para iniciar el servicio manualmente (solo tiene que hacer esto justo despues de instalarlo, de lo contrario, solo estará disponible hasta que reinicie el equipo): | |
<pre>sudo /etc/init.d/sshd start</pre> | <pre>sudo /etc/init.d/sshd start</pre> | ||
To add it to the init sequence so it starts at boot time: | To add it to the init sequence so it starts at boot time: | ||
| Line 214: | Line 216: | ||
</li> | </li> | ||
<li> | <li> | ||
| - | + | Si usted desea depurar aplicaciones remotamente, será necesario instalar ''gdbserver'' en el equipo: | |
<pre>sudo zypper install gdb-gdbserver</pre> | <pre>sudo zypper install gdb-gdbserver</pre> | ||
</li> | </li> | ||
</ol> | </ol> | ||
| - | === | + | === Ejecute la aplicación en el equipo === |
| - | + | Dentro de Qt Creator (aún corriendo dentro del chroot): | |
<ol> | <ol> | ||
| Line 254: | Line 256: | ||
[[File:Qt_app_running_on_netbook.png]] | [[File:Qt_app_running_on_netbook.png]] | ||
| - | === | + | === Depurar la aplicación en el equipo === |
| - | + | Esto funciona casi de la misma manera en un equipo remoto, que como funciona dentro del simulador. | |
| - | # Configure | + | # Configure el equipo |
| - | # | + | # En Qt Creator, haga clic en configuración de ''Target'' (icono en la parte inferior izquierda con un monitor). Asegurese de que en la opción ''Build'' esta configurada como ''Debug'' y en ''Run'' configure '''testapp on MeeGo device''' (el equipo remoto). |
| - | # | + | # Haga clic en el icono de una flecha verde con un insecto, para iniciar la aplicación en modo depuración. |
| - | + | Si usted uso el mismo codigo que se mostro arriba, intente hacer clic en el boton ''Click me'' dentro de la aplicación (que esta en el equipo). La aplicación deberia pausar en el punto de interrupción; y en Qt Creator, la variable ''message'' deberia estar visible en la pestaña ''Locals and Watchers'', y con el valor "I have been well and truly clicked". | |
| - | == | + | == Ver esta pagina en otros idiomas == |
* [[Hello World - Linux上的 MeeGo x86 开发|Simplified Chinese - 简体中文]] | * [[Hello World - Linux上的 MeeGo x86 开发|Simplified Chinese - 简体中文]] | ||
| - | * [[ | + | * [[SDK/Docs/1.0/Hello World - MeeGo x86 development on Linux|English]] |
Contents |
Este tutorial es una introducción para el desarrollo de aplicaciones para dispositivos MeeGo x86 en Linux. Se explica el flujo de trabajo basico para el desarrollo de aplicaciones, enfocandose en como trabajar conjuntamente las herramientas incluidas en el SDK.
No se entra en detalles sobre Qt, las APIs de MeeGo, o como hacer que una aplicación se integre en el entorno de MeeGo.
Si usted tiene un equipo con MeeGo:
Vea SDK/Docs/1.0/Getting started with the MeeGo SDK for Linux para más instrucciones.
Vea estas instrucciones.
Con todo instalado, usted deberia poder ahora ejecutar el simulador desde el entorno de MeeGo.
Deje el guión startmeego ejecutandose, e inicie Qt Creator asi:
qtcreator &
Esto ejecuta Qt Creator en la maquina host (no dentro de Xephyr):
Para configurar el proyecto:
Luego escribimos algo de codigo:
Y configuramos el proyecto:
En este momento, ya tenemos todo listo para ejecutar la aplicación.
Desde el Qt Creator, haga clic sobre la el boton de ejecutar (flecha verde en la parte inferior izquierda) para ejecutar la aplicación. Esto la construirá utilizando la version de Qt que configuró, y luego la ejecutara en el display :2 (dentro del escritorio MeeGo simulado en Xephyr).
En el simulador, puede ser necesario hacer clic en el icono MyZone (icono de casa) para mostrar la aplicación que esta corriendo:
Esto quiere decir, ejecutar la aplicación desde Qt Creator, pero con las opciones de depuración activadas, para poder observer el estado de la aplicación mientras corre bajo Xephyr.
En las secciones anteriores, construimos el asistente de depuración para la version de Qt que estamos usando. Esto es lo primero que se debe hacer, de lo contrario, no es posible depurar la aplicación.
Para habilitar el modo de depuración en Qt Creator, haga click en el icono de un insecto en la barra de herramientas de la izquierda. Esto deberia añadirle nuevos paneles a la ventana, los cuales son usados para mostrar la pila, inspecionar expresiones, etc.
Luego, necesitamos algo que depurar. Añadimos un Push Button' al formulario:
Luego hacemos un metodo que maneje los eventos de clic, para que cuando el boton sea presionado, un mensaje se asigne a una variable, y luego se muestre en la consola.
El codigo debe verse asi:
/* file: Headers/mainwindow.h */
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H
/* file: Sources/mainwindow.cpp */
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_pushButton_clicked()
{
QString message;
message = "I have been well and truly clicked";
qDebug() << message;
}
Most of this is boilerplate generated when I started the project, but the MainWindow::on_pushButton_clicked method is mine. Notice how it also needs to be defined as a private slot in the header file.
Add a breakpoint next to the line where you want the debugger to break by clicking in the editor margin. It looks like this:
(See the red circle on line 34 after message is initialized.)
To run the application in debug mode, click on the green arrow with a bug overlaid on it (bottom left). This starts the application inside Xephyr:
Now, click on the button. The program should pause at the breakpoint. Switch back to Qt Creator and look at the debug panels:
Notice how the Locals and Watchers tab reports the message variable set to "I have been well and truly clicked".
For more information about using Qt Creator in debug mode, see [1].
Si usted tiene disponible un equipo con MeeGo, tambien es posible ejecutar y depurar sus aplicaciones en el usando Qt Creator.
El equipo requiere cierta configuración y paquetes extras antes de que pueda desplegar la aplicacion desde Qt Creator. Instalelos desde la linea de comandos como se explica:
sudo zypper install openssh-server
Para iniciar el servicio manualmente (solo tiene que hacer esto justo despues de instalarlo, de lo contrario, solo estará disponible hasta que reinicie el equipo):
sudo /etc/init.d/sshd start
To add it to the init sequence so it starts at boot time:
sudo chkconfig --add sshd
sudo zypper install gdb-gdbserver
Dentro de Qt Creator (aún corriendo dentro del chroot):
Once you've completed this, you should be able to deploy and run the application on the netbook:

Here's an example of what the application looks like running on a netbook:
Esto funciona casi de la misma manera en un equipo remoto, que como funciona dentro del simulador.
Si usted uso el mismo codigo que se mostro arriba, intente hacer clic en el boton Click me dentro de la aplicación (que esta en el equipo). La aplicación deberia pausar en el punto de interrupción; y en Qt Creator, la variable message deberia estar visible en la pestaña Locals and Watchers, y con el valor "I have been well and truly clicked".