# Compilar y probar una aplicación

Para compilar un proyecto ejecutamos el comando:

```
$ cordova build
```

> Este comando solo lo podemos ejecutar dentro de la carpeta del proyecto a compilar y además tenemos que haber añadido las plataformas para las que queremos compilar previamente, en otro caso nos mostraría el error: ``Error: No platforms added to this project. Please use `cordova platform add <platform>`.``

Este comando generará el código del proyecto para todas las plataformas que tengamos añadidas, en caso de querer compilar solamente para una plataforma lo podríamos indicar de la forma:

```
$ cordova build ios
```

El comando `build` en realidad realiza dos operaciones, que son las de **preparar** el código (copiar el código actual del proyecto desde la carpeta `www` a todas las plataformas destino) y **compilarlo**. Estos dos comandos también los podríamos ejecutar por separado:

```
$ cordova prepare
$ cordova compile

# O para una plataforma:
$ cordova prepare ios
$ cordova compile ios
```

Después de llamar al comando `prepare` podríamos abrir de forma manual el proyecto desde la carpeta de la plataforma que queramos con el SDK correspondiente, por ejemplo con Xcode o con Android Studio.

Esta alternativa es interesante si lo que se desea es crear una versión inicial del proyecto mediante el CLI de Cordova y después cambiar al IDE de la plataforma correspondiente. En este caso tenemos que llevar cuidado, ya que si volvemos a compilar desde Cordova, para actualizar o copiar el código de la carpeta `www`, perderíamos los cambios que hubieramos hecho dentro de la plataforma.

Para más información específica sobre como desarrollar o cómo configurar cada una de las plataformas podéis consultar la sección "Develop for platforms" de la documentación oficial de Cordova: [http://cordova.apache.org/docs](http://cordova.apache.org/docs)

## Probar una aplicación en un emulador o dispositivo real <a href="#probar-una-aplicacion-en-un-emulador-o-dispositivo-real" id="probar-una-aplicacion-en-un-emulador-o-dispositivo-real"></a>

Cada SDK para una plataforma móvil suele incluir un emulador que permite probar las aplicaciones desarrolladas. Estos emuladores también se pueden llamar desde el CLI de Cordova mediante el siguiente comando:

```
$ cordova emulate

# O para una plataforma:
$ cordova emulate android
```

Para que se abra el emulador correspondiente debe de estar bien configurado. Algunas plataformas ya traen uno por defecto (como iPhone), pero en otras será necesario configurar el emulador por defecto a utilizar (como en Android).

Es importante que antes de llamar al emulador ejecutemos el comando `build`, el cual copiará la última versión de nuestro código, generará los proyectos correspondientes y los compilará. En otro caso podríamos tener errores. Por lo tanto, cuando actualicemos el código de "`www`" tendremos que llamar de nuevo a `build` y a `emulate`, el cual actualizará los emuladores abiertos con la última versión.

También podemos probar nuestro código en un dispositivo real mediante el comando:

```
$ cordova run android
```

El comando `run` en realidad es una combinación de los comandos `build` (por lo que no haría falta llamarlo previamente) e `install` (el cual instala un proyecto en una plataforma). Por defecto `run` instala y ejecuta el proyecto en una plataforma real (lo cual podemos forzar mediante el parámetro `--device`), o también lo podemos utilizar para ejecutar en un emulador añadiendo el parámetro `--emulator`.

Antes de ejecutar en un dispositivo real tenemos que configurarlo para permitir la instalación de aplicaciones de prueba. Este proceso varia para cada plataforma, por ejemplo, para Android tendremos que habilitar las opciones de desarrollador y la depuración a través de USB, además, dependiendo del sistema operativo que utilicemos, es posible que tengamos que instalar drivers o realizar alguna configuración adicional.

## Probar en un navegador

Es importante recordar también que podemos probar nuestra aplicación en un navegador. Para esto en primer lugar instalaremos la plataforma "browser" y a continuación ejecutaremos el comando:

```
$ cordova run browser
```
