mercredi 21 novembre 2007

Optimiser les performances de son applications (UI)

Un petit commentaire sur la façon de gérer la mémoire de votre application concernant l'interface utilisateur.

Si vous avez x écrans, vous aurez tendance à créer autant de layout que d'écran (rappelons qu'un Layout est une vue, utilisée pour l'affichage sur votre application Android): 1 layout pour consulter des informations, 1 layout pour créer ou éditer une information...Vous passerez d'une vue à l'autre en utilisant la méthode setContentView(Layout d).

Cette méthode peut être utilisée mais "allégée" notamment pour la gestion de la mémoire. Pour simplifier les choses, vous pouvez utiliser qu'un seul layout dans lequel vous créer autant de vue (View ou autre Layout) en fonction du nombre de vue à afficher dans votre application. Et plutôt que d'appeler le setContentView, qui ne détruit pas les objets présent dans la vue précédente, vous n'appelez que la vue devant s'afficher à l'intérieur du layout.

Cette manière permet d'éviter de conserver en mémoire, tant que le garbage collector n'est pas encore passé, tous les objets présents dans les vues.

mardi 20 novembre 2007

Android Password Safe

Eh bien voilà la première application d'un développeur indépendant communiqué sur un forum...
L'application est un gestionnaire de mot de passe. L'application est protégée par un mot de passe à définir et utilise une encryption AES 128 bits.

L'auteur souhaite par la suite proposer différents types d'encodage...

Bravo à ce développeur.

http://steven.bitsetters.com/articles/2007/11/20/android-password-safe/

L'application est téléchargeable et elle est fournie avec les sources :) L'application utilise la licence Apache 2.0.

Une semaine après...

Une semaine après le lancement d'Androïd, le nombre de blogs, forums de discussion et site web consacrés à Androïd a carrément explosé sur Interne.

Le forum anglophone officiel de Google Android a vu son nombre de membre passé de 1500 samedi matin à plus de 4500 lundi!

Aussi, on apprend que Sun, qui détient le brevet de Java, commence à grincer des dents (Google serait-il victime de son succès). En effet, Google utilise sa propre VM mais Sun détenteur du brevet Java et de la VM souhaite analyser de plus prêt la machine virtuelle de Google afin de vérifier que DALVIK ne contient rien de la VM de Sun...Sans quoi, Sun attaquerait Google!

N'oubliez pas, si vous souhaitez partager vos connaissances sur Android, le forum francophone

Problème pour créer/utiliser votre DB?

Une petite astuce qui vous évitera de perdre du temps comme j'ai pu en perdre...

