SlideShare une entreprise Scribd logo
Développezvosapplicationsnativesen
HTML/JSavecles
ChromeApps
Quisuis-je?
Florent Dupont
Expert TechniqueWeb & Mobilité
florent-dupont.blogspot.fr
+FlorentDUPONT
Cette présentation a été donnée en Novembre 2014 dans le cadre d’une
session Tech Study Group, une session de partage et de veille à SQLI Nantes.
Cette présentation de Chrome Apps est mise à disposition
selon les termes de la licence Creative Commons by-nc-sa.
ChromeApps
Tourd’horizon des applicationsChrome
programmez 178
Découvertedes applicationsChrome Mobiles
programmez 179
Chromeenunephrase…
“Apporterl’expériencelarichesseduWebendehorsdevotrenavigateur.
”…eten4concepts
UI Immersive
Accèshardware
Offline par default
Sécurisé
Multi-devices
ChromeOS,windows, Linux, OSX
ApacheCordova : ioS, Android
Chrome–lescanauxdedéveloppement
Canary
Run side-by-side
Profile dédié
Release daily as it’s build
Pas testé
Report & statisticsto Google
Très proche de dev channel
Dev channel
Release 1 to 2 /Week
Bêta channel
Release Weekly
1 month before Stable
Chromium builds
Open-sourceproject
Sources
Continuousbuild
Working copy
Can be build from source
Stablechannel
Fully tested
Updated every 2-3 weeks
Major update 6 months
Release public
Earlyaccess StableSources
WebAppsvsChromeExtensionsvsChromeApps
Web Apps
Hébergée
Distant
WEB/JS/CSS
Online
Execution dans navigateur
Service en ligne
API : API Web Chrome *
ChromeExtensions
Packagé en CRX (zip-like)
Local
WEB/JS/CSS
Offline
Execution dans navigateur
Fonctionnalité du navigateur
API : API Web Chrome *, API
extensions (bookmarks, cookies,
devtools, downloads, history, …)
ChromeApps
Packagée en CRX (zip-like)
Local
WEB/JS/CSS
Offline
Execution hors navigateur
Application native
API :API Web Chrome *, API apps
(bluetooth, serial, fileSystem,
runtime, …)
Créeruneapplication
4éléments
Manifest.json
{
"name": "My awesome App",
"version": "2.0.1",
"manifest_version": 2,
"permissions": [...],
"minimum_chrome_version": "23",
"icons": {
...
},
"app": {
"background": {
"scripts": ["app.js"]
}
}
}
Icones
16px 32px 48px 128px
Installation,Web Store
Fortement recommandé
favicon, infobars
(extensions)
recommandé
RaccourcisWindows Page de management
Carrées
Down/up-scaléessi besoin
Permissions
Définir les accèsautoriséspar l’application.
URL
http://*/* : toutes les URL qui matchent le protocole http.
Par exemple : http://www.google.com/
file:///foo* : tous les accès aux fichiers locaux dont les fichiers commencent par foo*
<all_urls> : matche toutesles URL
API
serial, storage, videoCapture, …
 Disponible sur la documentationdes API.
