Post on 28-Nov-2014
description
transcript
Introduction à l’environnement bada
10/10/2011
Ecosystème
Les produits bada
Des smartphones premium pour utilisateurs intensifs
Famille WVGA
Ecran WVGA
UI 32 bits & transparences
OpenGL ES 1.1 + 2.0
Multiples capteurs
Connectivité complète
Multitouch 6 points
HTTP Live Streaming
Des smarpthones accessibles pour démocratiser les usages
Famille HVGA
Ecran HVGA
UI 32 bits & transparences
OpenGL ES 1.1 + 2.0
Pas de boussole ni tilt
Connectivité complète
Multitouch 5 points
HTTP Live Streaming
Des smartphones entrée de gamme pour tous
Famille WQVGA
Ecran WQVGA
UI 16 bits sans transparence
Pas d’OpenGL
Capteurs optionnels
Connectivité complète
Multitouch 2 points
Pas de Live Streaming
Les sites Web
Le site de référence pour le développeur d’application
developer.bada.com
Téléchargement du SDK
Génération des manifestes
Tutoriels et exemples
Forum de support
Premium Support Service
Documentation en ligne
Spécifications des mobiles
L’interface de gestion des applications commercialisées
seller.samsungapps.com
Guidelines éditeur
Soumission des applications
Marketing des applications
Rapports financiers
Questions utilisateurs
Rapport de test
Support éditeur
Le flux d’information live concernant l’univers bada
@samsungbada sur Twitter
News développeurs
Alertes sur les nouveaux articles ou outils disponibles sur developer.bada.com
Au choix : - Utilisation du même compte - Utilisation de comptes développeur / éditeur différents
Outils de développement
Le SDK bada
Un outil visuel pour créer votre interface graphique
UI Builder
Création graphique des Forms
Placements des contrôles
Actions (Events) supportées
Insertion du code des Events
Génération du XML
Choix des visuels
Plusieurs résolutions gérées
Testez vos développements directement sur votre ordinateur
Emulateur
Support des trois familles
Emulation des boutons
Event injector : - Appels, messages, réseau - Localisation (GPS) - Capteurs (Proximity, Tilt …) - Système (batterie, casque …) - NFC
Un outil de monitoring pour optimiser votre application
Perf. Analyzer + Profiler
Sur émulateur ou terminal
Consommation mémoire
Utilisation base de données
Différentes vues disponibles
Alertes : fuites de mémoire …
Système de fichiers
Temps passé par méthode
Basé sur Eclipse, l’IDE permet de réaliser toutes les tâches liées au développement : codage, UI, compilation, test sur émulateur ou sur un terminal, debugging et optimisation …
Trois bases possibles pour votre application
Utilisez très simplement toutes les APIs natives de bada
Développement C++
Accès à toutes les APIs
UI builder WYSIWYG & C++
Grand choix de composants UI
Capitalisez sur votre expérience des applications Web
Développement Web
HTML5, CSS, composants UI
JavaScript + approche Objets
Services du terminal accessibles via APIs WAC
Intégrez vos créations Flash dans une application bada
Développement Flash
Contenu Flash + ActionScript
Interaction avec le système via APIs dédiées
Trois types de développements différents pour que chaque développeur puisse tirer parti de son expérience passée. Des APIs toujours disponibles pour pouvoir utiliser les fonctions et les capteurs du mobile.
Process de développement
Aperçu du process de développement
Création du manifeste
Déclaration des privilèges
Pré-requis HW
Terminaux cibles
Développement
Option 1 : C++
Option 2 : Flash
Option 3 : Web
Test
Sur l’émulateur ou via le RTL
Sur des terminaux
Profiling / Resource monitor
Soumission de l’application
Saisie des infos de publication
Choix des pays de diffusion
Choix du prix
Certification par Samsung
Sur tous les terminaux cibles
Dans tous les pays cibles
Rapport de test détaillé
Application commerciale
Suivi des statistiques
Promotions, bannières
Questions des utilisateurs
Mis
e à
jou
r
dev
elo
per
.bad
a.co
m
dev
elo
per
.bad
a.co
m
dev
elo
per
.bad
a.co
m
selle
r.sa
msu
nga
pp
s.co
m
selle
r.sa
msu
nga
pp
s.co
m
selle
r.sa
msu
nga
pp
s.co
m
Création du manifeste
Création du manifeste
Déclaration des privilèges
Pré-requis HW
Terminaux cibles dev
elo
per
.bad
a.co
m Choix du numéro de version
Choix de la version d’API cible
Sélection des groupes de privilèges Sélection des terminaux cibles
Les différentes versions d’OS sont rétro-compatibles !
Certaines APIs requièrent des privilèges Certains privilèges sont réservés aux développeurs de statut Partner. On peut ajouter ou enlever des privilèges à tout moment, il suffit de régénérer un manifeste.
Nécessaire pour bada 1.x, géré automatiquement pour bada 2.0
Téléchargement du fichier XML
A intégrer au projet dans l’IDE Interdiction formelle de modifier le fichier manuellement, tout changement doit être effectué sur developer.bada.com
Choix du type de développement
Développement
Option 1 : C++
Option 2 : Flash
Option 3 : Web
Développement d
evel
op
er.b
ada.
com
Création du projet dans l’IDE
Intégration du manifeste
Développement
Support
C++, Web ou Flash au choix Possibilité de remplacer le manifeste, pour intégrer des privilèges différents par exemple
Documentation complète dans le SDK Multiples applications de démonstration Ressources en ligne sur developer.bada.com :
Exemples de code Tutoriels vidéo
Premium Support Service
Test
Sur l’émulateur ou via le RTL
Sur des terminaux
Profiling / Resource monitor
Test d
evel
op
er.b
ada.
com
Compilation
Préparation du terminal
Run as > Target
Installation à distance
L’application est installée et exécutée Les traces sont affichées dans la console Les outils de profiling sont utilisables
Installation du Test Kit depuis Samsung Apps Configuration du Test Kit sur developer.bada.com Packaging et upload du binaire de test Déploiement OTA sur les terminaux autorisés
Recette facilitée
Version logicielle adaptée Installation du certificat de test Configuration du port USB et connexion
Run as > Emulator
Test immédiat sur émulateur Event Injector pour simuler tous les événements systèmes : appels, position gps, accéléromètre …
Soumission de l’application
Saisie des infos de publication
Choix des pays de diffusion
Choix du prix
Soumission de l’application
Packaging
Connexion au Seller Office
Edit Application
Add New Application Possibilité de modifier la fiche existante Upload d’un nouveau package
Mise à jour du manifeste Même AppID Numéro de version supérieur
Création de la fiche Samsung Apps incluant : Titre de l’application Catégorie Restriction d’âge éventuelle Prix Description + Tags Icône (identique à celle du menu) Captures d’écran Vidéo de présentation (optionnel) Période de vente Pays cibles Terminaux cibles
Avec le compte développeur ou éditeur selle
r.sa
msu
nga
pp
s.co
m
Depuis l’IDE, en configuration Target-Release
Résultat de la certification
De 7 à 10 jours ouvrés Application mise en ligne si certification OK Mise à jour nécessaire si certification refusée Guidelines disponibles via le Seller Office
Vérification du contenu sans test technique Guidelines disponibles via le Seller Office
Pas de jeux d’argent Catégorie d’âge correcte Disclaimers (Push, Localisation…) Copyright de marques Facturation via Samsung Apps uniquement Etc
Certification par Samsung
Sur tous les terminaux cibles
Dans tous les pays cibles
Rapport de test détaillé
Certification par Samsung
Soumission de l’application
Certification du contenu
Rapport de test
Vérification du fonctionnement
De 7 à 10 jours ouvrés Dans tous les cas un rapport est édité Deux types de retours :
Defects : à corriger impérativement Recommandations : avertissements
Dans tous les pays cibles Sur tous les terminaux cibles Disponibilité des contenus en ligne (compte ?) Gestion des interruptions Respect du cycle de vie
selle
r.sam
sun
gap
ps.
com
Application commerciale
Suivi des statistiques
Promotions, bannières
Questions des utilisateurs
selle
r.sam
sun
gap
ps.
com
Elles pourront être utilisées par Samsung pour promouvoir l’application :
Dans Samsung Apps sur les mobiles Dans Samsung Apps sur le web Dans Samsung Apps sur Kies
Application commerciale
Application mise en ligne
Upload de bannières
Mises en avant exceptionnelles
Promotions
Intégration de l’application dans les listes des apps recommandées (première page de Samsung Apps) A négocier au cas par cas avec Samsung France
Possibilité de changer temporairement le prix d’une application L’ancien prix apparait barré pour montrer le caractère exceptionnel de la promotion
Nombre de téléchargements Bilan financier
Consultation des statistiques
Cycle de vie d’une application dans le mobile
Les étapes du cycle de vie d’une application
Lancement
OnAppInitializing()
OnForeground()
Utilisation
OnAppTerminating()
Arrêt
OnBackground()
Splash Screen
Disparition du Splash Screen
- Appui sur la touche END
Retour au premier plan
- Appui sur la touche HOME (*) - Affichage d’un pop-up système - Autre application au premier plan
Manque de ressources système
Fonctionnement
Initialisation
Libération des ressources
(*) Sous bada 2.0, les applications qui ne sont pas déclarées ‘multitâche’ sont automatiquement arrêtées quand une autre application bada est lancée.
La méthode qui prépare une application à passer en arrière plan
OnBackground()
Destruction de la UI
Arrêt des connectivités
Arrêt des traitements
Gestion des ressources
La méthode principale pour mettre en route votre application
OnAppInitializing()
Allocation de la mémoire
Création du Frame de base
Chargement du registre
La méthode qui remet en route une application mise en arrière plan
OnForeground()
Restauration de la UI
Relance des connectivités
Relance des traitements
Charge au développeur de déterminer quels traitements doivent être arrêtés ou maintenus quand l’application passe en arrière plan.
La méthode en charge de l’arrêt de l’application
OnAppTerminating()
Destruction de la UI
Libération des ressources
Sauvegarde dans le registre
Les éléments graphiques (Frame, Form et tous les objets associés) sont détruits avant l’appel de cette méthode, le développeur n’a pas à s’en soucier.
Allocation
Libération
Système de fichiers
Système de fichiers
/Home
/Home/Share
/Home/Share2
/Media
/Share2/<AppID>
/Res
/HomeExt
/HomeExt/Share
/HomeExt/Share2
/ShareExt/<AppID>
/Share2Ext/<AppID>
Ap
plic
atio
n
Répertoire racine de l’application (RW)
Répertoire partagé avec d’autre apps (RW)
Répertoire partagé avec les apps de confiance (RW)
Répertoire de l’application sur carte externe (RW)
Répertoire partagé sur carte externe avec d’autre apps (RW)
Répertoire partagé sur carte externe avec les apps de confiance (RW)
Répertoire des ressources graphiques du package (RO)
Term
inal
/Share/<AppID>
Répertoire des fichiers multimédia (RW)
Répertoire partagé d’une autre application (RO)
Répertoire partagé d’une application de confiance (RW)
Répertoire partagé sur carte externe d’une autre application (RO)
Répertoire partagé sur carte externe d’une app de confiance (RW)
/StorageCard/Media Répertoire des fichiers multimédia sur carte externe(RW)
/Clipboard Contenu du presse papier pour les copier/coller de fichiers (RO)
Les APIs et leur documentation
La documentation
Namespace
Des Namespaces par thème pour plus de clarté
Introduit dans la version d’API
Pour utiliser des APIs adaptées aux terminaux cibles
Niveau et groupe de privilèges
Permet de savoir : Si une déclaration dans le manifeste est requise Quel groupe de privilèges doit être coché
Description de l’API
Tout ce qu’il faut savoir pour l’implémenter
Les privilèges
Des fonctions réservées aux développeurs partenaires
System
Quelques APIs puissantes
Autorisation de Samsung requise avant déclaration dans le manifeste
Des APIs puissantes nécessitant des privilèges particuliers
Normal
Connectivité, Capteurs, FS …
Ouvert à tous, sous réserve de déclaration dans le manifeste
Des APIs courantes utilisables sans condition
Non-privileged
La majorité des API
Pas de déclaration dans le manifeste requise
La documentation précise le niveau de privilège et, le cas échéant, le groupe de privilèges requis pour chaque API.
Le SDK propose un outil pour vérifier que le manifeste inclus les privilèges requis pour autoriser les APIs utilisées dans le code. Il faut éviter d’inclure des privilèges inutiles dans le manifeste pour simplifier la certification ultérieure de l’application.
Trois concepts importants
Le mécanisme des Exceptions n’est pas supporté par bada
Pas d’Exceptions
Aucun support des Exceptions
A la place : Renvoi d’un Result Utilisation de SetLastResult() et GetLastResult()
Les objets doivent se construire en deux phases pour éviter les fuites
Construction en deux phases
Le constructeur n’alloue rien
Allocation déportée dans la méthode Construct()
Son Result indique la résultat de la construction
Tout objet n’a qu’un propriétaire qui doit libérer les ressouces
Appartenance des objets
Un propriétaire par objet
Transmission de propriété
Méthodes en xN : L’appelant est propriétaire du résultat et doit donc le détruire en temps voulu
Quelques Namespaces remarquables
Ads
Regroupe les APIs permettant d’utiliser le service de publicité intégré au SDK bada
Osp::Ads d
evel
op
er.b
ada.
com
Intégration du service dans le code
Configuration du service
Utilisation des APIs pour récupérer des publicités Possibilité de déclencher l’ouverture d’une page web, l’appel d’un numéro ou l’ouverture de Samsung Apps en cliquant sur la bannière
Paramétrage des publicités sur developer.bada.com > Home
> My Applications > Application Manager Setup Component
Gestion du compte (reports, etc)
Osp::App
Tout pour contrôler son application et la faire interagir avec le terminal et les autres applications
Osp::App d
evel
op
er.b
ada.
com
AppResource
System Events
Récupérer automatiquement les chaines de caractères en fonction de la langue du mobile Récupérer automatiquement les bonnes ressources graphiques en fonction de la résolution de l’écran
Récupération des événements systèmes et matériel (batterie, réseau …) afin de pouvoir y répondre
AppRegistry
Un registre permettant de sauvegarder l’état de l’application et de le restaurer à l’exécution suivante
AppManager
Programmer l’exécution de l’application en fonction de l’heure ou d’événements système
AppControl
Pour exporter les services de l’application afin que les autres applications puissent en tirer parti Comparable aux Intents Android
Osp::Commerce
Samsung Apps gère la vente d’articles ou de services depuis votre application
Osp::Commerce d
evel
op
er.b
ada.
com
Intégration du service dans le code
Configuration du service
Récupération de la liste des articles en vente Gestion de la transaction Samsung Apps prend en charge la facturation
Définition des articles et de leur prix via le Seller Office Organisation des articles en groupe pour gérer aisément plusieurs applications Mode Test pour faciliter le développement
Osp::Location
Des outils de géolocalisation et de cartographie pour tous les usages
Osp::Locations d
evel
op
er.b
ada.
com
Location Provider
Location Service Provider
Outil de récupération d’une position GeoFencing Entièrement paramétrable : fréquence, moyen…
Récupération de cartes (Navteq) Geocoding Calcul d’itinéraires Service d’annuaire
Les services Navteq n’ont aucun caractère obligatoire On peut donc utiliser d’autres fournisseurs Les services Navteq sont régis par des
conditions d’utilisation définies sur le Seller Office
Map Control
Divers outils pour afficher des cartes, gérer différentes couches et placer des points d’intérêt
Osp::Media
De multiples outils pour le multimedia : Streaming, manipulation d’images, conversion audio, caméra …
Osp::Media d
evel
op
er.b
ada.
com
AudioIn & AudioOut
Lecture et enregistrement audio
AudioEncoder & AudioDecoder
Outils de conversion Raw <> Format compressé
VideoEncoder & VideoDecoder
Outils de conversion Raw <> Format compressé
Camera
Utilisation de l’appareil photo du terminal
AudioRecorder & VideoRecorder
Utilisation de la caméra et du micro du terminal
Player
Lecteur multimédia complet incluant le Streaming
Osp::Messaging
Pour utiliser les différentes messageries du téléphone, mais aussi le service de notifications Push
Osp::Messaging d
evel
op
er.b
ada.
com
SMS
Envoi / Réception de SMS depuis l’application
MMS
Envoi de MMS depuis l’application
Envoi de mails depuis l’application
PushManager
Réception de notifications Push sur le terminal Réception possible :
De messages De badges (incrément ou valeur absolue)
Osp::Base
Les outils clé pour gérer les types de données, les threads et autres outils de base du développeur
Et les incontournables … d
evel
op
er.b
ada.
com
Osp::Content
Tout pour gérer les contenus multimédia et leurs métadonnées dans la gallerie du mobile
Osp::Graphics
Les outils de base pour toutes les représentations graphiques y compris OpenGL d
evel
op
er.b
ada.
com
dev
elo
per
.bad
a.co
m
Osp::Io
Les outils classiques pour gérer les entrées / sorties vers des fichiers, le registre ou encore une base de données d
evel
op
er.b
ada.
com
Osp::Locales
Rendez votre application internationale en adaptant la langue ou les préférences locales (format de date, etc) d
evel
op
er.b
ada.
com
Osp::Net
Tirez parti des capacités de communication du mobile : HTTP, Sockets, Bluetooth, WiFi, WiFi Direct, NFC d
evel
op
er.b
ada.
com
Osp::Security
Divers outils de chiffrement et de protection basés sur l’utilisation de clés ou de nombres pseudo-aléatoires d
evel
op
er.b
ada.
com
Osp::Social
Des APIs permettant de se connecter simplement aux principaux réseaux sociaux
dev
elo
per
.bad
a.co
m
Osp::System
Toutes les ressources pour connaitre l’état du mobile, gérer au mieux la batterie et interagir avec ses accessoires
Et les incontournables … d
evel
op
er.b
ada.
com
Osp::Telephony
Des outils pour gérer les appels ou être notifié des changements liés au réseau
Osp::Text
Tout pour décoder ou convertir du texte encodé selon différentes tables de caractères
dev
elo
per
.bad
a.co
m
dev
elo
per
.bad
a.co
m
Osp::Ui
Comprend tous les outils pour utiliser les contrôles UI standards de la plateforme
dev
elo
per
.bad
a.co
m
Osp::Uix
Des interactions avancées : reconnaissance de visages, TTS/STT, accès direct capteurs, haptic feedback, météo d
evel
op
er.b
ada.
com
Osp::Web
Pour afficher des pages web dans l’application ou traiter les données JSON
dev
elo
per
.bad
a.co
m
Osp::Xml
Pour manipuler ou parcourir les fichiers XML ou HTML
dev
elo
per
.bad
a.co
m
Architecture de l’interface utilisateur
Architecture de l’interface utilisateur
Un Frame unique par application
Plusieurs Forms
Tous liés au Frame de base A tout instant un seul Form est visible
Plusieurs Controls par Form
Chaque Control est lié à un Form ou un Container Le positionnement doit se faire de façon relative pour s’adapter aux différentes résolutions
Des Listeners pour les événements
Différents Listeners permettent d’être alerté quand l’utilisateur manipule la UI
Les Listeners
Les Listeners
Des alertes asynchrones
Sous la forme d’Interfaces à implémenter Disponibles pour tous les objets renvoyant des résultats asynchrones : UI, capteurs, événements système, etc
Attention à ne pas exécuter de code lourd dans les Listeners afin de garder une interface réactive !
Création d’un Listener
Création d’un objet
Control UI, SensorManager, etc
Ajout du Listener à l’objet
Appel d’une méthode du Listener
Event
Un Listener comporte plusieurs méthodes Une méthode différente est appelée selon l’Event
Charge au développeur d’implémenter le comportement voulu pour chaque méthode