Session 5: Android Build System



Documents pareils
Session 8: Android File System

Votre premier projet Android

Systèmes Embarqués Libres

Introduction à Eclipse

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Cours Langage C/C++ Programmation modulaire

Builds et tests Utilisation de CMake et de Dart

1.3 Gestion d'une application

Slony1 2.1 Londiste 3

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

TD/TP 1 Introduction au SDK d Android

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

sshgate Patrick Guiran Chef de projet support

Installation et prise en main

Linux embarqué: une alternative à Windows CE?

DOCKER MEETUP. Christophe Labouisse

Projet De Stijl Plate-forme pour robots mobiles

MI03 TP. Objectifs du TP 1ère séance. 2ème séance. Construction d'un système linux embarqué complet

Chapitre 1 Retour en arrière

2X ThinClientServer Guide d utilisation

Configuration d'un trunk SIP OpenIP sur un IPBX ShoreTel

Serveur Subversion Debian GNU/Linux

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Environnements et Outils de Développement Cours 1 Introduction

CONFIGURATION DE LA LIBRAIRIE WEBUTIL (10g) Oracle Forms 10g

Apprendre Java et C++ avec NetBeans

Dexia Guide d installation de NetWorker Server 25 juin Legato Systems, Inc.

Naissance d'un REPTAR

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Guide de démarrage ebox-3300-msjk Windows Embedded CE 6.0 R2

CREATION D UN WINPE 3.1

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

Préparation d un serveur Apache pour Zend Framework

TD 1 - Installation de système UNIX, partitionnement

TP1. Outils Java Eléments de correction

Serveur DNS et DHCP couplé à LDAP Debian GNU/Linux

Quelques éléments de compilation en C et makefiles

Module.NET 3 Les Assemblys.NET

Chapitre IX : Virtualisation

Générer du code à partir d une description de haut niveau

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Adobe Application Manager Enterprise Edition version 2.1

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

bbc Launch Pad Juillet 2011 Version 10.0

Android. Présentation d Android. Florent Garin

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Un serveur web léger et ouvert

Déployer des applications Perl

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Initiation à JAVA et à la programmation objet.

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Gestion de clusters de calcul avec Rocks

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Environnements de développement (intégrés)

Sophos Endpoint Security and Control Guide de configuration pour réseaux étendus. Enterprise Console, version 3.1 EM Library, version 1.

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

Universal Robots. Fiche Méthode : Installation du simulateur Polyscope

Mise en œuvre de Rembo Toolkit

WORKSHOP OBIEE 11g (version ) PRE-REQUIS:

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

Trixbox: Asterisk packagé. Unité Réseaux du CNRS

Construction de logiciel et packaging

Outils en ligne de commande

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

Procédure d installation d AMESim 4.3.0

La base de données XML exist. A. Belaïd

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Manuel de l utilisateur

Mise en oeuvre TSM 6.1

TP1 : Initiation à l algorithmique (1 séance)

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

Testez votre installation. Créer un répertoire vide

Programmation Mobile Android Master CCI

Atelier Progress Rollbase

I. Présentation du serveur Samba

Chapitre 2 : Abstraction et Virtualisation

Réaliser un inventaire Documentation utilisateur

FusionInventory. Guillaume Rousse Journées francophones de Perl 2011

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

Projet Semestre2-1SISR

Communication technique TC1552 Ed 01 Date: 22/11/2011

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

Tutoriel code::blocks

Le Client/Serveur avec Enterprise Miner version 4

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Les fondamentaux du développement d applications Java

WEB page builder and server for SCADA applications usable from a WEB navigator

Transcription:

Session 5: Android Build System LO52 - Automne 2014 Fabien BRISSET 2 mai 2014 fabien.brisset@utbm.fr www.utbm.fr

Droits de reproduction Copyright 2013-2014, Fabien Brisset, Copyright 2004-2014, Free Electrons (Maxime Ripard) License : Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/fr Document original : Android System Development Vous êtes libre de : Partager : reproduire, distribuer et communiquer l oeuvre Remixer : adapter l oeuvre D utiliser cette oeuvre à des fins commerciales Selon les conditions suivantes : Attribution : vous devez attribuer l oeuvre de la manière indiquée par l auteur de l oeuvre ou le titulaire des droits. Partage dans les mêmes conditions : si vous modifiez, transformez ou adaptez cette oeuvre, vous n avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci. N importe laquelle de ces conditions peut être levée si vous avez l autorisation du titulaire des droits. Votre utilisation équitable et autres droits ne sont en aucune manière affectés par ce qui a été cité ci-dessus. 2/39 www.utbm.fr

