Aplicaciones empaquetadas

This is an archived page. It's not actively maintained.

Una aplicaci贸n empaquetada es una Open Web App que tiene todos sus recursos (HTML, CSS, JavaScript, manifiesto y dem谩s) empaquetados en un archivo zip, en lugar de tenerlos en un servidor web. Una aplicaci贸n empaquetada es simplemente un archivo zip con el manifiesto de la aplicacion en su directorio ra铆z. El manifiesto debe ser llamado manifest.webapp.

Una direferencia de una aplicaci贸n alojada es que una aplicaci贸n empaquetada, es que debe especificar una ruta de arranque en el manifiesto en tanto que se trata de un campo opcional en una aplicaci贸n alojada.

Nota: Actualmente (Enero 2013) Firefox Marketplace solamente soporta aplicaciones empaquetadas para Firefox OS.

Prop贸sito de las aplicaciones empaquetadas.

El prop贸sito de una aplicaci贸n empaquetada, es tener una forma viable de proveer aplicaciones que tengan acceso a APIs sensibles en el dispositivo. Las aplicaciones deben ser verificadas por la tienda donde es distribuida (como Firefox Markerplace). La tienda revisa la aplicaci贸n y si la encuentra aceptable, firma el archivo zip de la aplicaci贸n con su llave privada. Esto da a los usuarios de la aplicaci贸n m谩s seguridad de que han sido revisados problemas potenciales de seguridad, privacidad y capacidad.

Tipos de aplicaciones empaquetadas.

Aplicaciones privilegiadas

Una aplicaci贸n privilegiada es aprobada por la Firefox Marketplace usando un proceso especial. Esto significa que provee m谩s seguridad a los usuarios cuando la aplicaci贸n quiere accesar a ciertas APIs sensibles del dispositivo. Esto equivale a las aplicaciones nativas en plataformas como iOS o Android. Para especificar que se trata de una aplicaci贸n privilegiada agregue el campo type a su archivo manifest.webapp  y establezca el valor de privileged.
Una aplicaci贸n privilegiada tiene las siguientes caracter铆sticas :
  • Es aprobada por una tienda de aplicaciones despu茅s de la revisi贸n de c贸digo o equivalente.
  • Los recursos de la aplicaci贸n son firmados por la tienda de aplicaciones.
  • Permite usar ciertas APIs Web sensibles a las que contenido no confiable no puede accesar.
  • Aplica Politicas de seguridad de contenido (CSP). Una aplicacion con privilegios utiliza estas CSP:
    "default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"
  • Implementa otros requisitos relacionados con la seguridad. Vea Seguridad para mas informacion.
Aplicaci贸n certificada
Una aplicacion certificada est谩 destinada a una funci贸n cr铆tica del sistema como el marcado por defecto o la configuraci贸n del sistema en un tel茅fono inteligente. Este tipo de aplicaci贸n podr铆a ser usada para funciones cr铆ticas en un tel茅fono con Firefox OS. No est谩 destinada para aplicaciones de terceros por lo que la mayor铆a de desarrolladores no pueden utilizarlas. Una aplicaci贸n certificada es una aplicaci贸n empaquetada similar a una con privilegios, excepto que todos los permisos del dispositivos son impl铆citos, lo que significa que son habilitados sin la aprobaci贸n expl铆cita del usuario. A Una aplicaci贸n certificada debe ser aprovada por el fabricante (OEM) o compa帽铆a (carrier) para tener la aprobaci贸n impl铆cta para usar APIs cr铆ticas. Para especificar que una aplicaci贸n es certificada, agregue el campo type a su archivo manifest.webapp y establecer su valor a certified.
Las siguientes son las CSP de una aplicaci贸n certificada, las cuales, son l铆geramente direfentes de las de una con privilegios:
"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"
Esto hace parecer que las reglas en las CSP son ligeramente m谩s flexibles para las aplicaciones con privilegios que en las aplicaciones certificadas. Si quiere saber las razones de esto, vea las Pol铆ticas CSP por defecto y Bug 768029.
Aplicaciones empaquetadas planas
Usted tambi茅n puede hacer una simple aplicaci贸n empaquetada en un archivo zip. La tienda la firma, pero no implementa el proceso especial de autenticaci贸n como en las aplicaciones certificadas o con privilegios. Estas aplicaciones no pueden usar ciertas Web APIs sensibles. Tampoco est谩 sujeta a las CSP como las aplicaciones certificadas o con privilegios. Este tipo de aplicaci贸n puede ser 煤til si quiere que todos los recursos de su aplicaci贸n est茅n disponibles cuando el usuario la usa por primera vez sin descargarlos. Este tipo de aplicaci贸n empaquetada no requiere el campo type en su archivo manifest.webapp por que el valor por defecto para type (web) es correcto.