Scriptdelancement
app.js
______________________________________________________________________
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('index.html', {
id: "mainwin",
bounds: {
width: 320,
height: 240
}
});
});
Empaquetage
Depuis chrome://extensions
En ligne decommande
chrome.exe --pack-extension=C:myapp --pack-extension-key=C:myapp.pem
Démo
Création,packaging&lancement
API
Tourd’horizon
QuellesAPI?
Les API Web standards : JS standardWeb (document, window, etc), librairiesJS
tierces(jQuery, Angular), XHR.
Les API Web non-standardiséesimplémentéespar Chrome : audio, geolocalisation,
canvas, mais égalementWeb Speech,getUserMedia,Web Animations,…
Les API Webkit : CSS webkit-* (webkit-transform, webkit-transition, … )
API V8 : JSON
Les API ChromeApps
pas les API Chrome Extensions
APIMatérielle
Serial, Socket(TCP, UDP), USB, HID, bluetooth,BLE
RichNotifications
Différentstypes : basic, image, list,progression
APISystème
Idle,
power,
system.*: CPU, display, Memory,Network,Storage
OSetapplications
Runtime
Storage
SyncFileSystem
App.runtime,app.window
Commands
Events
mediaGalleries
Wallpaper, audio*
*Chrome OS only in dev Channel
Cloudetservices
pushMessaging
GCM
Identity
Copresence*
*dev channel
Accessibilité
TTS(Text-To-Speech), accessiblityFeatures
I18N
Démo
JouonsavecArduinoetleSerialAPI
DémoduSerialAPI–CommunicationavecArduino
USB (profil serie)
Intégration
aveclesframeworksWeb
ContentSecurityPolicy
Idée: se prémunir des faillesCross-SiteScripting (XSS)
Impacts:
• Pas d’utilisationd’inline scriptingdans le HTML : les balises <script>,les events
handlers (i.e onclick())bloqués
• Pas de référencementà des resourcesexternes: img, frame, font, media, style
(exceptaudio et video).
• Les fonction« string-to-JS» nesont pas autorisées(eval(), Function(), …)
Intégrationavecl’existant
index.html
main.js
index.html
Refused to evaluate a string as JavaScript
because 'unsafe-eval' is not an allowed
source of script in the following Content
Security Policy directive: "default-src
'self'". Note that 'script-src' was not
explicitly set, so 'default-src' is used as
a fallback.
IntégrationavecAngular
Mode de compatibilitéCSP : DirectivengCsp
Impacts:
• Evaluationdes expressions30% plus lent.
• Inclusionangular-csp.css manuellement
• Ajoutde la directiveng-csp.
<!doctype html>
<html ng-app ng-csp>
IntégrationavecPolymer
Externaliserles portionsde scripts
<polymer-element name="my-title">
<template>
<h1>{{label}}</h1>
</template>
<script>
Polymer("my-title", {
ready: function() {
this.label = "I <3 my ChromeBook";
}
});
</script>
</polymer-element>
<polymer-element name="my-title">
<template>
<h1>{{label}}</h1>
</template>
<script src="my-title.js"></script>
</polymer-element>
Polymer("my-title", {
ready: function() {
this.label = "I <3 my ChromeBook";
}
});
my-title.js
my-title.htmlmy-title.html
IntégrationavecPolymer
Vulcanizer l’application
…mais incompatibleavec ChromeOS
(NodeJS indisponible).
UtiliserChromeDev Editorpour
refactorerpour CSP.
<polymer-element name="my-title">
<template>
<h1>{{label}}</h1>
</template>
<script>
Polymer("my-title", {
ready: function() {
this.label = "I <3 my ChromeBook";
}
});
</script>
</polymer-element>
Outilsdedéveloppement
ChromeDevEditor (developer preview)
ChromeDevEditor (developer preview)
Outil unifié pour les développementJS/Dart
CompatibleWeb Apps & ChromeApps
IntégrationBower
Déploiement sur Mobile
PublicationPlayStore
Clone depuis Github
Polymer Designer
+ …
ChromeApps&ExtensionsDeveloperTool
Un chrome://extensions amélioré
Améliore le flow de travail
Séparation apps/extensions
Historique des appels (debug)
Distribuersonapplication
ChromeWebStore
Découvrabilitédes applications
listing, notations,revues, commentaires,achat etinstallation
centralisésau sein d’une plateformeunique.
Monétisation.
Comptedéveloppeur : 5$
ChromeAppLauncher
Intégréà l’OS.
CompatibletousOS
Pointcentral pour les applications
ChromeAppLauncherdepuisChrome
Disponible sous : chrome://apps
Administrationvia chrome://extensions
Etsurmobile?
BasésurApacheCordova(Adobe PhoneGap)
ApplicationsHybride = ApplicationWeb dans un conteneurnatifvia WebView.
Google contributeur
Plugin Cordova pour ChromeApps
Objectif:
Proposerles API clés de Chrome pour une utilisationavec iOS etAndroid.
HistoriquedesWebviews
IOS : UIWebControl
Android < 4.4 : moteur de rendu du BrowserAndroid (basé sur Webkit, limité)
Android 4.4 : moteur Chromium M30 (V8, quelques standards).
Android 5 : moteurChromium M37 (WebRTC,WebAudio, WebGL, WebComponents,…)
Updatabledepuis Google Play !
Limitationsergonomiques
Layout en orientationportrait  privilégierlesmedia-queries CSS.
Taillesde fenêtreindiquées par chrome.app.windowignorées.Appli en plein-
écran par défaut !
Petitsboutons/iconesen mode tactile prévoir> 44px.
Elements en survol de souris : comportementsincertains A éviter
Tap-delayde 300ms  Utiliserlibrairiestiercesou Chrome>M32.
Compatibilités
CertainesfonctionnalitésWeb
désactivées,mais portéespar
Cordova.
En cours de portage…
Android IOS
Alarmes   
Système de Fichier  
Internationalisation   
Identité  
Veille (idle)  
Notifications  
Power  
Push Messaging   
Socket TCP/UDP  
Stockage  
API syncFileSystem  
Paiements   
Bluetooth  
Commandes  
Menus contextuels  
Galerie médias  
Permissions  
Port Série  
Info Système  
Synthèse vocale  
types  
USB  
Webstore  
Balise <webview>  
Client Natif (NaCl)  
Créersonapplicationmobile
Création d’un nouveau projet
$ cca create MonApp
Constructionde l’APK
$ cca build
Exécuter
$ cca run
Manifest.mobile.jsonmobile
Paramétragespécifique à l’applicationmobile.
Utilepour constitutiondes manifestnatifs(Manifest.xmlsousAndroid)
{
"packageId": "com.your.company.HelloWorld",
"versionCode": 1,
"CFBundleVersion": "1.1.1"
}
Autresspécificités
Cyclede vie etEvenements différentsentreDesktop etMobile !
Chrome Apps Developer Tools(Android only)
Distributionsur Web Store(et non!) Storedédiés : Google Play, Apple App Store
Coûtsde distributionplusélevés : 25$ (Google) et 99$ (Apple)
Management,monétisation,notationetcommentaireséparpillés 
Etaprès?
Etaprès?
Ephemeral Apps
Manifestv3 (promise-basedAPIs)
App_shell
Service Worker
CrossWalkWebview
Plusd’exemplesetoutils
What are Chrome Apps : https://developer.chrome.com/apps
Les vidéosde Google I/O 2014 : Chrome Apps : State of the Union et Chrome Apps on
Android
Les examples de chaque API : https://github.com/GoogleChrome/chrome-app-samples
Les fonctionnalitésdispo dans Chrome : https://www.chromestatus.com/features

