<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.freelan.org &#187; &#187; java</title>
	<atom:link href="https://blog.freelan.org/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.freelan.org</link>
	<description>De l&#039;informatique, des octets et des poneys.</description>
	<lastBuildDate>Fri, 04 Apr 2014 17:34:59 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Développer avec Qt pour Android</title>
		<link>https://blog.freelan.org/2010/11/27/developper-avec-qt-pour-android/</link>
		<comments>https://blog.freelan.org/2010/11/27/developper-avec-qt-pour-android/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 09:42:21 +0000</pubDate>
		<dc:creator><![CDATA[Damien Buhl]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.freelan.org/?p=63</guid>
		<description><![CDATA[C&#8217;est possible ? Dans ce petit article je vais vous parler du développement Android avec Qt et en C++, en effet, j&#8217;ai travaillé dernièrement dans une entreprise d&#8217;automatisation et de régulation des bâtiments où un des développeurs était en charge d&#8217;un projet d&#8217;application Android. La qualité de ses développements m&#8217;a donné envie de tenter l&#8217;aventure. [&#8230;]]]></description>
				<content:encoded><![CDATA[<h1>C&#8217;est possible ?</h1>
<p>Dans ce petit article je vais vous parler du développement Android avec Qt et en C++, en effet, j&#8217;ai travaillé dernièrement dans une entreprise d&#8217;automatisation et de régulation des bâtiments où un des développeurs était en charge d&#8217;un projet d&#8217;application Android. La qualité de ses développements m&#8217;a donné envie de tenter l&#8217;aventure. Malgré la magnifique API de Java pour android je voulais pouvoir déployer pour Windows, Linux, Mac, Symbian et Android la même application. Mon choix se portait donc sur mon framework préféré : Qt et naturellement mon langage préféré. Je ne serai jamais assez redevant à <a href="http://fr.wikipedia.org/wiki/Bjarne_Stroustrup">Bjarne Stroustrup</a> =D.</p>
<p>Développer des applications basées sur Qt pour android est possible via le projet <a href="http://code.google.com/p/android-lighthouse/" target="_blank">android-lighthouse</a>, qui <a href="http://taipan.blip.tv/" target="_blank">fonctionne très bien</a> ! En effet ce dernier rend possible l&#8217;exécution d&#8217;une application C++/Qt complète ou encore l&#8217;utilisation en Java des libraires écrites avec le framework.</p>
<p><a href="http://taipan.blip.tv/"><img class="aligncenter size-full wp-image-100" src="http://blog.freelan.org/wp-content/uploads/2010/11/introduction.png" alt="Qt Quick UI - BogDan Vatra" width="335" height="483" /></a></p>
<h2>Lighthouse</h2>
<p>Quant à lighthouse c&#8217;est un projet que l&#8217;équipe du Framework Qt a lancé avant la version 4.7 pour rendre le framework Qt portable à n&#8217;importe quelle plateforme facilement. En effet cela requiert très peu de code spécifique à la plateforme afin de faire fonctionner toutes les librairies Qt.</p>
<p>Depuis quelques semaines lighthouse est passé dans la branche stable de Qt. Grâce à android-lighthouse on peut d&#8217;ailleurs voir que le portage des bibliothèques est très rapide. Seulement quelques mois ont été nécessaires pour obtenir une version pleinement (ou presque) fonctionnelle: même les interfaces basées sur le QML fonctionnent! C&#8217;est grâce à BogDan Vatra, initiateur du projet, que le port de Qt pour android en est arrivé à cette maturité qui démontre ainsi que Qt peut être porté n&#8217;importe où: Code less, do more, deploy everywhere!</p>
<h2>Awesome!</h2>
<p>Cela rend le portage d&#8217;applications Qt sur Android très simple, écrire une application avec le framework Qt signifie que l&#8217;on peut désormais la compiler sans effort pour : Symbian, Windows, Mac, Linux &amp; Android ! <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> C&#8217;est à mon sens parfait pour construire une base de librairies réutilisables dans une entreprise. Dans cette idée il est également possible de développer des bibliothèques basées sur les fonctionnalités de Qt et de les lier avec JNI afin d&#8217;apporter des fonctionnalités natives aux applications Java Android existantes.</p>
<p>Je vous présenterai dans cet article les différentes versions d&#8217;Android supportées, les quelques limitations et clarifications nécessaires, ainsi que les procédures à suivre afin de compiler  pour et lancer sur Android votre application Qt.</p>
<h1>Les versions d&#8217;Android compatibles</h1>
<p>Lorsque le projet Qt android-lighthouse a été créé, seuls les périphériques Android 1.5 étaient supportés avec Qt lié en statique, ce qui n&#8217;est plus le cas aujourd&#8217;hui. En effet la branche actuelle du dépôt supporte seulement Qt lié dynamiquement (cela réduit l&#8217;utilisation de la mémoire &#8211; James Noble &amp; Charles Weir 2001 &#8211; Small Memory Software, puisque chacune des applications partagent les mêmes bibliothèques Qt). Cette dernière supporte aujourd&#8217;hui les versions d&#8217;Android actuelles du marché: 1.6, 2.0, 2.1 et 2.2. N&#8217;hésitez pas à essayer avec l&#8217;émulateur Android car il fonctionne comme les véritables périphériques, plus d&#8217;un développeur Android m&#8217;en a confirmé ses qualités. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<h1>Quelques Limitations</h1>
<p>Il y a actuellement (25/11/2010) <a href="http://code.google.com/p/android-lighthouse/issues/list" target="_blank">quelques limitations</a>, par exemple le rendu est réalisé uniquement par le software, les accélérations matérielles Open GL ne sont pas utilisées. Toutefois ce n&#8217;est certainement qu&#8217;une question de jours, car jusqu&#8217;aujourd&#8217;hui le portage de Qt sur Android a été très rapide et est toujours aussi actif.</p>
<p>Une autre limitation qui sera bientôt fixée d&#8217;après les initiateurs du projet est que l&#8217;on ne peut utiliser QtMultimedia pour jouer des sons, il y a d&#8217;autres solutions pour y parvenir, toutefois le port de QtMultimedia sera bientôt fait, et d&#8217;après l&#8217;initiateur du projet cela devrait être <a href="http://code.google.com/p/android-lighthouse/issues/detail?id=5" target="_blank">&#8220;le correctif le plus facile&#8221;</a> qu&#8217;il lui reste à faire.</p>
<h1>Quelques Clarifications</h1>
<p>Vous n&#8217;avez pas besoin d&#8217;être &#8220;root&#8221; ou d&#8217;avoir accès au shell root sur votre périphérique pour déployer des applications Qt, cela signifie que vous pourriez envoyer l&#8217;application sur le Google Market. Toutefois actuellement il est plutôt déconseillé de le faire, il vaudrait mieux attendre que cela soit plus testé et utilisé (ce que fait actuellement une communauté grandissante: <a href="http://groups.google.com/group/android-qt/">http://groups.google.com/group/android-qt/</a>).</p>
<h1>Préparez votre environnement de développement</h1>
<p>J&#8217;ai écrit les instructions suivantes en m&#8217;inspirant de la page <a href="http://code.google.com/p/android-lighthouse/wiki/Compile">http://code.google.com/p/android-lighthouse/wiki/Compile</a> et de ma propre expérience sur Linux 32 bits. Si vous êtes sur Windows vous devriez jeter un oeil au problème suivant: <a href="http://code.google.com/p/android-lighthouse/issues/detail?id=11" target="_blank">Configure does not work with Cygwin on winxp</a> et appliquer le patch pour cygwin qui est proposé dans l&#8217;une des réponses. Enfin si vous êtes sur Mac OS X vous devriez simplement oublier pour le moment (ou bien trouver une solution :p): <a href="http://code.google.com/p/android-lighthouse/issues/detail?id=18" target="_blank">broken build on mac osx &#8211; x86</a>.</p>
<p>Linux semble être la meilleure plateforme pour développer avec Qt pour android actuellement, donc si vous n&#8217;utilisez pas cette plateforme, je vous conseille d&#8217;essayer avec une <a href="http://www.virtualbox.org/wiki/Downloads" target="_blank">Machine Virtuelle</a>, du moins c&#8217;est la solution dont je peux vous en assurer le fonctionnement. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Actuellement quelques éléments dits sur la page officielle traitant de la compilation de Qt et d&#8217;applications Qt pour android ne sont pas vraies, c&#8217;est pourquoi je vais vous guider dans la bonne direction pour faire fonctionner votre application Qt sur android, tel que Francisco Dalla Rosa Soares m&#8217;a montré cette semaine sur la mailing list d&#8217;android-lighthouse. Sans lui je n&#8217;aurai jamais pu lancer quoi que ce soit, si ce n&#8217;est mon pc portable&#8230;</p>
<h2>Téléchargement</h2>
<p>Avant tout il vous faut télécharger et décompresser <a href="http://code.google.com/p/android-lighthouse/wiki/QADK" target="_blank">QADK</a>, qui est un Kit de Développement natif non officiel pour android, basé sur l&#8217;officiel mais avec quelques bibliothèques non supportées en plus:</p><pre class="crayon-plain-tag">wget http://android-lighthouse.googlecode.com/files/qadk-r4-1.tar.bz2
tar xf qadk-r4-1.tar.bz2 .</pre><p>Après cela il vous faudra cloner le repository git de android-lighthouse qui lui même consiste en un clone du projet Qt lighthouse qui est officiellement fourni par Nokia:</p><pre class="crayon-plain-tag">git clone git://gitorious.org/~taipan/qt/android-lighthouse.git</pre><p></p>
<h2>Configurer &amp; Compiler</h2>
<p>Vous devrez compiler Qt pour la plateforme visée, il est nécessaire de définir la variable ANDROID_PLATFORM et de faire pointer NDK_ROOT vers le dossier où vous avez décompressé QADK.</p><pre class="crayon-plain-tag">mkspecs/android-g++/qmake.conf:12 -&amp;gt;
NDK_ROOT = /path/to/qadk-r4</pre><p></p><pre class="crayon-plain-tag">mkspecs/android-g++/qmake.conf:18 -&amp;gt;
ANDROID_PLATFORM = android-5</pre><p>La dernière ligne est présente pour cibler les plateformes android 2.0 &amp; 2.1, ce qui fonctionna sans problèmes pour ma part. Utilisez <em>android-4</em> afin de cibler les plateformes 1.6 et <em>android-8</em> pour cibler les plateformes 2.2.</p>
<p>Vous pouvez désormais lancer la partie de configuration (n&#8217;hésitez pas à aller voir votre petite amie pendant ce temps):</p><pre class="crayon-plain-tag">./androidconfig.sh</pre><p>Et enfin vous pouvez compiler le tout:</p><pre class="crayon-plain-tag">make -j3</pre><p>Changez 3 par le nombre de coeur de votre processeur + un, cela activera la compilation parallèle avec autant de processus.</p>
<p>Il y a une dépendance de Qt qui n&#8217;est pas incluse au projet, c&#8217;est <strong>libcloog-ppl-dev</strong>, lancez simplement:</p><pre class="crayon-plain-tag">sudo apt-get install libcloog-ppl-dev</pre><p><em>Pour ce que j&#8217;ai pu comprendre c&#8217;est une librarie utilisée pour l&#8217;optimisation de code, qui est destinée à générer du code permettant de passer sur chacun des points d&#8217;un Polyèdre. Je suppose que c&#8217;est utilisé dans qmake, mais je ne pourrai vous l&#8217;assurer. Plus de détails et un exemple <a href="http://www.cloog.org/" target="_blank">sur le site officiel</a>.</em></p>
<h2>Installez Qt sur le Périphérique</h2>
<p>Maintenant ce serait sympa d&#8217;avoir Qt sur le périphérique Android (ou dans l&#8217;émulateur), pour ce faire faites simplement ce que la page de wiki de google code conseille:</p><pre class="crayon-plain-tag">mkdir andlibs
cp -a lib/*.so* andlibs/
adb push andlibs /data/local/qt/lib</pre><p></p>
<h3>Connectez votre Périphérique</h3>
<p>Si vous recevez l&#8217;erreur <em>adb: command not found</em>, c&#8217;est parce que vous êtes nouveau au développement Android (tout comme moi). Vous devez simplement télécharger le dernier sdk d&#8217;Android, vous pouvez trouver les instructions détaillées <a href="http://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/" target="_blank">ici</a> et le sdk <a href="http://developer.android.com/sdk/index.html" target="_blank">ici</a>.</p>
<p>Cependant à cette étape de l&#8217;article vous avez simplement besoin de télécharger le SDK, de définir le PATH et d&#8217;éxécuter:</p><pre class="crayon-plain-tag">tools/android update sdk</pre><p>Ensuite si vous voulez essayer sur votre véritable téléphone vous devrez activer la connexion avec ce dernier, pour y parvenir je vous invite à suivre la petite partie décrite <a href="http://developer.android.com/guide/developing/device.html#setting-up" target="_blank">sur le site d&#8217;android</a>.</p>
<p>Je suis sur Linux, donc j&#8217;ai simplement mis en place la configuration suivante pour mon téléphone LGGT540 sur android 2.1. Sur mon pc avec Ubuntu 10.10 j&#8217;ai défini les informations suivantes dans le fichier /etc/udev/rules.d/51-android.rules:<br />
<em>Les fichiers présents dans /etc/udev/rules.d/ sont destinés à définir <a href="http://www.reactivated.net/writing_udev_rules.html#why" target="_blank">des règles persistantes pour les périphériques</a>, dont l&#8217;une est de changer le CHMOD d&#8217;accès à un périphérique, en fonction d&#8217;éléments permettant de l&#8217;identifier.</em></p><pre class="crayon-plain-tag">SUBSYSTEM==&quot;usb&quot;, SYSFS{idVendor}==&quot;1004&quot;, MODE=&quot;0666&quot;
SUBSYSTEM==&quot;usb_device&quot;, SYSFS{idVendor}==&quot;1004&quot;, MODE=&quot;0666&quot;</pre><p>Où 1004 vient d&#8217;une liste fournie de Vendor Ids pour les périphériques android: <a href="http://developer.android.com/guide/developing/device.html#VendorIds/">http://developer.android.com/guide/developing/device.html#VendorIds/</a>. Prenez celui qui convient. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Sur Windows il vous faudra simplement installer les pilotes adb, et sur Mac OS X cela fonctionne sans rien faire, toutefois rappelez vous que android-lighthouse pour Mac OS X ne semble pas fonctionner.</p>
<p>Pour lister les périphériques Android existants vous pouvez lancer: <em>adb devices</em>.</p>
<h2>Votre première Application Qt pour Android</h2>
<p>Nous n&#8217;allons pas écrire notre propre code (oui je sais c&#8217;est triste), parce qu&#8217;il y a beaucoup de Hello World-like dans les demos du Qt Sdk. Nous allons donc choisir un très simple, afin d&#8217;expliquer les choses qui nous intéressent: la configuration de la compilation et comment créer un projet java afin de lancer l&#8217;application.</p>
<p>En effet contrairement aux dires du site officiel il n&#8217;est pas possible actuellement de compiler directement l&#8217;application en temps qu&#8217;exécutable natif. Il est nécessaire de la compiler en une bibliothèque dynamique, que l&#8217;on chargera à l&#8217;aide d&#8217;un petit launcher java basé sur les classes fournies par android-lighthouse. Ces dernières sont présentes dans le package com.nokia.qt.QtActivity.</p>
<p>Maintenant allez dans le répertoire <em>/android-lighthouse/demos/mainwindow/</em>, ici vous pouvez ouvrir le fichier mainwindow.pro, qui devrait contenir les configurations suivantes:</p><pre class="crayon-plain-tag">TEMPLATE = lib
CONFIG += dll

HEADERS += colorswatch.h mainwindow.h toolbar.h
SOURCES += colorswatch.cpp mainwindow.cpp toolbar.cpp main.cpp</pre><p>Il est réellement important de compiler l&#8217;application en tant que bibliothèque dynamique, ainsi pour vos prochaines applications n&#8217;oubliez pas d&#8217;utiliser les deux premières lignes données ci-dessus. Personnellement j&#8217;ai une préférence pour CMake, mais je n&#8217;ai pas encore pu préparer de configuration pour android pour le moment, et pourtant cela devrait seulement consister à éditer la méthode <strong>qt4_wrap_cpp</strong> pour lui donner la version android-lightouse spécialisée de qmake.</p>
<p>En effet pour compiler l&#8217;application, il faut utilisez <em>android-lighthouse/bin/qmake</em> afin de générer les fichiers de moc et le Makefile, et non pas la version de qmake que vous avez dans votre PATH.</p><pre class="crayon-plain-tag">/path/to/android-lighthouse/bin/qmake
make -j3</pre><p>Voilà, vous ne devez même pas adapter le code de votre application Qt. Le résultat des commandes que vous avez lancées devrait être un fichier so (shared object) avec différents liens symboliques afin de rendre possible la compatibilité entre versions apportée par libtool.</p>
<p>Envoyez simplement celle sans informations de compatibilité de versions sur votre périphérique android: <em>adb push libmainwindow.so /data/local/qt/lib</em>. Une fois que vous avez fait cela, l&#8217;application est sur le téléphone, mais rien n&#8217;existe pour la lancer.</p>
<h2>Créez le Projet Android</h2>
<p>Nous allons ainsi créer un launcher en java, basé sur le launcher fourni par le projet android-lighthouse, qui s&#8217;occupe tout seul des bindings JNI nécessaires. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
<p>Tout d&#8217;abord <a href="http://blog.freelan.org/2010/11/22/developper-pour-android-sans-utiliser-eclipse/" target="_blank">créez un projet</a> dans un sous-dossier (javaLoader par exemple)</p><pre class="crayon-plain-tag">android create project --target 2.1 \
			--name mainwindow \
			--path ./ \
			--activity mainwindow \
			--package com.yourcompany.mainwindow</pre><p>Créez une classe <strong>QtMain.java</strong> (vim seul ou avec eclim est un bon outil pour cela):</p><pre class="crayon-plain-tag">package org.yourcompany.mainwindow;

	import com.nokia.qt.QtActivity;

	public class QtMain extends QtActivity
	{
		public QtMain()
		{
			/* setLibraries(libraries);
			    This could be useful for you if you need to load
			    some other libraries with your application.
			*/
			setApplication(&quot;mainwindow&quot;);
		}
	}</pre><p>Et ensuite tapez simplement:</p><pre class="crayon-plain-tag">ant debug
cd bin
adb install mainwindow-debug.apk</pre><p>Votre application est installée, et peut facilement être lancée sur votre périphérique à l&#8217;aide de:</p><pre class="crayon-plain-tag">adb shell am start -a android.intent.action.MAIN -n com.yourcompany.mainwindow/.mainwindow</pre><p></p>
<h2>À propos du débogage</h2>
<p>Pour le moment je n&#8217;ai hélas pas réussi à déboguer l&#8217;application sur le périphérique, mais les sorties consoles sont redirigées, il est donc tout de même possible d&#8217;utiliser qDebug pour faire le débogage. Ce n&#8217;est pas optimal mais ce n&#8217;est qu&#8217;en attendant de trouver un moyen simple. Je pense néanmoins que l&#8217;outil qadk-r4/ndk-gdb peut rendre le débogage possible, je n&#8217;ai pas réussi cependant à faire quoi que ce soit pour l&#8217;instant à ce sujet. Je posterai dès que j&#8217;y parviendrai. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<h2>Qt Creator</h2>
<p>Apparemment l&#8217;intégration d&#8217;Android pour Qt Creator est très avancée mais pas encore dans le dépôtd&#8217;après un mail de Tero Savolainen arrivé au moment de poster l&#8217;article, sur la liste de diffusion nommé &#8220;Re: Qt porting status and some great news&#8221; l&#8217;intégration de Qt Creator avec Androïd est faite et le débogage est la prochaine fonctionnalité à venir.</p>
<h1>Conclusion</h1>
<p>Comme vous avez pu le voir il devient très simple de développer nativement pour Android, le projet étant très actif, il y a fort à parier que pour fin décembre les limitations citées devraient avoir disparues et que le débogage soit possible.</p>
<p>Merci beaucoup pour votre lecture, je suis ouvert à toutes vos suggestions et remarques concernant cet l&#8217;article. <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss>https://blog.freelan.org/2010/11/27/developper-avec-qt-pour-android/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Développer pour Android sans utiliser Eclipse</title>
		<link>https://blog.freelan.org/2010/11/22/developper-pour-android-sans-utiliser-eclipse/</link>
		<comments>https://blog.freelan.org/2010/11/22/developper-pour-android-sans-utiliser-eclipse/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 09:52:35 +0000</pubDate>
		<dc:creator><![CDATA[Julien Kauffmann]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.freelan.org/?p=33</guid>
		<description><![CDATA[Il y a quelques jours, j'ai découvert le développement Android et Eclipse par la même occasion. Ayant abandonné il y a longtemps les IDE, j'ai tout de même décidé de sauter le pas histoire de ne pas mourir idiot.]]></description>
				<content:encoded><![CDATA[<p>Il y a quelques jours, <a href="http://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/">j&#8217;ai découvert le développement Android</a> et Eclipse par la même occasion. Ayant abandonné il y a longtemps les IDE, j&#8217;ai tout de même décidé de sauter le pas histoire de ne pas mourir idiot.</p>
<p>Il faut le reconnaître, l&#8217;intégration Android dans Eclipse est très bien pensée et plutôt efficace : auto-complètement, assistants à tout va, débogueur, etc. Seulement voilà, il faut se rendre à l&#8217;évidence : quand on est habitué à Vim, l&#8217;éditeur de texte d&#8217;Eclipse fait plutôt pâle figure. Et en y réfléchissant bien, l&#8217;essentiel du développement Android reste l&#8217;écriture de code toute bête ou la modification de fichiers XML : pourquoi ne pourrait-on pas simplement utiliser une console et l&#8217;éditeur de texte de notre choix ?</p>
<p>Voici donc ce que propose ce tutorial : l&#8217;installation d&#8217;un environnement de développement simplifié pour Android.</p>
<h1>Prérequis</h1>
<p>Avant de poursuivre ce tutorial, vérifiez que vous :</p>
<ul>
<li>Êtes habitué au développement &#8220;console&#8221;. Si vous n&#8217;avez jamais utilisé que des IDE, je ne peux que trop vous conseiller de rester dans cet environnement. Le développement Android en console <a href="http://developer.android.com/guide/developing/other-ide.html">n&#8217;est pas recommandé par Google</a> et de plus beaucoup moins facile d&#8217;accès que pour d&#8217;autres langages (C, C++).</li>
<li>Savez ajouter/modifier/supprimer des variables d&#8217;environnement.</li>
<li>Avez téléchargé et installé le <a href="http://developer.android.com/sdk/index.html">Android SDK</a>. Si vous ne connaissez pas la marche à suivre, elle est indiquée dans <a href="http://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/">cet article</a>.</li>
<li>Êtes prêt à passer pour un fanatique auprès de vos amis qui utilisent un IDE.</li>
</ul>
<p>Si vous remplissez toutes ces conditions, c&#8217;est parti !</p>
<h1>Développons en Java</h1>
<p>On a beau se passer d&#8217;Eclipse, on ne peut évidement se passer d&#8217;utiliser Java.</p>
<p>Commencez par télécharger le <a title="Télécharger le kit de développement Java (JDK)" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">kit de développement Java (JDK)</a> pour votre système d&#8217;exploitation, puis installez-le.</p>
<p>Pour ma part, j&#8217;ai choisi le chemin d&#8217;installation par défaut, c&#8217;est à dire &#8220;C:\Program Files\Java&#8221; sur mon Windows Seven 64 bits.</p>
<p>On se retrouve avec les deux répertoires suivants :</p>
<div id="attachment_39" style="width: 111px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/folders.png"><img class="size-full wp-image-39" title="Répertoires Java" src="http://blog.freelan.org/wp-content/uploads/2010/11/folders.png" alt="" width="101" height="51" /></a><p class="wp-caption-text">Répertoires Java</p></div>
<p>La dernière étape concernant Java, consiste à ajouter le sous-répertoire &#8220;C:\Program Files\Java\jdk1.6.0_22\bin&#8221; au PATH de l&#8217;environnement.</p>
<p>Ouvrez une fenêtre console et saisissez la commande suivante :</p><pre class="crayon-plain-tag">javac</pre><p>Si vous obtenez la sortie suivante :</p><pre class="crayon-plain-tag">C:\Users\Julien&amp;gt;javac
Usage: javac &amp;lt;options&amp;gt; &amp;lt;source files&amp;gt;
where possible options include:
 -g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generate all debugging info
 -g:none&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generate no debugging info
 -g:{lines,vars,source}&nbsp;&nbsp;&nbsp;&nbsp; Generate only some debugging info
 -nowarn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generate no warnings
 -verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Output messages about what the compiler is doing
 -deprecation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Output source locations where deprecated APIs are used
 -classpath &amp;lt;path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to find user class files and annotation processors
 -cp &amp;lt;path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to find user class files and annotation processors
 -sourcepath &amp;lt;path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to find input source files
 -bootclasspath &amp;lt;path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Override location of bootstrap class files
 -extdirs &amp;lt;dirs&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Override location of installed extensions
 -endorseddirs &amp;lt;dirs&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Override location of endorsed standards path
 -proc:{none,only}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Control whether annotation processing and/or compilation is done.
 -processor &amp;lt;class1&amp;gt;[,&amp;lt;class2&amp;gt;,&amp;lt;class3&amp;gt;...]Names of the annotation processors to run; bypasses default discovery proces
s
 -processorpath &amp;lt;path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to find annotation processors
 -d &amp;lt;directory&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to place generated class files
 -s &amp;lt;directory&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify where to place generated source files
 -implicit:{none,class}&nbsp;&nbsp;&nbsp;&nbsp; Specify whether or not to generate class files for implicitly referenced files
 -encoding &amp;lt;encoding&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify character encoding used by source files
 -source &amp;lt;release&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Provide source compatibility with specified release
 -target &amp;lt;release&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generate class files for specific VM version
 -version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version information
 -help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print a synopsis of standard options
 -Akey[=value]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options to pass to annotation processors
 -X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print a synopsis of nonstandard options
 -J&amp;lt;flag&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pass &amp;lt;flag&amp;gt; directly to the runtime system</pre><p>C&#8217;est que tout est bien configuré <img src="https://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<h2>Un peu de ménage</h2>
<p>Avant d&#8217;installer le JDK, je me suis rendu compte que j&#8217;avais déjà une version du runtime Java installée.</p>
<p>Si c&#8217;est également votre cas, rien ne vous empêche de la garder, mais pour éviter les conflits potentiel, et ne pas gaspiller inutilement de l&#8217;espace disque, j&#8217;ai choisi de procéder manuellement à sa désinstallation avant d&#8217;installer le JDK.</p>
<p>J&#8217;ai également à ce moment là, fait le ménage dans les variables d&#8217;environnement qui faisaient référence à Java.</p>
<h1>Ant, un &#8220;Makefile-like&#8221; pour Java</h1>
<p>Le Android SDK utilise Ant pour automatiser la compilation des projets. Pour ceux qui connaissent, c&#8217;est une alternative orientée Java à Makefile, CMake, SConstruct ou encore BJAM.</p>
<p>Pour les plus curieux, vous pouvez faire un tour sur <a href="http://ant.apache.org/">la page officielle de Ant</a>.</p>
<p>Sinon, passons directement au téléchargement : <a href="http://ant.apache.org/bindownload.cgi#Current%20Release%20of%20Ant">Télécharger Ant</a>.</p>
<p>Décompressez l&#8217;archive où bon vous semble (j&#8217;ai choisi encore une fois de tout mettre dans C:\) et ajoutez les variables d&#8217;environnement suivantes :</p>
<ul>
<li><strong>ANT_HOME</strong> : Le chemin vers l&#8217;archive décompressée. Chez moi : &#8220;C:\apache-ant-1.8.1&#8243;</li>
<li><strong>JAVA_HOME</strong> : Le chemin vers l&#8217;installation du JDK. Chez moi : &#8220;C:\Program Files\Java\jdk1.6.0_22&#8243;</li>
<li><strong>PATH</strong> : Ajoutez le chemin vers les binaires de Ant. Chez moi : &#8220;C:\apache-ant-1.8.1\bin&#8221;</li>
</ul>
<p>Une fois que tout est configuré, ouvrez une <strong>nouvelle console</strong> et tapez :</p><pre class="crayon-plain-tag">ant</pre><p>Si vous obtenez la sortie suivante :</p><pre class="crayon-plain-tag">C:\Users\Julien&amp;gt;ant
Buildfile: build.xml does not exist!
Build failed</pre><p>C&#8217;est que Ant est correctement installé.</p>
<p><span style="color: #ff6600;">Si ça  ne fonctionne pas, vérifiez bien que l&#8217;environnement de votre console  est bien à jour. Sous Windows, il faut fermer toutes les fenêtres  consoles et les ré-ouvrir pour appliquer les modifications faites à  l&#8217;environnement.</span></p>
<h1>C&#8217;est tout ?</h1>
<p>Oui. Il n&#8217;en faut pas plus pour avoir un environnement de compilation simple pour Android.</p>
<p>Nous pouvons d&#8217;ores et déjà voir comment créer un nouveau projet, le compiler et le déployer sur un émulateur.</p>
<h2>Création d&#8217;un projet</h2>
<p>Pour créer un nouveau projet, nous allons utiliser la commande &#8220;android&#8221;.</p>
<p>Voici la syntaxe pour créer un nouveau projet :</p><pre class="crayon-plain-tag">android create project \
--target &lt;em&gt;&amp;lt;version_cible&amp;gt;&lt;/em&gt; \
--name &lt;em&gt;&amp;lt;nom&amp;gt;&lt;/em&gt; \
--path &lt;em&gt;&amp;lt;chemin&amp;gt;&lt;/em&gt; \
--activity &lt;em&gt;&amp;lt;activit&eacute;&amp;gt;&lt;/em&gt; \
--package &lt;em&gt;&amp;lt;&lt;/em&gt;espace_de_nom&lt;em&gt;&amp;gt;
&lt;/em&gt;</pre><p>La signification des différents paramètres est la suivante :</p>
<ul>
<li><strong>version_cible</strong> : l&#8217;identifiant de version Android cible à utiliser. Pour avoir la liste des identifiants disponibles sur votre poste, utilisez la commande <strong>&#8220;android list targets&#8221;</strong>.</li>
<li><strong>nom</strong> : Le nom de votre projet. Ce paramètre est optionnel, mais s&#8217;il est spécifié, ce nom sera celui du paquet &#8220;.apk&#8221; généré ultérieurement.</li>
<li><strong>chemin</strong> : Le répertoire cible où sera créé votre nouveau projet.</li>
<li><strong>activité</strong> : Le nom complet de l&#8217;activité. Exemple : &#8220;MyAndroid&#8221;.</li>
<li><strong>espace_de_nom</strong> : L&#8217;espace de nom (ou &#8220;namespace&#8221;) utilisé par votre projet. Exemple : <strong>&#8220;org.freelan.myandroid&#8221;</strong>.</li>
</ul>
<p>Google donne la commande exemple suivante :</p><pre class="crayon-plain-tag">android create project \
--target 1 \
--name MyAndroidApp \
--path ./MyAndroidAppProject \
--activity MyAndroidAppActivity \
--package com.example.myandroid</pre><p>Qui crée dans le répertoire courant un sous-répertoire &#8220;MyAndroidAppProject&#8221; contenant le nouveau projet.</p>
<div id="attachment_46" style="width: 166px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/tree.png"><img class="size-full wp-image-46" title="Arborescence d'un nouveau projet Android" src="http://blog.freelan.org/wp-content/uploads/2010/11/tree.png" alt="" width="156" height="274" /></a><p class="wp-caption-text">Arborescence d&#39;un nouveau projet Android</p></div>
<p>Nous ne rentrerons pas ici dans les détails de cette arborescence, mais voici tout de même dans les grandes lignes les choses intéressantes :</p>
<ul>
<li>Les fichiers source Java sont situés dans le répertoire &#8220;src&#8221;.</li>
<li>Tout ce qui concerne les chaînes de caractères, fichiers XML représentant l&#8217;interface graphique (ou &#8220;Layouts&#8221;) ou images sont dans le répertoire &#8220;res&#8221;.</li>
<li>Ne touchez <strong>jamais</strong> aux fichiers &#8220;*.properties&#8221; ! Ils sont utilisés par Ant pour la phase de &#8220;build&#8221; et n&#8217;ont pas vocation à être modifiés manuellement.</li>
</ul>
<h2>Compilation du projet</h2>
<p>Le projet, tel que créé par défaut est simpliste mais fonctionnel. Le rôle de ce tutoriel n&#8217;étant pas d&#8217;apprendre à concevoir une application Android mais de simplement maitriser les outils du SDK, nous ne ferons aucune modification de ce projet.</p>
<p>Pour être diffusée, une application Android doit être <strong>signée</strong>. Ceci implique plusieurs démarches dont nous traiterons dans un autre tutoriel. Pour l&#8217;heure, nous choisissons de compiler notre projet en &#8220;debug&#8221;, ce qui nous permet de nous affranchir de cette étape.</p>
<p>Dans la même console, toujours à la racine du projet, tapez simplement la commande :</p><pre class="crayon-plain-tag">ant debug</pre><p>Qui a pour effet de générer dans le répertoire &#8220;bin&#8221; différentes choses, dont le fichier <strong>&#8220;MyAndroidApp-debug.apk&#8221;</strong>.</p>
<p>Ce n&#8217;est pas plus compliqué que ça.</p>
<h2>Création d&#8217;un périphérique virtuel</h2>
<p>Pour tester notre application, il nous faut soit un téléphone sous Android relié en USB et configuré en mode développeur, soit un téléphone virtuel lancé dans un émulateur.</p>
<p>Si vous n&#8217;avez pas encore créé de téléphone virtuel, voici la marche à suivre :</p>
<p>Dans votre console, tapez la commande :</p><pre class="crayon-plain-tag">android</pre><p>Ce qui a pour effet d&#8217;ouvrir la fenêtre suivante :</p>
<div id="attachment_47" style="width: 755px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/android.png"><img class="size-full wp-image-47" title="Gestion des téléphone virtuels" src="http://blog.freelan.org/wp-content/uploads/2010/11/android.png" alt="" width="745" height="433" /></a><p class="wp-caption-text">Gestion des téléphone virtuels</p></div>
<p>Cliquez sur &#8220;New&#8230;&#8221;, puis spécifiez les caractéristiques de votre téléphone virtuel :</p>
<div id="attachment_48" style="width: 420px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/new_phone.png"><img class="size-full wp-image-48" title="Caractéristiques du téléphone virtuel" src="http://blog.freelan.org/wp-content/uploads/2010/11/new_phone.png" alt="" width="410" height="566" /></a><p class="wp-caption-text">Caractéristiques du téléphone virtuel</p></div>
<p>Puis validez en cliquant sur &#8220;Create AVD&#8221;.</p>
<p>Si tous les paramètres sont corrects, votre téléphone virtuel est créé. Vous pouvez d&#8217;ores et déjà le démarrer en le sélectionnant dans la liste et en cliquant sur le bouton &#8220;Start&#8230;&#8221;.</p>
<p>Ce premier démarrage peut être assez long, aussi, soyez patient.</p>
<h2>Installer son application sur le téléphone</h2>
<p>Une fois le paquet &#8220;apk&#8221; créé, l&#8217;installation sur un téléphone (qu&#8217;il soit virtuel ou non) se fait très simplement :</p><pre class="crayon-plain-tag">adb install &lt;em&gt;bin\MyAndroidApp-debug&lt;/em&gt;.apk</pre><p>La commande prends quelques secondes et vous indique le succès ou l&#8217;échec de l&#8217;opération.</p>
<p>Si vous disposez de plusieurs émulateurs, ou d&#8217;un émulateur et d&#8217;un téléphone physique, adb ne peut pas deviner où installer votre paquet.</p>
<p>Utilisez alors la syntaxe suivante pour spécifier le périphérique à utiliser :</p><pre class="crayon-plain-tag">adb -s emulator-5554 install bin\MyAndroidApp-debug.apk</pre><p>Ou positionnez la variable d&#8217;environnement <strong>ANDROID_SERIAL</strong> avant vos appels à adb.</p>
<p>Pour obtenir la liste des numéros de série des périphériques, vous pouvez utiliser la commande suivante :</p><pre class="crayon-plain-tag">adb devices</pre><p>La commande &#8220;adb install&#8221; possède tout un tas d&#8217;option qu&#8217;il ne serait pas raisonnable de détailler ici. Vous devriez cependant y jeter un coup d&#8217;oeil. Pour les lister, tapez simplement :</p><pre class="crayon-plain-tag">adb install</pre><p>Qui produit la sortie suivante :</p><pre class="crayon-plain-tag">C:\Users\Julien&amp;gt;adb install
Android Debug Bridge version 1.0.26

 -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - directs command to the only connected USB device returns an error if more than one USB device is present.
 -e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - directs command to the only running emulator. returns an error if more than one emulator is running.
 -s &amp;lt;serial number&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - directs command to the USB device or emulator with the given serial number. Overrides ANDROID_SERIAL environment variable.
 -p &amp;lt;product name or path&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp; - simple product name like 'sooner', or  a relative/absolute path to a product out directory like 'out/target/product/sooner'.
 If -p is not specified, the ANDROID_PRODUCT_OUT environment variable is used, which must be an absolute path.
 devices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - list all connected devices
 connect &amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - connect to a device via TCP/IP
 disconnect &amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - disconnect from a TCP/IP device

device commands:
 adb push &amp;lt;local&amp;gt; &amp;lt;remote&amp;gt;&nbsp;&nbsp;&nbsp; - copy file/dir to device
 adb pull &amp;lt;remote&amp;gt; [&amp;lt;local&amp;gt;]&nbsp; - copy file/dir from device
 adb sync [ &amp;lt;directory&amp;gt; ]&nbsp;&nbsp;&nbsp;&nbsp; - copy host-&amp;gt;device only if changed
 (see 'adb help all')
 adb shell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - run remote shell interactively
 adb shell &amp;lt;command&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - run remote shell command
 adb emu &amp;lt;command&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - run emulator console command
 adb logcat [ &amp;lt;filter-spec&amp;gt; ] - View device log
 adb forward &amp;lt;local&amp;gt; &amp;lt;remote&amp;gt; - forward socket connections
 forward specs are one of:
 tcp:&amp;lt;port&amp;gt;
 localabstract:&amp;lt;unix domain socket name&amp;gt;
 localreserved:&amp;lt;unix domain socket name&amp;gt;
 localfilesystem:&amp;lt;unix domain socket name&amp;gt;
 dev:&amp;lt;character device name&amp;gt;
 jdwp:&amp;lt;process pid&amp;gt; (remote only)
 adb jdwp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - list PIDs of processes hosting a JDWP transport
 adb install [-l] [-r] [-s] &amp;lt;file&amp;gt; - push this package file to the device and install it
 ('-l' means forward-lock the app)
 ('-r' means reinstall the app, keeping its data)
 ('-s' means install on SD card instead of internal storage)
 adb uninstall [-k] &amp;lt;package&amp;gt; - remove this app package from the device ('-k' means keep the data and cache directories)
 adb bugreport&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - return all information from the device that should be included in a bug report.

 adb help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - show this help message
 adb version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - show version num

DATAOPTS:
 (no option)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - don't touch the data partition
 -w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - wipe the data partition
 -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - flash the data partition

scripting:
 adb wait-for-device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - block until device is online
 adb start-server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - ensure that there is a server running
 adb kill-server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - kill the server if it is running
 adb get-state&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - prints: offline | bootloader | device
 adb get-serialno&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - prints: &amp;lt;serial-number&amp;gt;
 adb status-window&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - continuously print device status for a specified device
 adb remount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - remounts the /system partition on the device read-write
 adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
 adb reboot-bootloader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - reboots the device into the bootloader
 adb root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - restarts the adbd daemon with root permissions
 adb usb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - restarts the adbd daemon listening on USB
 adb tcpip &amp;lt;port&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - restarts the adbd daemon listening on TCP on the specified port
networking:
 adb ppp &amp;lt;tty&amp;gt; [parameters]&nbsp;&nbsp; - Run PPP over USB.
 Note: you should not automatically start a PPP connection.
 &amp;lt;tty&amp;gt; refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ &amp;lt;directory&amp;gt; ]
 &amp;lt;localdir&amp;gt; can be interpreted in several ways:

 - If &amp;lt;directory&amp;gt; is not specified, both /system and /data partitions will be updated.

 - If it is &quot;system&quot; or &quot;data&quot;, only the corresponding partition is updated.</pre><p></p>
<h2>Démarrer une activité</h2>
<p>Une fois installée, vous pouvez démarrer l&#8217;activité sur votre téléphone  comme vous le feriez pour n&#8217;importe quelle autre application. Mais si vous le souhaitez, vous pouvez également le faire en ligne de commande (voire automatiquement, si vous mettez toutes les commandes dans un script).</p>
<p>La commande ci-après démarre votre activité sur le téléphone spécifié (ou sur le seul téléphone connecté) :</p><pre class="crayon-plain-tag">adb shell am start -a android.intent.action.MAIN -n com.example.myandroid/.MyAndroidAppActivity</pre><p>Vous pouvez d&#8217;ailleurs démarrer n&#8217;importe-quelle activité en utilisant cette méthode.</p>
<h2>Une seule commande pour tout</h2>
<p>Astuce qu&#8217;il est agréable de connaître : Il est possible de réunir les dernières étapes en une seule commande en utilisant la commande suivante :</p><pre class="crayon-plain-tag">ant install</pre><p>Qui va se charger de faire un &#8220;ant debug&#8221;, &#8220;adb install&#8230;&#8221; pour vous. Plutôt sympa non ?</p>
<h1>Conclusion</h1>
<p>Le développement Android en mode console s&#8217;avère moins pénible à mettre en place que je ne l&#8217;aurais pensé. Google a fait un travail impressionnant en fournissant aux développeurs des outils simples et facile à intégrer à n&#8217;importe quel environnement.</p>
<p>Certains argueront que l&#8217;apprentissage du développement Android est bien plus facile sous Eclipse, et je pense que dans un sens ce n&#8217;est pas faux : il est clair qu&#8217;avoir le complètement automatique et des assistants permet d&#8217;apprendre peu à peu et facilement les différentes structures de données à utiliser. Cependant, la découverte de cet environnement console permet assurément de comprendre tout ce qu&#8217;Eclipse fait pour nous de façon automatique.</p>
<p>L&#8217;utilisation directe de &#8220;adb&#8221; peut notamment fournir au développeur des outils avancés indispensables et une aide précieuse au développement.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.freelan.org/2010/11/22/developper-pour-android-sans-utiliser-eclipse/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Installer l&#8217;environnement de développement pour Android</title>
		<link>https://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/</link>
		<comments>https://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 11:43:42 +0000</pubDate>
		<dc:creator><![CDATA[Julien Kauffmann]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[desire]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[émulateur]]></category>
		<category><![CDATA[environement]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.freelan.org/?p=6</guid>
		<description><![CDATA[Il existe déjà sur la toile un bon nombre d'articles traitant du développement sur Android. La plupart sont d'ailleurs très bien écrits et assez faciles à suivre mais supposent souvent que le lecteur connaisse Java ou en tout cas soit familier avec son environnement de développement. Si comme moi, ce n'est pas votre cas mais que vous souhaitez tout de même développer pour Android :  ce retour d'expérience cet article est fait pour vous.]]></description>
				<content:encoded><![CDATA[<p>Il existe déjà sur la toile un bon nombre d&#8217;articles traitant du développement sur Android. La plupart sont d&#8217;ailleurs très bien écrits et assez faciles à suivre mais supposent souvent que le lecteur connaisse Java ou en tout cas soit familier avec son environnement de développement. Si comme moi, ce n&#8217;est pas votre cas mais que vous souhaitez tout de même développer pour Android : <span style="text-decoration: line-through;"> ce retour d&#8217;expérience</span> cet article est fait pour vous.</p>
<h1>Commençons par le début, voulez-vous ?</h1>
<p>Nous allons supposer que vous disposez d&#8217;un ordinateur, d&#8217;une connexion à l&#8217;Internet et éventuellement d&#8217;un téléphone sous <strong>Android</strong>. Ce dernier point n&#8217;est évidemment pas obligatoire mais il faut reconnaître que c&#8217;est quand même moins marrant de tester son application dans un émulateur que sur un vrai téléphone.</p>
<p>Les instructions que je vais décrire sont pour <strong>Windows</strong>, mais il ne sera certainement pas très difficile de les transcrire pour <strong>Linux </strong>ou <strong>Mac OSX</strong>.</p>
<h2>Installer le support de Java</h2>
<p>Le langage de choix pour le développement Android est le <strong>Java</strong>. Il s&#8217;agit d&#8217;un langage complètement portable : le code est le même indépendamment du système d&#8217;exploitation ou de son architecture (x86, x64, etc.). Pour s&#8217;exécuter sur les différents systèmes, Java requiert l&#8217;installation d&#8217;une <em>JVM</em>, (&#8220;Java Virtual Machine&#8221; ou encore &#8220;Machine Virtuelle Java&#8221;) qui &#8220;traduit&#8221; le code Java en instructions compréhensibles par le système hôte.</p>
<p>Installons donc cette <em>JVM</em> : <a title="Télécharger la JVM" href="http://java.com" target="_blank">Télécharger la JVM</a></p>
<h2>Le &#8220;Android SDK&#8221;</h2>
<p>Il faut ensuite télécharger le kit de développement Android fourni par Google. Encore une fois, rien de plus simple : <a title="Télécharger le Android SDK " href="http://code.google.com/android/download.html">﻿Télécharger le Android SDK</a></p>
<p>Une fois l&#8217;archive récupérée, décompressez-la où bon vous semble. Pour ma part, j&#8217;aime avoir mes différents environnements de développement sous Windows à la racine du C:\, mais vous pouvez très bien décider de la mettre ailleurs<sup>*</sup>.</p>
<p><em>* Évitez tant que possible d&#8217;utiliser un chemin contenant des espaces, ce ne serait pas la première fois que ça cause des problèmes !</em></p>
<p>Il faut ensuite ajouter au PATH le répertoire de l&#8217;archive contenant les outils du SDK. Sur mon poste, j&#8217;ai donc ajouté <img src="file:///C:/Users/BarbouK/AppData/Local/Temp/moz-screenshot.png" alt="" />&#8220;C:\android-sdk-windows\tools&#8221; à mon PATH :</p>
<div id="attachment_12" style="width: 498px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/path1.png"><img class="size-full wp-image-12" title="Modifier son PATH" src="http://blog.freelan.org/wp-content/uploads/2010/11/path1.png" alt="" width="488" height="524" /></a><p class="wp-caption-text">Ajouter les outils du Android SDK à son PATH</p></div>
<h2>Eclipse, l&#8217;outil de prédilection</h2>
<p>Pour développer, il faut ensuite au moins un éditeur de texte et au mieux un IDE. Bien que ne connaissant que très peu Java, j&#8217;avais cependant déjà entendu parler d&#8217;<strong>Eclipse</strong>. Google ayant en plus eu le bon goût de développer un plugin Eclipse pour le développement Android : il semble s&#8217;agir d&#8217;un bon choix.</p>
<p>Mon instinct de développeur à la page m&#8217;inciterait à télécharger la dernière version d&#8217;Eclipse (la <strong>3.6</strong> au moment où ces lignes sont rédigées), mais Google indique sur <a href="http://developer.android.com/sdk/eclipse-adt.html">la page de présentation de son plugin</a> que celui-ci ne fonctionne qu&#8217;avec la version <strong>3.5</strong>.</p>
<p>Téléchargeons donc la version <strong>3.5</strong> : <a href="http://www.eclipse.org/downloads/">Page de téléchargement d&#8217;Eclipse</a></p>
<p>Rendez-vous dans l&#8217;onglet &#8220;Older versions&#8221; puis choisissez &#8220;<a title="http://www.eclipse.org/downloads/packages/release/galileo/sr2" rel="nofollow" href="http://www.eclipse.org/downloads/packages/release/galileo/sr2">Eclipse Galileo SR2 Packages (v 3.5.2)</a>&#8221; puis enfin prenez &#8220;<a href="http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/galileosr2">Eclipse IDE for Java Developers</a>&#8220;.</p>
<p>Décompressez l&#8217;archive, et placez le dossier &#8220;eclipse&#8221; où bon vous semble. Encore une fois, j&#8217;ai choisi de le mettre à la racine du C:\ par souci de cohérence.</p>
<p style="text-align: left;">Rendez-vous dans le répertoire fraîchement décompressé puis lancez &#8220;eclipse.exe&#8221;. Ceci peut prendre un peu de temps, puis le programme vous demande où vous souhaitez enregistrer vos futurs projets.</p>
<h2 style="text-align: left;">Le plugin ADT</h2>
<p style="text-align: left;">Il ne manque plus que l&#8217;installation du plugin officiel Google pour Android (<strong>ADT</strong>).</p>
<p style="text-align: left;">Rendez-vous sur <a href="http://developer.android.com/sdk/eclipse-adt.html#installing">cette page</a>. Et suivez les instructions concernant votre version d&#8217;Eclipse.</p>
<p style="text-align: left;">Pour ceux qui auraient un problème avec la langue de Shakespeare, voici les premières instructions traduites :</p>
<ol>
<li>Démarrez Eclipse, et rendez-vous dans le menu &#8220;Help&#8221; puis &#8220;Install New Software&#8221;.</li>
<li>Cliquez sur le bouton &#8220;Add&#8230;&#8221;</li>
<li>Dans le premier champ, entrez &#8220;Android Developer Tools&#8221; puis dans le second champ, saisissez &#8220;https://dl-ssl.google.com/android/eclipse/&#8221;. Validez par un clic sur le bouton &#8220;OK&#8221;.</li>
<li>Vous devriez désormais voir une entrée &#8220;Developer Tools&#8221; dans la liste plus bas. Sélectionnez la case à cocher, ce qui a pour effet de sélectionner automatiquement les deux sous-cases.</li>
<li>Faites &#8220;Next&#8221; autant de fois que nécessaire, acceptez la license d&#8217;utilisation (si vous la comprenez), puis cliquez sur &#8220;Finish&#8221;. Eclipse télécharge ensuite les composants.</li>
<li>Redémarrez Eclipse pour terminer l&#8217;installation du plugin.</li>
</ol>
<p style="text-align: center;">
<div id="attachment_19" style="width: 617px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/install.png"><img class="size-full wp-image-19 " title="Installer de nouveaux composants pour Eclipse" src="http://blog.freelan.org/wp-content/uploads/2010/11/install.png" alt="" width="607" height="435" /></a><p class="wp-caption-text">Installer de nouveaux composants pour Eclipse</p></div>
<div id="attachment_20" style="width: 432px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/adt2.png"><img class="size-full wp-image-20 " title="Ajouter la source ADT" src="http://blog.freelan.org/wp-content/uploads/2010/11/adt2.png" alt="" width="422" height="363" /></a><p class="wp-caption-text">Ajouter la source ADT</p></div>
<p style="text-align: center;">
<div id="attachment_21" style="width: 590px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/adt3.png"><img class="size-full wp-image-21 " title="Acceptation de la licence" src="http://blog.freelan.org/wp-content/uploads/2010/11/adt3.png" alt="" width="580" height="428" /></a><p class="wp-caption-text">Acceptation de la licence</p></div>
<p>Avant d&#8217;être utilisé, le plugin ADT doit être configuré. Rendez-vous dans &#8220;Windows&#8221;, puis &#8220;Preferences&#8221; et sélectionnez &#8220;Android&#8221; dans la liste à gauche.</p>
<p>Spécifiez le chemin vers le SDK installé en cliquant sur le bouton &#8220;Browse&#8230;&#8221; et en cherchant l&#8217;endroit où vous avez décompressé le Android SDK. Chez moi, il s&#8217;agit de &#8220;C:\android-sdk-windows&#8221;.</p>
<p>Validez par &#8220;OK&#8221; pour terminer la configuration.</p>
<h2>Configuration du Android SDK</h2>
<p>La dernière étape avant de pouvoir développer pour Android consiste à configurer le Android SDK.</p>
<p>Rendez-vous dans le répertoire où vous avez décompressé le Android SDK, puis exécutez le programme : &#8220;SDK Manager.exe&#8221;.</p>
<p style="text-align: center;">
<div id="attachment_25" style="width: 611px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/androidsdk.png"><img class="size-full wp-image-25 " title="Configuration du Android SDK" src="http://blog.freelan.org/wp-content/uploads/2010/11/androidsdk.png" alt="" width="601" height="388" /></a><p class="wp-caption-text">Configuration du Android SDK</p></div>
<p>Choisissez les paquets à installer en les acceptant ou en les refusant.</p>
<p>Pour ma part, j&#8217;ai conservé le choix par défaut, puis j&#8217;ai cliqué sur &#8220;Install&#8221;. S&#8217;en suit une série de téléchargements, plus ou moins rapides.</p>
<h3>Créer un périphérique virtuel</h3>
<p>Cette étape n&#8217;est pas obligatoire pour ceux qui disposent d&#8217;un téléphone sous Android, mais il peut être pratique d&#8217;avoir un téléphone virtuel prêt à l&#8217;emploi pour faire des tests rapides (ou lorsqu&#8217;on est dans le train et qu&#8217;avoir 15 000 trucs sur les genoux n&#8217;est <strong>pas</strong> une option !).</p>
<p>Toujours dans le &#8220;Android SDK Manager&#8221;, rendez-vous dans la catégorie : &#8220;Virtual Devices&#8221; puis faites &#8220;New&#8230;&#8221;.</p>
<p>Choisissez un nom significatif pour votre périphérique virtuel. Dans mon cas, j&#8217;ai décidé de reproduire les caractéristiques physiques de mon téléphone : je l&#8217;ai donc nommé &#8220;HTC_Desire&#8221;.</p>
<p>Choisissez une version de l&#8217;OS à utiliser (dans mon cas toujours, &#8220;Android 2.2 &#8211; API Level 8&#8243;) et une taille pour la carte SD. Ici, ça dépend vraiment de votre espace disque : j&#8217;ai choisi &#8220;4096 Mo&#8221; comme ma vraie carte SD, mais si vous êtes limité en place, quelque-chose comme &#8220;128 Mo&#8221; peut être suffisant.</p>
<p>Pour le reste, j&#8217;ai laissé les réglages par défaut qui semblaient convenir.</p>
<p>Cliquez sur &#8220;Create AVD&#8221; pour finaliser la création.</p>
<p>Vous pouvez, si vous le souhaitez, vous amuser à démarrer le téléphone virtuel en cliquant sur le bouton &#8220;Start&#8221; à droite. Le téléphone peut mettre un peu de temps à démarrer (surtout la première fois) aussi, soyez patient.</p>
<div id="attachment_30" style="width: 817px" class="wp-caption aligncenter"><a href="http://blog.freelan.org/wp-content/uploads/2010/11/emulator.png"><img class="size-full wp-image-30" title="L'émulateur de périphérique Android" src="http://blog.freelan.org/wp-content/uploads/2010/11/emulator.png" alt="" width="807" height="572" /></a><p class="wp-caption-text">L&#39;émulateur de périphérique Android</p></div>
<h1>Félicitations !</h1>
<p>Ça y est ! Vous avez terminé la configuration de l&#8217;environnement de développement et vous êtes prêt à développer pour votre nouvelle plateforme préférée !</p>
<p>Rendez-vous dans Eclipse, faites &#8220;New&#8221;, &#8220;Project&#8221; puis choisissez &#8220;Android Project&#8221; et laissez-vous guider !</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>https://blog.freelan.org/2010/11/20/installer-lenvironnement-de-developpement-pour-android/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