Sommaire 1 Présentation du système de production d Android 2 Première compilation 3 L ajout d un nouveau composant, produit 4 Questions? 3/39 www.utbm.fr

Sommaire 1 Présentation du système de production d Android 2 Première compilation 3 L ajout d un nouveau composant, produit 4 Questions? 4/39 www.utbm.fr

Build System Un build system permet : D aggréger un ensemble de composants logiciels dans une image fonctionnelle d un système De permettre la production de cette même image la plus aisée possible Le build system utilisé pour les composants est celui couramment utilisé pour le système complet Exemples : OpenEmbedded/Yocto Buildroot... 5/39 www.utbm.fr

Android Build System Android Build System : Utilise son propre build system indépendant basé sur GNU/Make Build system unique et harmonisé pour tous les composants et simple à utiliser Point négatif : Intégration d un composant nécessite la reécriture du (des) Makefile(s) pour être intégré dans Android 6/39 www.utbm.fr

Sommaire 1 Présentation du système de production d Android 2 Première compilation 3 L ajout d un nouveau composant, produit 4 Questions? 7/39 www.utbm.fr

Première compilation Android $ source build/envsetup.sh including device/moto/stingray/vendorsetup.sh including device/moto/wingray/vendorsetup.sh including device/samsung/crespo/vendorsetup.sh including device/samsung/crespo4g/vendorsetup.sh including device/samsung/maguro/vendorsetup.sh including device/samsung/toro/vendorsetup.sh including device/samsung/torospr/vendorsetup.sh including device/samsung/tuna/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash 8/39 www.utbm.fr

Première compilation Android (2) $ lunch You re building on Linux Lunch menu... pick a combo: 1. full-eng 2. full_x86-eng 3. vbox_x86-eng... 12. full_panda-userdebug Which would you like? [full-eng] 12 ============================================ 9/39 www.utbm.fr

Première compilation Android (3) ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.0.4 TARGET_PRODUCT=full_panda TARGET_BUILD_VARIANT=userdebug TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=XXXXXXX ============================================ $ make [-jx] 10/39 www.utbm.fr

Sortie de compilation Code généré par la production + images système sous répertoire out à la racine de l AOSP Deux répertoires dans out : host pour les outils de debug, les tests CTS, les binaires pour Android target qui contient : Les fichiers compilés L arborescence de l image système Les images système 11/39 www.utbm.fr

Nettoyer une production make clean = rm -rf out/ make clobber qui efface les fichiers générés make installclean : efface seulement les parties de code qui ont besoin d être recompilé lors d un changement de configuration 12/39 www.utbm.fr

Variables d environnement Script à sourcer avant toute production (à faire dans chaque Shell utilisé) build/envsetup.sh Il va faire 2 choses : Création et configuration de plusieurs variables d environnement Parcours et analyse des fichiers vendorsetup.sh (liste des cibles possibles) Quelques exemples de variables d environnement : ANDROID EABI TOOLCHAIN/ANDROID TOOLCHAIN : chemin vers la toolchain précompilée ANDROID BUILD PATHS : un équivalent de la variable PATH mais pour les outils Android utilisés pour la production JAVA HOME/ANDROID JAVA TOOLCHAIN/ANDROID PRE BUILD PATHS : chemin vers les outils Java OUT/ANDROID PRODUCT OUT : chemin vers les fichiers générés lors de la compilation 13/39 www.utbm.fr

Variables d environnement (2) vendorsetup.sh : définit la liste des cibles qui peuvent être produites Exemple : $ cat device/ti/panda/vendorsetup.sh #... # add_lunch_combo full_panda-userdebug 14/39 www.utbm.fr

Les commandes à connaître Commandes définies par le script : lunch : permet de définir la target à produire croot : permet de revenir à la racine des sources de l AOSP m : alias à make pour exécuter la compilation complète mm : produit les modules définis dans le répertoire courant mmm : idem à mm mais en spécifiant le répertoire cgrep : exécute un grep dans les fichiers C/C++ jgrep : exécute un grep dans les fichiers Java resgrep : exécute un grep dans les fichiers ressources godir : aller dans le répertoire où se trouve le fichier donné en argument 15/39 www.utbm.fr

Configuration du Build System Build System d Android est assez figé et peu customisable Certains paramètres comme les CFLAGS ou bien la sortie de la production peuvent être personnalisés Deux possibilités pour customiser : A travers la commande lunch et le nouveau type de plateforme ajouté Créer/modifier le fichier buildspec.mk en se basant sur build/buildspec.mk.default 16/39 www.utbm.fr