Contenu connexe

PDF
Les extensions Firefox et Google Chrome pour naviguer efficacement
PPTX
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
PPTX
Comment créer des Chrome Apps ou Packaged Chrome Apps
PPTX
Les Meilleurs Extensions: Top 10 google chrome extensions
PDF
Extentions Firefox 29-01-2013
PDF
Firefox extensions vpdf
PDF
Prsentation flash
PPSX
kukoc
Les extensions Firefox et Google Chrome pour naviguer efficacement
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Comment créer des Chrome Apps ou Packaged Chrome Apps
Les Meilleurs Extensions: Top 10 google chrome extensions
Extentions Firefox 29-01-2013
Firefox extensions vpdf
Prsentation flash
kukoc

Tendances (16)

PDF
Séminaire Captronic Yocto 24 février 2015
PPT
PréSentation Flash
PDF
Introduction à flash - session 1
PDF
Firefox OS 1.1 L'autre systeme pour smartphone
PPT
Video accessible sur le web et sous-titrage
PDF
150 scripts pour flash as2
PDF
Le Kit du Parfait Petit Intégrateur (PW2009)
PDF
Gestion des dépendances dans un projet PHP - RMLL 2012
PDF
Barre pour développeur Firefox et Eclipse
PPTX
Advanced html5
PDF
Tutoriel Scrapbook
PPTX
Introduction à Bash dans Windows 10
PDF
À La découverte de flow3 - t3con12
PPTX
Creer un site internet avec Joomla - Atelier du Web Tourangeau - Conférence N...
PPTX
WordPress - Du blogging au business model
PDF
symfony : Un Framework Open-Source pour les Professionnels
Séminaire Captronic Yocto 24 février 2015
PréSentation Flash
Introduction à flash - session 1
Firefox OS 1.1 L'autre systeme pour smartphone
Video accessible sur le web et sous-titrage
150 scripts pour flash as2
Le Kit du Parfait Petit Intégrateur (PW2009)
Gestion des dépendances dans un projet PHP - RMLL 2012
Barre pour développeur Firefox et Eclipse
Advanced html5
Tutoriel Scrapbook
Introduction à Bash dans Windows 10
À La découverte de flow3 - t3con12
Creer un site internet avec Joomla - Atelier du Web Tourangeau - Conférence N...
WordPress - Du blogging au business model
symfony : Un Framework Open-Source pour les Professionnels
Publicité

