[PT4] Projet Développement d une application Android à l aide du SDK et du NDK et comparaison des deux kits Matthias Devlamynck Cyril Audibert S4p2C 2 avril 2013
Introduction Ce rapport présente le travail que nous avons réalisé sur le projet PT4 dans le cadre de notre formation à l IUT d Informatique de Bordeaux 1. Tout d abord le projet est présenté avec ses objectifs et le travail demandé, puis il présente le déroulement du projet, pour finir par les résultats obtenus.
Table des matières 1 Présentation du projet 2 1.1 SDK.......................................... 2 1.2 NDK.......................................... 2 1.3 L application : RSSoid................................ 2 1.3.1 Fonctionnalités................................ 2 1.4 Les outils utilisés................................... 3 2 Déroulement du projet 4 3 Résultats obtenus 5 3.1 L application..................................... 5 3.2 SDK vs NDK..................................... 5 3.3 Liens.......................................... 6 1
1. Présentation du projet Le projet présenté dans ce rapport consiste en un développement d une application au choix sous Android. Il s agit de découvrir cette plate-forme, d acquérir une première expérience dessus et plus particulièrement de découvrir les deux APIs disponibles pour le développement : le SDK et le NDK. En effet l objectif principal de ce projet est de se familiariser avec ces deux technologies pour au final pouvoir donner un retour d expérience et notre avis dessus. 1.1 SDK Il s agit du kit de développement de base sous Android. Il utilise le langage Java et permet d accéder aux fonctionnalités du système tel que l affichage d interface graphique, la gestion des entrées utilisateur, la sauvegarde de données dans une base SQL grâce à SQLite ainsi que la possibilité d intégrer l application au système en envoyant des informations dans la barre de notifications dans par exemple. 1.2 NDK Ce kit permet d utiliser du code natif, c est-à-dire compilé en langage machine et directement exécuté par le processeur, contrairement au code Java qui est interprété par une machine virtuelle. L objectif est de pouvoir profiter du gain de performance offert par un code natif tout en l intégrant avec du code Java issu du SDK. 1.3 L application : RSSoid L application que nous avons choisi de développer est un lecteur de flux RSS. Really Simple Syndication ou RSS est une technologie de diffusion d informations. Il s agit simplement d un fichier au format XML disponible sur le web et contenant des news, qui peut être lu par un logiciel appelé agrégateur. Notre application est donc un agrégateur de flux RSS. 1.3.1 Fonctionnalités Cette application devra être capable de : télécharger des flux à partir de leur adresse web, les stocker sur l appareil les mettre à jour, les supprimer, afficher la liste des news pour un flux donné, afficher une news données, pouvoir accéder au site ayant édité la news. 2
CHAPITRE 1. PRÉSENTATION DU PROJET 1.4 Les outils utilisés Lors de ce projet nous avons utilisé les langages Java pour la partie SDK et C/C++ pour la partie NDK. De plus nous avons développé ce projet en utilisant Eclipse et les plugins Android pour Eclipse ainsi que les outils des deux kits comme l émulateur de terminal Android. Ne possédant pas de smartphone ou de tablette sous Android, ce dernier nous a été très utile. Enfin nous avons utilisé SVN pour la gestion de versions, permettant plus facilement de travailler en équipe. Notre dépôt est hébergé sur le site Source Forge ou vous pouvez trouver les sources du projet, ainsi qu une archive.apk contenant l application directement installable sur un terminal Android. Le lien est à la fin du rapport. 3
2. Déroulement du projet Nous avions prévu de développer en parallèle l application avec les deux kits. L idée était donc de coder une fonctionnalité avec le SDK puis d implémenter la même fonctionnalité en NDK. De plus, nous avons décidé de répartir le travail de sorte que la même personne implémente la même fonctionnalité avec les deux kits pour pouvoir comparer de manière plus pertinente. Nous avons donc commencés à nous auto-former à ces technologies et nous nous sommes rendus compte que le SDK était assez difficile à prendre en main. Nous nous sommes aussi rendu compte que le NDK était d autant plus dur à utiliser que très peu de documentation, d informations et du tutoriels étaient disponibles sur internet. Nous avons du coup décidés de nous concentrer, dans un premier temps, sur le SDK. Nous avons commencés par définir les grandes lignes du projet ainsi que l architecture de l application pour pouvoir se répartir le travail. Matthias, s est occupé de l activité affichant la liste des flux disponibles et de celle permettant d ajouter un flux. Il a aussi implémenté la partie téléchargeant le flux et son stockage. Cyril à réalisé l affichage des nouvelles pour un flux et l affichage d une nouvelle. Il à aussi implémenté le parseur de fichiers XML et le stockage des informations extraites. 4
3. Résultats obtenus 3.1 L application Nous avons développés un lecteur de flux RSS fonctionnel avec le SDK. Il est capable de télécharger et de stocker différents flux, de les afficher et des renvoyer vers le site ayant édité les news. On peux ajouter un flux à partir de son adresse et le supprimer. De plus l application est traduite en français. Si le projet était poursuivi, on pourrait imaginer quelques fonctionnalités supplémentaires comme la mise à jour d un flux, l édition de l adresse d un flux ou l affichage du nombre de news non lues. 3.2 SDK vs NDK Le SDK est le kit principal de développement sous Android. Il est un peu difficile à prendre en main à cause de certains concepts comme les Intents mais il est aussi bien documenté et beaucoup d exemples sont facilement trouvable sur internet. Il se révèle donc facile à utiliser et puissant. Le NDK quant à lui repose sur la JNI qui permet de faire côtoyer du code Java avec du code C/C++. Cependant ces deux technologies sont plutôt mal documentées et sont du coup très difficiles à utiliser. De plus pour utiliser JNI il faut utiliser beaucoup de conversion de type. Il est au final à n utiliser que pour des cas bien spécifiques : pour des calculs nécessitant de meilleures performances que le Java peut offrir. pour du code ayant peu de liens avec la partie Java (à cause des conversions de type et de la difficulté de lancer des fonctions Java depuis le C/C++. pour du code permettant d utiliser des API bas niveau comme Open Gl. 5
Liens Lien du dépôt Source Forge : https://sourceforge.net/projects/rssoid/ 6