La commande lunch Ajoutée par l appel à build/envsetup.sh Permet de configurer le système de build : Soit en passant le nom de cible en paramètre Soit en choisissant une option dans la liste affichée Possible d ajouter une nouvelle config via add lunch combo Présent dans les fichiers vendorsetup.sh 17/39 www.utbm.fr

La commande lunch (2) Configure aussi des variables d environnement spécifiques : TARGET PRODUCT : produit à builder TARGET BUILD VARIANT : type de production parmi : user : production finale qui se retrouve sur le produit. Aucun symbole de debug ou assertion incluse userdebug : inclut le user + quelques symboles ou librairies supplémentaires pour le debug eng : inclut toutes les informations de debug possible TARGET SIMULATOR : indique si la production est un simulateur ou non TARGET BUILD TYPE : release ou debug 18/39 www.utbm.fr

Sommaire 1 Présentation du système de production d Android 2 Première compilation 3 L ajout d un nouveau composant, produit 4 Questions? 19/39 www.utbm.fr

Ajouter un nouveau composant On retrouve dans Android : Des librairies natives Des librairies tierces-parties compilées pour Android Des binaires Des applications Java Android Ces différents éléments ont une dénomination commune : composant Le mécanisme de Makefile spécifique d Android permet de définir ces composants et leurs types 20/39 www.utbm.fr

Ajouter un nouveau composant (2) Exemple de fichier.mk pour le composant tinyxml # C o p y r i g h t 2005 The Android Open Source P r o j e c t # # Android. mk f o r TinyXml. # # Add DTIXML USE STL to CFLAGS to use STL. # commonsources := \ t i n y x m l. cpp \ t i n y x m l p a r s e r. cpp \ t i n y x m l e r r o r. cpp \ t i n y s t r. cpp 21/39 www.utbm.fr

Ajouter un nouveau composant (3) # For t h e h o s t # ===================================================== LOCAL PATH:= $ ( c a l l my d i r ) i n c l u d e $ (CLEAR VARS) LOCAL SRC FILES:= \ $ ( commonsources ) LOCAL MODULE:= l i b t i n y x m l LOCAL CFLAGS+= $ (TOOL CFLAGS) LOCAL LDFLAGS:= $ (TOOL LDFLAGS) l s t d c++ l c i n c l u d e $ ( BUILD HOST STATIC LIBRARY ) 22/39 www.utbm.fr

Ajouter un nouveau composant (4) # For t h e d e v i c e # ===================================================== i n c l u d e $ (CLEAR VARS) LOCAL SRC FILES:= \ $ ( commonsources ) LOCAL MODULE:= l i b t i n y x m l LOCAL MODULE TAGS:= o p t i o n a l i n c l u d e $ ( BUILD SHARED LIBRARY ) 23/39 www.utbm.fr

Ajouter un nouveau composant (5) Toute variable est préfixée LOCAL include $(CLEAR VARS) permet de nettoyer les variables précedemment positionnées include $(BUILD XXX) permet de définir ce que l on doit produire au final Différentes variables LOCAL : LOCAL SRC FILES : permet de définir les sources à compiler LOCAL CFLAGS, LOCAL LDFLAGS : permet de définir des flags particuliers pour la compilation et le link LOCAL MODULE : permet de définir le nom du module (l extension sera ajoutée automatiquement dans le cadre d une librairie) LOCAL PACKAGE NAME : nom du package (dans le cadre de la production de composants de type APK) LOCAL SHARED LIBRARIES : permet de spécifier les dépendances du module à certaines librairies 24/39 www.utbm.fr

Ajouter un nouveau composant (6) LOCAL MODULE TAGS : permet de définir dans quel variante de build ce composant sera produit. La valeur optional est une valeur en plus de eng, user et userdebug permettant de spécifier la non-intégration du composant au build final Quelques exemples de types de composants : BUILD EXECUTABLE : binaire BUILD JAVA LIBRARY : un fichier jar. Utilisé pour les extensions du framework Android BUILD SHARED LIBRARY : une librairie partagée BUILD STATIC LIBRARY : une librairie statique BUILD PREBUILT : pour les composants pré-compilés qu il suffit d inclure au build existant 25/39 www.utbm.fr