Diferencias con las aplicaciones hospedadas

Las aplicaciones empaquetadas tienen las mismas capacidades que las aplicaciones web de c贸digo abierto normales (aplicaciones "alojadas"), pero las aplicaciones empaquetadas tienen algunas diferencias:

  • No tienen origen en Internet. La pol铆tica de una aplicaci贸n por origen (one-app-per-origin) que gobierna a las aplicaciones hospedadas no aplica para las aplicaciones empaquetadas.
  • Las aplicaciones empaquetadas usan un protocolo interno especial en el archivo zip: app://<uuid>. Ejemplo: Cuando usted carga el contenido de /index.html en una aplicacion empaquetada, en realidad esta cargando algo como lo siguiente: (el UUID sera diferente):
    app://550e8400-e29b-41d4-a716-446655440000/index.html

    El UUID es generado al azar en el momento de la instalacion, lo cual significa que es 煤nico en cada dispositivo en la que es instalada la aplicaci贸n. El protocolo  app:// ser谩 煤til en futuras versiones en tiempo de ejecuci贸n, pagos y flujos de OAuth.

  • El archivo del manifiesto debe ser llamado manifest.webapp.
  • Los recursos son accedidos desde un archivo zip, el cual es almacenado en el dispositivo donde son instalados.
  • Son instalados con una funcion API mozApps diferente: installPackage().
  • Aplican una CSP para todo el contenido de la aplicaci贸n (una aplicaci贸n tambi茅n puede usar una CPS, pero no la requiere).
  • Tambi茅n pueden incrustar contenido remoto en iframes, pero dicho contenido no tendr谩 acceso a APIs privilegiadas ni las CSP por defecto le ser谩n aplicadas.
  • Tienen un proceso de actualizacion para obtener las nuevas versiones para los usuarios; las aplicaciones hospedades no lo necesitan de este proceso.

Las aplicaciones empaquetadas tambi茅n pueden hacer cosas como acceder a bases de datos en un servidor web como una aplicaci贸n hospedada.

Usando APIs Web sensibles

Hay Web APIs que pueden ser usadas maliciosamente por lo que el acceso a estas debe ser controlado. Para cada API sensible a la que se quiera acceder, ustede debe agregar una entrada al campo permissions en el  manifiesto de la aplicaci贸n.

Algunas APIs sensibles pueden ser accedidas por aplicaciones hospedadas normales, pero otras APIs requieren que usted use una aplicaci贸n empaquetada (con privilegios o certificada). Vea Permisos de aplicaciones para una tabla que describe los requisitos..

Aplicaciones empaquetadas de la tienda de Firefox (Firefox Marketplace).

La tienda de Firefox (Firefox Marketplace) maneja a las aplicaciones empaquetadas de forma diferente que las aplicaciones hospedadas. Cuando usted manda una aplicaci贸n empaquetada, su archivo zip es almacenado en los servidores de la Tienda y genera un nuevo manifiesto llamado el "mini-manifiesto" que est谩 basado en el manifiesto de la aplicaci贸n que se encuentra en el archivo zip. Cuando un usuario installa su aplicaci贸n, el mini-manifiesto es pasado a la funci贸n installPackage() en la aplicaci贸n instalada. El mini-manifiesto existe para prop贸sitos de instalaci贸n y actualizaci贸n y no es usado cuando la aplicaci贸n se ejecuta.

Prueba de instalaci贸n de una aplicaci贸n empaquetada (con Simulador)

Para instalar una aplicaci贸n empaquetada en un dispositivo Firefox OS usando el simulador, vea la  secci贸n "Push to Device" en la gu铆a del Simulador.

Prueba de instalaci贸n de una aplicaci贸n empaquetada (sin Simulador)

Si quieres probar localmente la instalaci贸n de tu aplicaci贸n empaquetada, aqu铆 hay otra forma de hacerlo. Usa los siguietnes pasos para instalar una aplicaci贸n empaquetada en un tel茅fono usando un servidor Web que est谩 en tu red local. Puede ser un servidor local que se ejecute en la computadora en la que est谩s desarrollandol. Esto tambi茅n de dar谩 una idea de c贸mo funciona la instalaci贸n de aplicaciones empaquetadas.

