Développement d'applications pour Android M. Dalmau – IUT de Bayonne – Pays Bas

Développement d'applications pour Android M. Dalmau – IUT de Bayonne – Pays Basque Positionnement d’Android L’iPhone (Apple) Nokia (Symbian OS) Window Mobile (Microsoft) BlackBerry Palm (WebOS) Google (Android) Architecture d’Android Architecture d’Android Un noyau linux 2.6 • Gestion de le mémoire • Gestion des processus • Gestion du matériel (écran clavier …) • Gestion des capteurs (appareil photo, GPS, accéléromètre …) • … Architecture d’Android Des bibliothèques (C et C++) • Graphisme • Médias • Web • … Architecture d’Android Une machine virtuelle java • Dalvik (une JVM par application) • Code spécifique Android Architecture d’Android Des gestionnaires pour les applications + une API en java • Gestion des fenêtres, des activités, des ressources … • API pour développement des programmes Architecture d’Android Les applications (Activités) Développement d’applications pour Android Production de logiciel Code source java .java Bytecode .class Binaire Dalvik .dex Machine virtuelle Dalvik IDE Eclipse ou Netbeans + plugins SDK Android + outils Environnement de développement Environnement d'exécution Chaîne de compilation Application .apk Ressources Terminal API Android Constitution de l'application AndroidManifest Téléchargement Développer pour Android • Les interfaces et les constantes sont définies dans des fichiers XML – Facilite la modification – Statique • Les ressources sont téléchargées avec l’application • Les fonctionnalités sont dans le code – Lien avec ce qui est défini en XML – Accès aux ressources • L’API n’est pas totalement celle de java (classes redéfinies (par exemple Color), interfaces, écouteurs …) • La syntaxe des fichiers XML est extensible ⇒difficile de savoir ce qui est prédéfini • Les propriétés définies en XML peuvent être contradictoires • L’interface ne peut être utilisée que par l’activité qui l’a créée • Difficile de développer sans un environnement adéquat (Eclipse ou Netbeans) en raison des fichiers générés • La pré-visualisation des interfaces par Eclipse n’est pas toujours conforme (ascenseurs, contenu défini dans le code …) Le SDK Android • Téléchargeable sur : developper.android.com/sdk sous la forme d’un zip ou d’un fichier d’installation • Propose le SDKManager qui permet de télécharger les plateformes et outils : – Android versions xx – Google API versions xx – Outils (tools et platform-tools) – … Quelques outils du SDK Android Accessibles à partir d’une ligne de commande (fenêtre DOS) • adb permet la connexion au terminal (smartphone ou simulateur) pour : – Transférer des fichiers (push / pull) – Travailler en ligne de commande unix (shell) – Installer une application (install) – Paramétrer le réseau (forward) – Déboguer une application (logcat) • dx transforme le bytecode java en code Dalvik • apkbuilder constitue un fichier .apk téléchargeable sur le terminal Remarque : Eclipse utilise ces outils directement mais on est parfois obligé d’y recourir (transfert de fichiers, installations directes d’applications …) Eclipse • Téléchargeable sur www.eclipse.org • Ne nécessite pas d’installation (simple copie) • Le plugin pour Android est téléchargé et installé depuis Eclipse (Menu Help →Install New Software) sur https://dl-ssl.google.com/android/eclipse • Il suffit ensuite d’indiquer à Eclipse où se trouve le SDK Android (Menu Windows →Preferences →Android) Développer avec Eclipse Espace de travail Remarque : les paramétrages d’Eclipse sont liés à l’espace de travail ⇒nouvel espace nouveaux paramètres Développer avec Eclipse Projet Android (Menu File →New → Android Project) Nom SDK Paquetage (au moins 2 niveaux) Développer avec Eclipse Explorateur Zone d’édition Etats (erreurs, exécution …) Vues •Hiérarchie •Déclarations • … Créer un terminal virtuel (simulateur) (Menu Windows →Android SDK and AVD Manager) Créer un terminal virtuel (simulateur) Paramétrage: Nom SDK Taille carte SD Format d’écran Matériel Terminal virtuel ou smartphone Terminaux connectés Terminaux disponibles Le terminal virtuel Contrôle du terminal (DDMS) Traces et erreurs d’exécution Etats (mémoire, fichiers …) Processus Structure d’un projet Eclipse • src contient les fichiers source • gen contient les fichiers générés par Eclipse • res contient les ressources (images, descriptions d’interfaces, valeurs) – Organisé en sous dossiers par types • AndroidManifest décrit les propriétés de l’application . . . Le fichier AndroidManifest • Généré par Eclipse, contient la description de l’application <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="iut.tp1" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".DemoCoursActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> • On modifiera ce fichier pour déclarer les éléments de l’application, les permissions, etc. Le Fichier AndroidManifest Modifiable directement ou par des formulaires Rubriques du fichier AndroidManifest • Manifest – Nom du paquetage – Versions – SDK • Application – Nom – Icône – Eléments constituant l’application (activités, services, …) • Permissions – Accès aux capteurs – Accès au réseau – Accès à la téléphonie – … • Instrumentation (pour les tests) Les ressources Les ressources • Application embarquée ⇒tout doit être dans le fichier .apk téléchargé • Le répertoire res contient toutes les ressources qui seront mises dans le apk : • drawable-hdpi (images en haute définition) • drawable-ldpi (images en basse définition) • drawable-mdpi (images en moyenne définition) • layout (description en XML des interfaces) • values (définitions en XML de constantes : chaînes, tableaux, valeurs numériques …) • anim (description en XML d’animations) • menus (description en XML de menus pour l’application) • xml (fichiers XML utilisés directement par l’application) • raw (tous les autres types de ressources : sons, vidéos, …) On peut ajouter d’autres sous répertoires Créer des ressources valeurs • Les ressources de type valeur sont décrites dans des fichiers XML ayant la forme suivante : <?xml version="1.0 “ encoding= “utf-8 “?> <resources> <color name= "coulfond“>#AA7B03</color> <integer name= “limite”>567</integer> <integer-array name= “codes_postaux“> <item>64100</item> <item>33000</item> </integer-array> <string name= “mon_titre”>Un titre</string> <string-array name= “planetes“> <item>Mercure</item> <item>Venus</item> </string-array> <bool name=“actif“>true</bool> <dimen name “taille“>55px</dimen> </resources> Les noms (identificateurs) servent a les désigner : • Dans d’autres fichiers XML • Dans le code Type Nom Valeur La classe R • C’est une classe générée par Eclipse qui permet à l’application d’accéder aux ressources • Elle contient des classes internes dont les noms correspondent aux types de ressources (id, drawable, layout …) • Elle est constituée à partir des fichiers placés dans les sous répertoires du répertoire res • Une propriété est créée pour : – Chaque image placé dans drawable-xxxx – Chaque identificateur défini dans des fichiers XML (objets d’interface, constantes) – Chaque fichier placé dans les répertoires xml , raw … Utilisation des ressources • Référencement d’une ressource dans un fichier xml. La forme générale est : "@type/identificateur" Par exemple : @string/machaine Fait référence à une chaine contenue dans un fichier XML placé dans le répertoire res/values et définie comme suit : <resources> … <string name="machaine">Contenu de cette chaine</string> … </resources> • Référencement d’une ressource dans le code. La forme générale est : R.type.identificateur Par exemple : R.string.machaine Fait référence à la même chaine La classe Resources • Permet l’accès aux ressources répertoriées dans R • On obtient une instance de cette classe par getResources() de l’activité • Principales méthodes de la classe Resources (le paramètre est un identifiant défini dans R de la forme R.type.nom) : – boolean getBoolean(int) – int getInteger(int) – int[] getArray(int) – String getString(int) – String[] getStringArray(int) – int getColor(int) – float getDimension(int) – Drawable getDrawable(int) • Exemple : String titre = getResources().getString(R.string.ma_chaine); Utilisation des ressources Accès aux ressources dans l’application – Mise en place de l’interface principale setContentView(R.layout.nom_du_fichier_xml); – Mise en place d’interfaces supplémentaires Par les classes LayoutInflater ou MenuInflater – Accès direct à une valeur ou à une ressource : String titre = getResources().getString(R.string.texte_titre); Drawable monImage = getResources().getDrawable(R.drawable.nom_de_l_image) Uri (Uniform Resource Identifiers) Désigne des ressources locales ou distantes (plus général que les URL car non lié à un protocole réseau) • Création – Ressource locale Uri.parse("android.resource://nom_du_paquetage_de_l_activité/" + R.chemin.mon_son); – Ressource distante Uri.parse("http://domaine.sous_doamine/chemin/nom_du_fichier"); Uri.fromFile(File) • Codage en chaîne de caractères toString() Les applications Structure d’une application • Activité (android.app.Activity) Programme qui gère une interface graphique • Service (android.app.Service) Programme qui fonctionne en tâche de fond sans interface • Fournisseur de contenu (android.content.ContentProvider) Partage d’informations entre applications • Ecouteur d’intention diffusées (android.content.BroadcastReceiver) : Permet à une application de récupérer des informations générales (réception d’un SMS, batterie faible, …) Eléments d’interaction – Intention (android.content.Intent) : permet à une application d’indiquer ce qu’elle sait faire ou de chercher un savoir-faire – Filtre d’intentions (<intent-filter> : permet de choisir la meilleure application pour assurer un savoir-faire Déclaration des éléments dans AndroidManifest.xml • Activité <activity> <intent-filter> …les savoir-faire </intent-filter> </activity> • Service <service> <intent-filter> … les savoir-faire </intent-filter> </service> • Ecouteur d’intention diffusée <receiver> <intent-filter> … les savoir-faire </intent-filter> </receiver> • Fournisseur de contenu <provider> <grant-uri-permission …/> <path-permission …/> </provider> Application Android • Une activité = un programme + une interface • Un service = un programme sans interface • Une application = – Une activité principale – Eventuellement une ou plusieurs activités secondaires – Eventuellement un ou plusieurs services – Eventuellement un ou plusieurs écouteurs d’intentions diffusées – Eventuellement un ou plusieurs fournisseurs de contenu Contenu du fichier AndroidManifest <?xml version="1.0" encoding="utf-8"?> <manifest> <uses-sdk /> <uses-permission /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> </activity> <service> <intent-filter> . . . </intent-filter> </service> <receiver> <intent-filter> . . . </intent-filter> </receiver> <provider> <grant-uri- permission /> </provider> <uses-library /> </application> </manifest> uploads/Management/ cours-android.pdf

  • 19
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Aoû 10, 2022
  • Catégorie Management
  • Langue French
  • Taille du fichier 3.9533MB