====== Cordova ====== Apache Cordova (inicialment PhoneGap) son unes llibreries per al desenvolupament d'apps mòbils utilitzant [[JavaScript]], [[HTML]] i [[CSS]]. La principal avantatge és que permet utilitzar un llenguatge web genèric (JS) i compilar l'app per a diverses plataformes diferents, d'entre les que destaquem les majoritàries [[Android]] i [[iOS]]. El seu funcionament es basa en tenir una aplicació nadiua amb una simple WebView que ocupa tota la pantalla sencera. Implementant codi JavaScript dins la WebView ens permetrà controlar la interfície gràfica. Per accedir a les funcionalitats pròpies del dispositiu mòbil disposarem de certes llibreries (càmera, filesystem, acceleròmetre, etc). {{ cordova.png?400 }} {{tag> #Dam #DamMp08 #DamMpDual #DawMpDual Android iOS Cordova HTML JavaScript }} ===== Introducció i requisits ===== Per poder seguir aquest article se suposa que has de tenir coneixements de [[JavaScript]], [[HTML]] i [[CSS]]. Si tens coneixements molt bàsics també t'interessaria [[https://www.w3schools.com/js/js_htmldom.asp|repassar els conceptes del DOM o Document Object Model]]. Abans de començar a treballar amb Cordova caldrà que tinguem instal·lats els entorns de desenvolupament: llegeix [[Java]] i [[Android]] primerament. Per instal·lar Cordova necessites un bon plegat d'eines. De forma general necessitaràs: - **Android Studio** que ens facilitarà les eines de l'Android SDK. - **Java JDK** per compilar la part base de la app (en Java). Ull amb les versions: >11 i < =18 - **NodeJS** que ens facilitarà el gestor de paquets NPM amb el què podrem instal·lar Cordova - **Gradle** en la darrera versió. Segueix les indicacions de l'article [[Cordova install]] per posar a punt tot l'entorn. \\ ====== Construint una App amb Cordova ====== Si ja tens l'entorn preparat, es tracta de desenvolupar una app com si es tractés d'una aplicació web (com si fos pel //browser//) amb JavaScript. Podem aplicar llibreries típiques com jQuery o AngularJS, i a més disposarem d'algunes mes per a poder accedir al //hardware// del mòbil. \\ ===== Primera App ===== La seqüència típica per iniciar un projecte és com s'indica a continuació: - Crear projecte: $ cordova create proj1 - Entrar al directori del projecte: $ cd proj1 - Afegir plataformes (android/ios/browser): $ cordova platform add android - Compilar per Android: $ cordova build android - Arrencar el projecte a l'emulador: $ cordova run android Tingues en compte que per desenvolupar resulta molt còmode treballar amb la ''platform browser'' i les eines de desenvolupador del propi navegador. Mira l'article [[Introducció Javascript]] i realitza l'exercici de //login// i registre d'usuaris dins d'una aplicació Cordova. \\ ===== Afegint jQuery ===== jQuery ens pot ajudar molt a agilitzar el desenvolupament. Podeu aprendre més sobre [[jQuery]] <- en aquesta wiki. Com afegir jQuery a la meva pàgina HTML: - **Instal·lació "a mà"**. Cal incloure els arxius de jQuery al nostre projecte. Ho pots fer de diverses maneres: - Descarregar els arxius de la web oficial http://jquery.com - Utilitzar els repositoris online (CDN). Pots veure com fer-ho en aquest tutorial: - https://www.w3schools.com/jquery/jquery_get_started.asp - Instal·lació amb el **//package// ''cordova-jquery'' de NodeJS** que, a més, ens facilita plantilles bàsiques típiques de apps mòbils. - Està força obsolet, però té alguns //templates// que permeten començar ràpid. - https://www.npmjs.com/package/cordova-jquery - Instal·la-ho a l'arrel del teu projecte Cordova:$ npm install cordova-jquery - Configura el template. * En Linux executa:$ node_modules/cordova-jquery/cordova-jquery * En Windows fes des del CMD:node node_modules/cordova-jquery/cordova-jquery - Mira com queda la plantilla fent de nou:$ cordova run browser - Prova diversos //templates// (per exemple: multipage, accordion, listview). Observa el codi que ens genera per cadascun d'ells, en particular el ''index.html''. - Ens quedarem amb el ''listview'' ja que ens anirà bé com a base per a fer un exercici de //tasklist//. * La [[https://api.jquerymobile.com/listview/|documentació oficial de jQuery mobile listview]] ens serà útil per a saber com utilitzar-la. Hi ha un petit error a les plantilles. Quan arrenquis l'aplicació mira la consola (CTRL+SHIFT+K) i veuràs un error a la línia 28 del ''index.js''. Elimina aquesta línia ja que no ens cal i ens atura l'execució de la nostra aplicació. \\ ===== Cordova no vol inlines ===== Típicament podríem fer una aplicació en JavaScript en una pàgina HTML i podríem posar botons que cridin a funcions del nostre codi amb un //onclick// (el què coneixem per crida //inline//). Doncs bé, Cordova no ens deixa fer //inlines// com aquest. Aquesta solució funcionaria en una web normal, però **no funciona en Cordova**: Això es deu al tag META que hi ha l'inici del HTML (secció //head//): i que veurem més endavant com a mesura de seguretat, per evitar injeccions de codi extern a la nostra app. Forma de solventar-ho: fer els botons més senzills, sense //onclick// (però amb //id//): I després, en el nostre ''index.js'', ja li afegim el //onclick// (jQuery version): $('#boto1').click(addElem); En aquest exemple, cridaríem a la funció ''addElem()''. I un darrer apunt, la crida a aquesta funció no pot anar al principi del document, pq en el //head// encara no existeix el nostre //button//. Tenim 2 solucions: - Posar el tag ''