En vedette (20)

PPT
Les vaccinations rappel calendrier vaccinal 2008
PPTX
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
PDF
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
PDF
Brochure Meca-19102016-bd
PPT
Protection des métaux contre la corrosion
PDF
TALAT Lecture 5203: Anodizing of Aluminium
PDF
TripleHard - Trivalent Based Hard Chrome - Case Tecnocrom
PPTX
Zinc and zinc nickel plating
PDF
Présentation de la plate-forme d'éco-conception CORINE
PPTX
Usages avancés - Chrome
DOCX
Nouveau microsoft word document
ODP
Minéraux
PPTX
Removal of chromium
PPTX
10 major industrial applications of sulfuric acid
PDF
Metabolisme des lipides
PDF
Chromium problems
PPT
Aluminum Anodizing
PPT
TRANSITION METALS
PPTX
Alliages dentaire
PDF
Methods for removal of chromium
Les vaccinations rappel calendrier vaccinal 2008
40 cfr 261.4(b)(6) The RCRA Exclusion From Hazardous Waste for Trivalent Chro...
A SHORT REVIEW ON ALUMINIUM ANODIZING: AN ECO-FRIENDLY METAL FINISHING PROCESS
Brochure Meca-19102016-bd
Protection des métaux contre la corrosion
TALAT Lecture 5203: Anodizing of Aluminium
TripleHard - Trivalent Based Hard Chrome - Case Tecnocrom
Zinc and zinc nickel plating
Présentation de la plate-forme d'éco-conception CORINE
Usages avancés - Chrome
Nouveau microsoft word document
Minéraux
Removal of chromium
10 major industrial applications of sulfuric acid
Metabolisme des lipides
Chromium problems
Aluminum Anodizing
TRANSITION METALS
Alliages dentaire
Methods for removal of chromium
Publicité

Similaire à Développez des applications natives en HTML/JS avec Chrome apps (20)

PDF
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
PDF
L'Open Web en tant que pierre angulaire du développement multi-objets
PPTX
Développement mobile cross-plateform
PDF
Firefox OS, le web de demain - Epita - 2014-06-06
PDF
Fxos
PDF
Développement web mobile avec IONIC 2
PPTX
Panorama des solutions mobile hybrides
PPTX
L'histoire d'HTML5 pour les développeurs Windows Phone 8
PDF
Apache Cordova 3.3 de zéro
PDF
Cours cordova & REST
PPTX
Phonegap
PPTX
L'histoire d'html5 pour les développeurs windows phone 8
PDF
Strategies et developpements mobiles multi-plates-formes.
PDF
Formation mobile-cross-platform
PDF
Internet mobile : conception de sites et d'applications
PDF
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
PDF
Ch1. Développement mobile
ODP
PPTX
Les Systèmes d'exploitation mobile
PDF
1semobile-160926100031xcwcwxcwcwsdqcqs.pdf
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
L'Open Web en tant que pierre angulaire du développement multi-objets
Développement mobile cross-plateform
Firefox OS, le web de demain - Epita - 2014-06-06
Fxos
Développement web mobile avec IONIC 2
Panorama des solutions mobile hybrides
L'histoire d'HTML5 pour les développeurs Windows Phone 8
Apache Cordova 3.3 de zéro
Cours cordova & REST
Phonegap
L'histoire d'html5 pour les développeurs windows phone 8
Strategies et developpements mobiles multi-plates-formes.
Formation mobile-cross-platform
Internet mobile : conception de sites et d'applications
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Ch1. Développement mobile
Les Systèmes d'exploitation mobile
1semobile-160926100031xcwcwxcwcwsdqcqs.pdf

Développez des applications natives en HTML/JS avec Chrome apps