Ajouter un nouveau composant (7) Il existe d autres variantes pour les outils host ou autres types de composants Quelques macros utiles utilisées par le système de build Android : my-dir : répertoire courant all-makefiles-under : permet dans le cadre de composants complexes constitués de plusieurs éléments d appeler make de manière récursive Liste complète de ces macros peut se trouver dans build/core/definitions.mk Production d un composant : commande : make <nom composant>/make clean - <nom composant> les fichiers générés sont sous out/target/product/<nom produit>/obj/<type de composant>/<nom du composant> intermediates Cependant, cela ne fait que produire le composant mais ne l intègre pas à l image finale Pour cela, spécifier dans la définition du produit l ajout du composant à travers la variable PRODUCT PACKAGES dans laquelle est spécifié le nom du composant 26/39 www.utbm.fr

Ajouter un nouveau produit Android supporte aujourd hui un certain nombre de produits Un produit est une configuration particulière pour une carte d un vendeur donné Il est possible pour un développeur de définir son propre produit : soit en héritant d un produit existant en utilisant les mécanismes d héritage mis à disposition pour les fichiers mk soit en repartant de zéro Un produit est défini au niveau de l aosp sous device/<vendeur>/<produit> 27/39 www.utbm.fr

Ajouter un nouveau produit (2) Exemple d arborescence pour la pandaboard (non exhaustive pour se concentrer sur l essentiel) : $ ls device/ti/panda/ Android.mk AndroidProducts.mk BoardConfig.mk CleanSpec.mk device.mk full_panda.mk init.omap4.rc init.omap4.usb.rc overlay ueventd.omap4.rc vendorsetup.sh 28/39 www.utbm.fr

Ajouter un nouveau produit (3) vendorsetup.sh : Permet d ajouter des cibles à produire au menu de la commande lunch add lunch combo <nom de la cible à produire>-<variante> Va appeler le fichier mk portant le nom de la cible à produire CleanSpec.mk : fichier pour les directives de make clean. Toujours le même : $(call add-clean-step, rm -f $(PRODUCT OUT)/system/build.prop) (x2) Un fichier Android.mk peut être nécessaire en cas de composants tiers qui seraient sous le projet device init.<nom carte>.rc / init.<nom carte>.usb.rc / ueventd.<nom carte>.rc Le nom de la carte se retrouve dans /proc/cpuinfo Hardware : OMAP4 Panda Board : init.omap4pandaboard.rc Directives de démarrage sous forme d une syntaxe particulière à Android 29/39 www.utbm.fr

Ajouter un nouveau produit (4) overlay répertoire contenant les ressources que l on cherche à surcharger (fond d écran, configuration XML,... ) la structure de ce répertoire doit respecter celle du source Android la variable DEVICE PACKAGE OVERLAYS doit être positionnée dans le fichier <nom de la cible à produire>.mk AndroidProducts.mk : fichier spécifiant le mk pour la production Généralement cela correspond à <nom de la cible à produire>.mk Exemple de contenu : PRODUCT MAKEFILES := $(LOCAL DIR)/full panda.mk BoardConfig.mk : description du produit mais plus liée au hardware Ensemble de variables définissant le jeu d instructions de la CPU, si la carte possède du bluetooth, la taille de l image à produire... Très peu documenté. En cas de portage d une nouvelle carte, besoin de creuser dans le code du projet build 30/39 www.utbm.fr

Ajouter un nouveau produit (5) Exemple de BoardConfig.mk pour une Pandaboard : BOARD USES GENERIC AUDIO := USE CAMERA STUB := t r u e f a l s e # Use t h e non open s o u r c e p a r t s, i f t h e y r e p r e s e n t i n c l u d e vendor / t i / panda / BoardConfigVendor. mk TARGET CPU ABI := armeabi v7a TARGET CPU ABI2 := armeabi TARGET CPU SMP := t r u e TARGET ARCH VARIANT := armv7 a neon ARCH ARM HAVE TLS REGISTER := t r u e BOARD HAVE BLUETOOTH := t r u e TARGET NO BOOTLOADER := t r u e # TARGET NO KERNEL := t r u e 31/39 www.utbm.fr

Ajouter un nouveau produit (6) BOARD KERNEL BASE := 0 x80000000 #BOARD KERNEL CMDLINE := TARGET NO RADIOIMAGE := t r u e TARGET BOARD PLATFORM := omap4 TARGET BOOTLOADER BOARD NAME := panda # R e covery TARGET RECOVERY PIXEL FORMAT := BGRA 8888 TARGET RECOVERY UI LIB := l i b r e c o v e r y u i p a n d a # d e v i c e s p e c i f i c e x t e n s i o n s to t h e u p d a t e r b i n a r y TARGET RELEASETOOLS EXTENSIONS := d e v i c e / t i / panda BOARD EGL CFG := d e v i c e / t i / panda / e g l. c f g #BOARD USES HGL := t r u e #BOARD USES OVERLAY := t r u e USE OPENGL RENDERER := t r u e BOARD USES PANDA GRAPHICS := t r u e 32/39 www.utbm.fr