Dimanche, j'ai fait mon code pour créer une base de données sqlite en créant une table et en injectant quelques données. Super content :)
Lundi, je lance l'application: NullPointerException! et toute la journée il m'a été impossible de créer ma Db avec le même code et malgré des dizaines de manipulations! Le truc incompréhensible :(

Hier soir, j'ai suprimé le folder /data/data/com.google.android.TestDb, qui était censé contenir ma base de données. Bien que ce folder est été vide, je ne pouvais pas écrire de données à l'intérieur. Juste après, j'ai fait tourner mon code de création de base et là tout à fonctionner!

Je n'arrive pas trés bien à comprendre la raison, mais j'ai plusieurs hypothèses:
- un lock sur la base de données (mais quelle base puisque le répertoire était vide!)
- un lock sur le répertoire après une mauvaise fermeture de l'application ou de l'émulateur
- un changement de propriétaire (à la manière de Linux, le répertoire dispose d'un propriétaire et d'un groupe d'appartenance correspondant au numéro de l'application installée: ex. app6 si votre application correspond à la 6ème application installée sur l'appareil). Ainsi, en modifiant mon code ou une variante du code, et un redéploiement de l'application sur l'émulateur à modifier le propriétaire. Comme le nom de la classe et donc du folder était le même, mais que l'utilisateur ne correspondait il m'était impossible d'y écrire.

La suppression du répertoire se fait via l'utilitaire adb qui se trouve dans le répertoire tools du SDK.

Lancez votre émulateur
Lancez un fenêtre cmd (on supposera ici que nous sommes sous Windows!)
Placez vous dans le répertoire qui contient votre sdk android puis dans tools
Saisissez la la commande suivant adb shell
Vous vous retrouver alors devant une fenêtre, dont la ligne commande par # à la manière d'un shell standard Unix.
placez vous dans le répertoire /data/data grâce à la commande cd data/data

Tapez la commande ls afin de liste le contenu du répertoire et d'y repérer le package de votre application
Ensuite supprimer le répertoire des données de votre application par la commande
rm -r

Ceci ne supprimera que les données de votre application et non votre application qui se situe dans le répertoire /data/app

dimanche 18 novembre 2007

Prise en main du SDK

Bon depuis hier je me suis réellement mis à Androïd...

J'ai surtout travaillé sur les points suivants:
- prise en main du debugger (encore des soucis pour voir mes logs!)

- création et modification du GUI
+ Possibilité d'écrire l'IHM soit dans le code (un peu à la SWING) ou alors directement dans des fichiers XML (à la manière du HTML). Cela ressemble énormément à l'utilisation de DIV et d'objet DOM comme...en html
+ une librairie de composants déjà trés riche
+La prise en main n'est pas des plus simple notamment lorsque vous commencer à binder des noms de variables directement dans l'IHM afin d'afficher des données issues d'objet Java. Ressemble énormément au fonctionnement du XHTML/Bean

- gestion des données (fichiers ou base de données)
+ Google a mis en place un système sqlite dans Androïd...on pourrait alors se dire que la gestion des data via une db sera simple...La documentation étant trés pauvre, il m'a fallu un long moment pour créer une DB avec quelques tables et des datas...
+ Google fournit une couche supérieure à la DB (ContentProviderDataHelper)...Ceci est recommandé si votre base de données sera utilisées par de mulitples applications. Par contre, plonger dans le code est un peu complexe. Je pense qu'il est nécessaire de comprendre le fonctionnement de la base de données et de l'API initiale avant d'utiliser la couche supplémentaire, qui je pense, doit tout de même soulager la gestion des données avec l'IHM

Bon voilà où j'en suis avec mes petits développement découverte.

Pour information, les sites anglais et les forums de discussions de Google Androïd sont encore trés pauvres en information (je n'ai par exemple trouvé aucune aide sur les bases de données ou bien encore sur les performances d'accès entre sqlite3 et l'accès à un fichier de données XML par exemple).

Tutoriaux OpenGL Android

La puissance de la plateforme Androïd est plus qu'impressionnante! Il suffit d'aller voir les applications fournies par le SDK: affichage photo de grande qualité, objets 3D en mouvement...
Bref la puissance d'Androïd n'a pas fini de nous surprendre.

Aussi, un développeur met à disposition de nous tous une librairie OpenGL et également des tutoriaux (à télécharger) sur l'utilisation des librairies OpenGL d'Androïd.

Vous vous en doutez: ces tutoriaux sont en anglais (à traduire cela me demanderait réellement trop de temps, mais si vous êtes interessé pour la traduction n'hésitez pas à me contacter).

http://code.google.com/p/android-gl/

samedi 17 novembre 2007

Création du forum des développeurs francophones

Je viens de créer il y a quelques minutes un forum de discussion pour les développeurs et utilisateurs de la plateforme Androïd.
Si vous souhaitez apporter vos connaissances, aider, poser vos questions sur la plateforme ou sur un problème de développement, rejoingnez-nous à l'adresse suivante :

http://groups.google.fr/group/android-fr

Nouvelle release du SDK

Google vient de déploiyer une nouvelle version de son SDK destiné à fixer des bugs majeurs.
Le nouveau SDK estampillée M3-RC22a est disponible ici

D'après les dire de Google, il y a eu un véritable buzz au sein de la communauté des développeurs pour la nouvelle plateforme de Google. Les forums de discussions ont littéralement explosé :)
Google annonce cependant se faire une joie de répondre à l'ensemble des utilisateurs (enfin pour ceux qui lisent et écrivent en anglais!).

Enfin, un trés bon article toujours en anglais (Lire l'article) qui donne quelques informations trés interessantes et claires sur la plateforme Androïd: celle qui se trouvera sur votre téléphone mobile (prévu par HTC en 2008) et sur le fameux SDK, qui permet à tout développeur de créer ses propres applications pour son téléphone mobile Androïd.
Par exemple, on y apprend la configuration minimale nécessaire à faire tourner Androïd: il faut donc un processeur ARM R9 tournant à 200Mhz. Bien sûr ceci n'est que le minimum.


DALVIK VM: La VM d'Androïd

Google a construit une machine virtuelle Java pour faire fonctionner ces programmes. Cette JVM (Java Virtual Machine) est dénommée DALVIK VM (faisant référence à un une ville d'Island préférée d'un des ingénieurs de Google).

DALVIK est conçue pour fonctionner sur des systèmes embarqués demandant de peu de ressources.

Lors de la compilation d'un programme développée avec la plateforme Androïd, un fichier à l'extension .DEX sera généré (via le dx tool). C'est ce même fichier qui sera executé par la VM DALVIK sur le mobile de l'utilisateur.

Chaque application Androïd fonctionne avec sa propre instance de process. Il est donc possible d'arréter une des applications sans arrêter toute la plateforme Androïd!

Pour finir, DALVIK est basé sur le fonctionnement du kernel Linux notamment pour la gestion de la mémoire basse.

Ouverture du blog

Bonjour à tous,

Ayez! Je viens de créer le blog concerné aux applications destinées à la plateforme Androïd, développée par la société Google.
Le rumeur ont longtemps couru sur le web indiquant que Google allait sortir un appareil mobile permettant d'utiliser tous les services Google.

Google n'a pas sorti de téléphone mais une plateforme d'application. Cette plateforme peut accueillir des applications tierces développées avec le kit SDK fourni également par Google.

Basé sur le langage Java, Google a également fournit des plugins pour Eclipse permettant de développer, debugguer et tester vos propres applications.