Notes de l'éditeur

  • #6: Si le device peut exécuter Chrome, alors il peut exécuter les Applications Chrome également
  • #7: Pour les différentes versions par OS : http://www.chromium.org/getting-involved/dev-channel Différence entre Chromium et Chrome : tout l’aspect légal : codecs vidéo et audio ne sont pas dispo sur Chromium. Chrome dispose de la surcouche Google : rapport de crash et d’utilisatoin, update auto, pdf viewer, etc. Autre point : Chromium est public : les sources sont dispo sous licences BSD. Chrome est privé (ces sources ne sont pas disponibles). Pour connaitre les API implémentées et les versions en cours : https://www.chromestatus.com/features. Par exemple en ce moment : 41, 40, 39, 38
  • #8: *non standardisées ou en cours de standardisation.
  • #11: A savoir qu’il faudra également prévoir des images complémentaires pour la mise à dispo sur le store (notamment des screenshots)
  • #12: La liste complète des permissions est disponible ici : https://developer.chrome.com/apps/declare_permissions
  • #14: Le format CRX est un format ouvert : on peut même carrément créer son propre script dans le langage de son choix pour le créer.
  • #17: Par exemple, Web Speech API et getUserMedia sont en cours de standardisation mais pas implémentées par tous les navigateurs. Typiquement, le webspeech API est dispo sur Chrome, mais pas sur Firefox. utiliser caniuse.com pour savoir si on peut utiliser une API ou pas selon le navigateur. Certaines API ne sont pas encore spécifiées et sont encore à l'état de bouillon (DRAFT), mais sont déjà implémentées dans Chrome. Par exemple : http://w3c.github.io/web-animations/ Comment savoir si une fonctionnalité est implémnetées ? On peut regarder sur le site de Mozilla pour connaitre l'implémentation de certaines Web API. https://developer.mozilla.org/en-US/docs/Web/API/ Sinon, plus spécifiquement à Chrome :  https://www.chromestatus.com/features
  • #25: Inspiré de http://arduino.cc/en/Tutorial/Blink
  • #27: Plus d’info sur https://developer.chrome.com/apps/contentSecurityPolicy
  • #29: AngularJS uses Function(string) generated functions as a speed optimization. Applying the ngCsp directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will be raised. CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically includes some CSS rules (e.g. ngCloak). To make those directives work in CSP mode, include the angular-csp.css manually. Plus d’info : https://docs.angularjs.org/api/ng/directive/ngCsp
  • #38: Disponible ici : https://chrome.google.com/webstore/category/collection/for_your_desktop
  • #39: Disponible ici : https://chrome.google.com/webstore/category/collection/for_your_desktop
  • #41: Crosswalk embed une webview Chromium. Permet d’exécuter des appli chrome sur des device qui n’avais pas encore Chrome. Jusquà Android ICS.
  • #42: Crosswalk embed une webview Chromium. Permet d’exécuter des appli chrome sur des device qui n’avais pas encore Chrome. Jusquà Android ICS.
  • #43: tap-delay. Sur les browser-mobiles, il y’a toujours un délai de 300ms entre l’appui et le moment ou le « click » est considéré. UX dégradée ! L’histoire du tap-delay est expliquée ici : http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
  • #44:  Les alarmes ne se déclenchent que si l’application est au premier plan  Les méthodes JS (chrome.i18n) sont fonctionnelles mais pas les instructions CSS.  Qualité Bêta  Local storage only. Le sync storage fonctionne en mode dégradé (comme storage.local)  Qualité Alpha A surveiller sur : https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/docs/APIStatus.md
  • #45: Crosswalk embed une webview Chromium. Permet d’exécuter des appli chrome sur des device qui n’avais pas encore Chrome. Jusquà Android ICS.
  • #46: Par exemple, le Manifest Android (Manifest.xml nécessaire à la constitution de l’APK) : le champ android:versionName est déduit de la version de l’application renseignée dans le manifest.json et le champ android:versionCode est déduit du fichier manifest.mobile.json
  • #47: Crosswalk embed une webview Chromium. Permet d’exécuter des appli chrome sur des device qui n’avais pas encore Chrome. Jusquà Android ICS.
  • #49: Ephemeral Apps : applications « One-time ». Processus d’installation/désinstallation simplifié. App_shell : mode d’exécution sans tirer tout le runtime Chrome. 2 use cases : les applications Kiosks, les exécutions sur environnements à ressources limitées.