Ajouter un nouveau produit (7) TARGET USERIMAGES USE EXT4 := t r u e BOARD SYSTEMIMAGE PARTITION SIZE := 268435456 #BOARD SYSTEMIMAGE PARTITION SIZE := 16777216 BOARD USERDATAIMAGE PARTITION SIZE := 536870912 BOARD CACHEIMAGE PARTITION SIZE := 268435456 BOARD CACHEIMAGE FILE SYSTEM TYPE := e x t 4 BOARD FLASH BLOCK SIZE := 4096 BOARD WPA SUPPLICANT DRIVER := NL80211 WPA SUPPLICANT VERSION := VER 0 8 X BOARD WPA SUPPLICANT PRIVATE LIB := l i b d r i v e r c m d w l 1 2 x x BOARD WLAN DEVICE := wl12xx mac80211 #TARGET PROVIDES INIT RC := t r u e #TARGET USERIMAGES SPARSE EXT DISABLED := t r u e 33/39 www.utbm.fr

Ajouter un nouveau produit (8) full panda.mk / device.mk : Fichier(s) définissant le produit et sa production On y trouve différentes directives permettant de spécifier des copies de fichiers, des packages ou un nom de produit Il est possible d utiliser un mécanisme d héritage dans ce fichier afin d éviter des redondances de définition Exemple pour la pandaboard : PRODUCT PACKAGES += \ L i v e W a l l p a p e r s \ L i v e W a l l p a p e r s P i c k e r \ MagicSmokeWallpapers \ V i s u a l i z a t i o n W a l l p a p e r s \ l i b r s j n i 34/39 www.utbm.fr

Ajouter un nouveau produit (9) PRODUCT PROPERTY OVERRIDES := \ n e t. dns1 = 8. 8. 8. 8 \ n e t. dns2 = 8. 8. 4. 4 # I n h e r i t from t h o s e p r o d u c t s. Most s p e c i f i c f i r s t. $ ( c a l l i n h e r i t product, $ ( SRC TARGET DIR ) / p r o d u c t / f u l l b a s e. mk) $ ( c a l l i n h e r i t product, $ ( SRC TARGET DIR ) / p r o d u c t / f u l l b a s e t e l e p h o n y. mk) $ ( c a l l i n h e r i t product, d e v i c e / t i / panda / d e v i c e. mk) $ ( c a l l i n h e r i t product i f e x i s t s, v e ndor / t i / p r o p r i e t a r y / omap4xxx / t i omap4 v endor. mk) PRODUCT NAME := f u l l p a n d a PRODUCT DEVICE := panda PRODUCT BRAND := Android PRODUCT MODEL := Panda PRODUCT MANUFACTURER := T e x a s I n s t r u m e n t s I n c 35/39 www.utbm.fr

Ajouter un nouveau produit (10) PRODUCT PACKAGES permet de définir les composants supplémentaires à ajouter au build de base PRODUCT PROPERTY OVERRIDES permet de surcharger les propriétés par défaut du système Android call inherit-product et call inherit-product-if-exists permet d intégrer des fichiers mk supplémentaires pour avoir une meilleure granularité dans le build pour intégrer des composants tiers ne pouvant être compilés au sein de l AOSP 36/39 www.utbm.fr

Ajouter un nouveau produit (11) Deux autres options intéressantes : PRODUCT CHARACTERISTICS qui permet de définir des caractéristiques génériques à son produit PRODUCT CHARACTERISTICS := t a b l e t, n o s d c a r d PRODUCT COPY FILES qui permet d effectuer durant le build la copie et l intégration de fichiers à l image de l OS. PRODUCT COPY FILES += d e v i c e / t i / panda / r e q u i r e d h a r d w a r e. xml : system / e t c / p e r m i s s i o n s / r e q u i r e d h a r d w a r e. xml 37/39 www.utbm.fr

Sommaire 1 Présentation du système de production d Android 2 Première compilation 3 L ajout d un nouveau composant, produit 4 Questions? 38/39 www.utbm.fr

Références Android System Development Maxime Ripard (Free Electrons) Embedded Android Karim Yaghmour chez O Reilly A la découverte d Android série d articles écrits par Benjamin Zores pour GNU/Linux Magazine France Android Device Porting Walkthrough présentation de Benjamin Zores à l Android Builder Summit 2012 Dive Into Android Networking - présentation de Benjamin Zores à l Embedded Linux Conference Europe 2012 39/39 www.utbm.fr