Requisitos

  • El servidor Web debe estar en la misma red que el tel茅fono y debe de estar habilitado para recibir peticiones de la red local.
  • El tel茅fono debe ejecutar Firefox OS y tener el Wi-fi encendido.
  • Modifique las rutas usadas en el siguiente c贸digo de ejemplo para que coincidan con su servidor..
  • Obtenga la direcci贸n IP de su servidor y 煤sela en lugar de <server-ip> en los siguientes ejemplos. Si el servidor no utiliza un puerto est谩ndar, use este tambi茅n. Ejemplo de una direcci贸n IP sin un puerto est谩ndar:
    10.10.12.1:8080

Pasos

  1. Tenga su aplicaci贸n empaquetada disponible y dele el nombre de package.zip. Este archivo tiene todos los recursos, incluyendo el archivo del manifiesto.
  2. Cree un archivo llamado package.manifest y agregue el siguiente contenido. Este es un mini-manifiesto usado por aplicaciones empaquetadas dentro del archivo zip. Vea Campos del mini-manifiesto si quiere m谩s informaci贸n acerca de los mini-manifiestos.
    {
      "name": "My App",
      "package_path": "http://<server-ip>/package.zip",
      "version": "1.0"
    }
  3. Cree un archivo llamado install.html con el siguiente contenido . Este contiene el c贸digo JavaScript que llama a la aplicaci贸n empaquetada (installPackage()) y a las funciones callbacks para las notificaciones de 茅xito o falla.
    <html>
      <body>
        <p>Packaged app installation page</p>
        <script>
          // This URL must be a full url.
          var manifestUrl = 'http://<server-ip>/package.manifest';
          var req = navigator.mozApps.installPackage(manifestUrl);
          req.onsuccess = function() {
            alert(this.result.origin);
          };
          req.onerror = function() {
            alert(this.error.name);
          };
        </script>
      </body>
    </html>
  4. Copie el archivo package.zip, package.manifest, e install.html dentro de la carpeta ra铆z del documento en el servidor.
  5. Utilice el navegador en el tel茅fono para abrir  http://<server-ip>/install.html y confirme la entrada para instalar la aplicaci贸n. El script le dar谩 una la indicaci贸n de que la instalaci贸n fue exitosa o fall贸.

Nota: Si usted quiere probar aplicaciones certificadas (descritas anteriormente) encienda el "modo de desarrolador" ("developer mode")  en el dispositivo que quiera instalar la aplicaci贸n (con Firefox OS) y aseg煤rese de especificar el type correcto en su archivo manifest.webapp.

Campos del mini-manifiesto

Aqui hay un ejemplo de los campos del mini-manifiesto (mini-manifest):

{
  "name": "My app",
  "package_path": "http://thisdomaindoesnotexist.org/myapp.zip",
  "version": "1.0",
  "size": 172496,
  "release_notes": "First release",
  "developer": {
    "name": "Developer Name",
    "url": "http://thisdomaindoesnotexist.org/"
  },
  "locales": {
    "fr_FR": {
      "name": "Mon application"
    },
    "se_SE": {
      "name": "Min balla app"
    }
  },
  "icons": {
    "16": "/icons/16.png",
    "32": "/icons/32.png",
    "256": "/icons/256.png"
  }
}

Cuando el Firefox Marketplace genera un mini-manifiesto para tu aplicacion,  extrae informacion desde tu manifiesto de la aplicacion para algunos campos. Usted puede encontrar documentaci贸n para estos campos en el  manifiesto de la aplicaci贸n. Los campos 煤nicos del mini-manifiesto son package_path, release_notes, y size. Los campos name, version, developer, y locales en su manifiesto de la aplicaci贸n deben ser exactamente los mismos que en su mini-manifiesto.

Aqu铆 hay informaci贸n sobre el mini-manifiesto que se relaciona con su uso a nivel local para sus propias pruebas::

name
(requerido) El nombre de la aplicaci贸n. La longitud m谩xima es de 128 caracteres.
package_path
(Requerido) Una URL completa donde el zip de la aplicaci贸n puede ser encontrado.
version
La versi贸n de la aplicaci贸n.
size
El tama帽o del zip de la aplicaci贸n en bytes. No es necesario para las pruebas locales pero se utiliza para mostrar una barra de progreso durante la instalaci贸n.
release_notes
Informaci贸n acerca del lanzamiento de la aplicaci贸n. En el Marketplace esta informaci贸n proviene de la p谩gina web que es parte del proceso de env铆o..
developer
Informaci贸n acerca del desarrolador, contiene los campos name y url.
locales
Informaci贸n de localizaci贸n.
icons
Iconos usados por la aplicaci贸n.

Actualizando aplicaciones empaquetadas

Para informaci贸n sobre actualizar aplicaciones, vea Actualizando aplicaciones.

Ejemplo de aplicaci贸n empaquetada