Ubuntu Touch: Sviluppo App e Convergenza
-
Upload
giulio-collura -
Category
Software
-
view
528 -
download
0
Transcript of Ubuntu Touch: Sviluppo App e Convergenza
Sviluppo App e Convergenza
Giulio Collura
Il futuro del computing
Ubuntu funziona su smartphone, desktop, server e cloud
Interfaccia veloce e intuitiva per ogni dispositivo
Core Apps di qualit e un ecosistema di app in continua crescita
Ubuntu SDK con supporto nativo e HTML5
Differenziazione senza frammentazione
Spazio agli sviluppatori
Ubuntu fornisce tutti gli strumenti necessari allo sviluppoUbuntu SDK
Applicazioni native e HTML5
Portale con documentazione, tutorial e API reference
Linee guida per il design
Processo di upload e pubblicazione app semplice e sicuro
Ubuntu Store
Comunit di sviluppatori e designer attiva e entusiasta
La piattaforma Ubuntu
Sistema Operativo Ubuntu, con un layer Android per il device
Unity
Ubuntu SDK fornisce API trasparente per l'accesso ai servizi, device
Convergenza
QtQuick
Non solo adattamento nella dimensione dei componenti, design e modi d'uso devono essere ottimizzati
La prima versione LTS a essere completamente convergente sar la 16.04
Unity 8, gi in uso su smartphone e tablet, rimpiazzer Unity 7 nella versione desktop
foundations SDK
Ubuntu SDK
Fornisce tutti gli strumenti per sviluppare app semplicemente
Disponibile per numerosi linguaggi:QML, linguaggio dichiarativo utile a descrivere l'interfaccia utente di un programma
Javascript
C++
HTML5
QtQuick
Interfacce utente semplici e veloci
Design-oriented
Sviluppo rapido
Il QML un linguaggio dichiarativo che consente agli oggetti di essere definiti secondo le loro propriet e di come possono interagire e rispondere ai cambiamenti
Componenti
Layouts
Resolution Independence
Localizzazioni
Cloud-ready
Emulatore
Servizi
Command-line parsing
The kit provides the features expected from a modern SDK> Layouts a flexible layouting engine to create responsive user interfaces.> Resolution independence facilities to manage UI element sizes to behave consistently across form factors> Internationalization run your app in any language, graciously handle locale-aware settings and formats> Cloud-ready integration with Ubuntu's U1DB to store documents and app settings in the cloud> Automatic State Saving save the state of any component for logic that depends on previous runs> Emulator which makes testing of apps super easy.> Services (Alarm), Command-line parsing and more!
Ambiente di sviluppo
Qt CreatorCompleto supporto al C++ e QML
Interfaccia grafica per la gestione del dispositivo
Connessione al device tramite SSH (Secure Shell)
Permette l'avvio e l'interruzione di applicazioni durante lo sviluppo
Comprende tool di packaging, convalida e installazione
Cross-compilation direttamente dal desktop
Accesso diretto alla documentazione
Linea di comando
Installazione
Tramite terminale:Per Ubuntu 12.04 LTS, 13.10 e 14.04
Per versioni in sviluppo
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa && sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get install ubuntu-sdksudo apt-get update && sudo apt-get install ubuntu-sdk
Ciclo di vita di una app
Le app sono sospese quando non visibili
Il ciclo di vita di una app progettato per essere semplice, sicuro e ottimizzare il consumo di batteria
Sicurezza
Tutte le app sono confinate grazie ad AppArmor, tramite specifiche restrizioni
AppArmor un modulo di sicurezza del kernel
Ogni app possiede un profilo AppArmor definito tramite un file di configurazione
Ogni app pu solo scrivere nella propria directory
Lo scambio di informazioni tra app consentito tramite ContentHub
Qt/QML e web app
Supporto completo per entrambe le piattaforme di sviluppo
Massime performance con il supporto nativo
Tutte le potenzialit del web grazie alle web appHTML 5 e CCS 3
Nessuna modifica richiesta alle webapp gi esistenti
App native
Scrivere app native per sfruttare tutta la potenza del dispositivo
QML + Javascript + C++ (Google Go)
Il Javascript si integra direttamente nel QML
Grazie alle librerie Qt, il C++ non mai stato cos semplice da usare
C++ per il backend come un plugin, QML per il frontend
Click packages
I pacchetti Click (.click) sono il nuovo modo in cui sono impacchettate, distribuite e installate le app per Ubuntu Touch e, in futuro, Ubuntu Desktop
Concetto simile agli .apk di Android
Progettati per essere semplici, veloci e sicuri, grazie all'integrazione di AppArmor
Possono essere creati direttamente da QtCreator
Forniscono isolamento tra aggiornamenti del sistema e delle appGli aggiornamenti del sistema vengono forniti tramite Debian packages o aggiornamenti OTA (over-the-air) incrementali
Gli aggornamenti delle app tramite pacchetti click
app project design develop publish
Nuovo progetto
IdeeNuove applicazioni
Porting di Harmattan apps
Remake di app iOS e Android
TutorialDisponibili in rete http://developer.ubuntu.com
Design guidelineshttp://design.ubuntu.com/apps
ReferenceCore Apps
Kit: ambiente con architettura emulata armhf o i386
Consente la cross-compilation e la cross-configuration di una app
Gestione del device direttamente da QtCreator
Sono forniti anche tool da linea di comandosudo apt-get install phablet-tools
Struttura del QML
Il QML un linguaggio dichiarativo: si definisce il componente che si vuole e si specifica le sue propriet
Specificare un id serve a rendere il componente accessibile da altre parti nel codice
Esempio:
Rectangle { id: canvas width: 200 height: 200 color: "blue" }
Gli oggetti possono essere innestati
Notare come logo acceda alle propriet di rect
import QtQuick 2.0
Rectangle { id: rect width: 300 height: 300 color: "orange"
Image { id: logo source: "/usr/share/icons/ubuntu-mobile/apps/scalable/calculator.svg" anchors.centerIn: parent height: rect.height / 2 width: rect.width / 2 } }
Integrazione Javascript e QML
Codice Javascript pu essere integrato con semplicit per fornire controllo sugli elementi e altri benefici
Item { width: randomNumber() height: width < 100 ? 100 : (width + 50) / 2 function randomNumber() { return Math.random() * 360; }}
MainView
Componente principale per tutte le applicazioni
Aggiunge automaticamente un header, utile alla gestione di Tab e comandi
Ruota automaticamente i contenuti a seconda della rotazione del device
Modulo di Ubuntu.Componentsimport Ubuntu.Components 1.0
main.qml
import QtQuick 2.1import Ubuntu.Components 1.1import "ui"
MainView { objectName: "mainView" applicationName: "com.ubuntu.developer.."
Tabs { id: tabs HelloTab { objectName: "helloTab" } WorldTab { objectName: "worldTab" } }}
Resolution Independence
DeviceConversione
Comuni schermi(laptop, desktop)1 gu = 8 px
Retina display1 gu = 16 px
Smartphones1 gu = 18 px
Nuovi componenti
utile creare nuovi componenti esternamente per modularizzare la propria applicazione
Molto semplice
necessario creare un nuovo modulo .qml all'interno del progetto
Esempio
components/HelloComponent.qml
import QtQuick 2.0import Ubuntu.Components 0.1
UbuntuShape { width: 200 height: width
property alias text: myText.text
Label { id: myText anchors.centerIn: parent }}
main.qml
import QtQuick 2.0import Ubuntu.Components 0.1import "components"MainView { width: units.gu(48) height: units.gu(60) Page { title: "Example page" HelloComponent { anchors.centerIn: parent text: "Hello world!" } }}
Convergenza
Una sola applicazione per tutti i dispositivi
Uso efficiente dello spazio dello schermo
Interfacce dinamiche
Layouts
Layouts
Ubuntu.Layouts
Componente dell'SDK utile a posizionare i vari elementi date certe condizioni
import Ubuntu.Layouts 1.0
ElementiLayouts
ItemLayout
ConditionalLayout
U1db
Modulo per la gestione di un database basato su JSON objects
Molto semplice da usare
Comodo per salvare impostazioni e informazioni permanentemente
Implementa la sincronizzazione con i server UbuntuOne
import U1db 1.0 as U1db
Policy: networking
Domande
Contatti
Email: [email protected]: gcollura93IRC: gcolluraLinkedin: Giulio Collura
Le slide saranno disponibili sulla mia pagina web:http://gcollura.github.io/projects
Grazie!