24 décembre 2011

Second rideau

LA PHOTO DE DROITE ÉTAIT A L'ORIGINE UNE PHOTO D'UN FLASH Speedlite EX PRISE SUR LE SITE DE CANON. MAIS CANON S'EST PLAINT, ET GOOGLE A RETIRE LA PHOTO !

HEUREUSEMENT IL Y A D'AUTRES MARQUES DE FLASH QUE CANON. PENSEZ Y AVANT VOS ACHATS.


Avec tous les flashs Canon on a au moins le choix entre déclenchement au premier rideau et 'High Speed'. Pour le déclenchement au second rideau ce n’est pas toujours possible.

Pour pouvoir déclencher sur le second rideau il faut respecter deux conditions :
  1. Le flash doit être connecté électriquement au boitier. (En direct ou via un câble)
  2. Le flash ne doit pas télécommander un autre flash.
Au cas pas cas :
  • Avec un flash Speedlite de la série EX II (270, 430, 580) la sélection second rideau peut se faire sur le flash et depuis le boitier. La modification sur l’un se voie sur l’autre. Si on met le flash en master (sous entendu il télécommande un slave) on perd la possibilité du second rideau.
  • Avec les flashs macro (Twin lite MT-24EX  et Ring lite MR-14EX) la sélection second rideau se fait uniquement depuis le flash. Le résultat est visible, mais pas modifiable, sur l’appareil. Si on utilise la possibilité de télécommander un flash on perd le déclenchement second rideau.
  • Avec le Speedlite Transmitter ST-E2 on ne peut jamais déclencher le/les flash(s) sur le second rideau, même si  le flash commandé est de la série EX II.
Une solution pour avoir un déclenchement second rideau tout en commandant un deuxième flash est de faire en sorte que le deuxième flash se déclenche tout seul à la détection de la lumière du premier flash. Malheureusement le prés-éclair, utilisé avant le début de l’exposition pour évaluer la scène, va aussi déclencher le deuxième flash et tout fausser.

L’autre solution [Non testée] est d’utiliser un flash externe raccordé par un câble à la prise PC d’un flash de la série EX II monté sur l’appareil. On peut penser que ce flash externe sera déclenché au même moment que le flash EX II, et donc sur le deuxième rideau. Le boitier comporte aussi une prise PC pour flash. Mais je n’ai aucune idée de comment elle est déclenchée.


23 décembre 2011

Bad vibrations


Quand on fait de la macro à de forts grossissements la moindre vibration peut créer du flou. Pour obtenir des images impeccables il faut donc éliminer les vibrations. Cela se fait avec un bon matériel et avec une bonne technique.

Coté matériel le support (trépied, rail, rotule ...) mais aussi l’orientation de l’appareil (objectif horizontal, incliné, vertical) jouent beaucoup sur la vitesse d’atténuation des vibrations. 

Coté technique la première des précautions est de déclencher avec une télécommande ou avec le retardateur. La deuxième est de d’abord lever le miroir, puis de déclencher.

Mais il existe une variante que l’on peut mettre en œuvre quand on travaille à l’intérieur et qui a l'avantage de pouvoir 'gérer' toutes les sources de vibrations. Cela consiste à faire le noir complet dans la pièce, à déclencher une expo d'environ 2 secondes puis à déclencher le flash juste avant la fermeture du second rideau. Ceci permet de laisser le temps à toutes les vibrations de s’atténuer avant que le flash ne saisisse la scène. C’est ce que l’on appelle le déclenchement second rideau, bien connu des photographes sportifs, mais utilisé pour d’autres raisons.

Notez que dans ce cas il n’est pas nécessaire de travailler miroir lever (ce qui est appréciable quand on utilise la batterie de l’appareil).

Voici une expérience instructive pour ceux qui pensent que tout cela n'est que pinaillage :
  • Installez votre APN Canon + MP-E 65mm sur votre meilleur support.
  • Connectez l’APN à votre ordinateur en utilisant le logiciel de pilotage à distance « EOS utility ».
  • Activez le mode « live view  shoot » et faites le point au grossissement maximum. 
  • Pour faire une mise au point parfaite ouvrez la fenêtre « Actual Size Window » en cliquant sur la loupe. La fenêtre « Actual Size Windows » vous donne l’image du capteur à l’échelle 1:1. Un pixel du capteur égale un pixel à l’écran.
  • Gardez la fenêtre « Actual Size Window » ouverte et éloignez vous de l’appareil de 1 ou 2 mètres puis tapez du pied parterre.  Alors ?... 
 Et oui, l’image à l’écran bouge chaque fois que vous tapez du pied, même à plus d'un mètre de l'appareil !!

24 novembre 2011

Focus stacking 1

http://upload.wikimedia.org/wikipedia/commons/5/59/Focus_stacking_Tachinid_fly.jpg
Source wikimedia
La macro photographie nous montre des détails incroyables. Mais ces prises de vue souffrent d’une limitation technique : la faible profondeur de champs. En effet, les lois de l’optique font que la profondeur de champ diminue quand le grandissement augmente. Avec un objectif macro comme le Canon MP-E 65 on peut faire varier le grandissement de 1 à 5. Au grandissement maximal (5x) la profondeur de champs varie entre 0.05mm et 0.27mm. Au grandissement minimal (1x) la profondeur de champs varie de 0.4 à 2.25 mm.

On s’en sort tant bien que mal pour photographier des objets plats et parallèles au plan image (le capteur). Mais dès que l’objet a un relief supérieur à 2mm et/ou n’est pas parallèle au capteur on ne peut pas tout avoir net sur la même photo.

Heureusement, le numérique permet de résoudre des problèmes qui n'avaient pas de solution avec l’argentique. Les panoramas, les photos à haute dynamique (HDR) et  la macro en sont les exemples les plus flagrants.

Dans le cas de la macro il existe des logiciels de « Focus Stacking » qui permettent de créer une image entièrement nette à partir d’un groupe de photos dont chacune est nette sur une partie différente de l’objet.

Cette fonction fait partie de PhotoShop depuis la version 11 CS4. Un des points forts de PhotoShop est qu’il peut travailler sur les fichiers RAW directement. Il existe aussi un logiciel gratuit : CombineZP.
Mais quel que soit le logiciel les prises de vue doivent être parfaites.
  • Réglage de l’ouverture. Il est impératif d’avoir les caractéristiques de l’objectif afin de l’exploiter dans la zone où il est le plus performant. Attention on ne recadre pas entre chaque photo pour avoir le net au centre ! Certaines photos seront retenues dans le résultat final pour leur partie nette qui sera en bordure. Il faut donc que les caractéristiques sur les bords soit très acceptables.
    Par exemple, pour les objectifs macro de Canon (EF 100mm f/2.8 et MP-E 65mm f/2.8 1-5x), il faut rester entre f/4 et f/8 avec un optimum à f/5.6. 
  • Réglage de la sensibilité. Il est important de savoir à partir de quand le bruit apparait pour se tenir en dessous.
  • Le temps d'exposition est déterminé expérimentalement suivant la part que l’on veut donner à l’éclairage naturel.
  • L’appareil réglera le flash. (Quand c'est possible je declenche au second rideau)
Avec des profondeurs de champs aussi faibles il est absolument impensable de toucher à l’appareil entre deux photos. Pour éviter cela j’utilise le logiciel Canon EOS Utility (livré avec le 5D MK2) qui permet de piloter l’appareil à distance via le câble usb. Les avantages sont les suivants :
  • Réglages de tout sans toucher l’appareil.
  • Prévisualisation de l’image sur l’écran du PC.  On peut mieux juger de la mise au point.
  • Pour permettre la prévisualisation l’appareil est mis en mode live-view. Dans se mode (consommateur de batterie) le miroir est maintenu en position levée. L’avantage est qu’au déclenchement il y aura moins de vibrations puisque miroir est déjà levé.

Les prises de vue s’effectue ainsi : (Pour un usage avec le rail StackShot voir cette page)
  1. Comme on travaille en manuel ou en priorité à l’ouverture tous les réglages de l’appareil sont accessibles. Il faut vérifier qu’ils sont tous corrects.
  2. Faire une première mise au point sur la partie la plus proche du sujet.
  3. Procéder aux réglages cadrage/flash/temps d’expo.
  4. En partant de la mise au point sur la partie la plus proche de l’objet, et avec le réglage de la mise au point via le logiciel, on compte combien de ‘pas’ de mise au point il faudra faire pour couvrir tout le sujet.
  5. Revenir à la mise au point de départ.
  6. Enchainer, sans toucher à rien (sauf la souris !) : déclencher, déplacer la mise au point, déclencher, déplacer la mise au point ect… autant de fois que prévue a l’étape #4.
Variante 1 : Au lieu de changer la distance de mise au point entre chaque photo, on peut faire avancer l’appareil. Malheureusement avancer l’appareil de 1/10eme de millimètre entre chaque photo est impossible. La solution est alors le rail macro, à condition qu’il soit fixé sur un support très stable. En fixant l'appareil sur le rail il faut s'assurer que l'axe de déplacement du rail soit parallèle à l'axe optique.

Variante 2 : Au lieu de changer la distance de mise au point ou de déplacer l'appareil, on peut déplacer l’objet. Bien souvent il est moins lourd que le boitier + objectif + flash. Mais la précision requise est  toujours de l'ordre du 1/10eme de millimètre et la solution est toujours le rail, mais avec la contrainte du poids en moins. Il est impératif que le déplacement de l'objet se fasse suivant l'axe optique.

Dans l'absolu théorique le deplacement de l'appareil, ou du sujet, est préférable à la modification de la distance de mise au point. Mais les photos prises ainsi nécessitent systématiquement un réalignement puisque le cadrage change à chaque vue. Dans la pratique on utilise ces variantes uniquement quand il n'est pas possible de télécommander la mise au point de l'objectif. C'est le cas avec l'objectif MP-E 65mm. (M pour Manuel)

Si tout s’est bien passé on a un ensemble de photos (de 2 ou 3 à plus d'une dizaine) prêt à être importé dans un logiciel pour effectuer le focus-stacking.
 

06 novembre 2011

Sur les rails


La macro avec l'objectif MP-E 65 de Canon est à la fois un régal et un cauchemar!
Un régal car quand les résultats sont là ils sont incroyables.
Un cauchemar car pour obtenir ces résultats tout est compliqué (et cher).

Si on veut garder toute la définition du MP-E 65 if faut l'exploiter entre f/4 et f/8. Bien sûr dans la course à la profondeur de champs on prendra f/8. Mais voila ce que dit la table des profondeurs de champs (valeurs en mm)

1x
3x
5x
f/4
0.56
0.124
0.067
f/8
1.12
0.249
0.134
f/11
1.58
0.352
0.19
(valeurs pour un cercle de confusion de 0.035mm)

Pour faire du focus stacking à 1x et f/8 il faut être capable de déplacer l’appareil de 1mm à chaque photo. C’est jouable. Mais à 5x et toujours à f/8 il faut le déplacer de 0.1mm. Là c’est beaucoup plus difficile.

Quels rails macro permettent de déplacer l’appareil de 1mm, de 1/4 de mm, de 1/10 mm ?

Notons que, indépendamment de la précision du rail, il faut être certain que le réglage du rail ne  dérègle rien d’autre. Par exemple, si tourner une molette pour avancer le plateau du rail de 1/10 de mm dérègle le trépied de 2/10 mm on aura tout faux ! Il faut non seulement un rail macro précis mais aussi un support très stable, aussi bien pour l’appareil que pour le sujet.

  • Prenons le rail Castel-L de Novoflex (à 190 €).  A chaque tour de molette le chariot avance de 15mm.  Donc 1/8 de tour avance de 1.8mm c’est énorme. Suffisant pour faire la mise au point mais très insuffisant pour faire du stacking même à 1x et f/11

  • Passons au rail B150-B de Really Right Stuff (à 350$). La doc nous dit qu’un tour de vis avance le chariot de 1.25mm. Il faut faire 1/10 de tour pour avancer de 0.125 mm, ce qui nous permettrait de faire du 5x à f/8. Malheureusement, pour ce prix, la molette n’est pas graduée. En faisant une marque sur la molette on peut juger le 1/4 de tout et même le 1/8 de tour mais pas le 1/10.
     
  • Finissons avec le rail motorisé StackShot de cognisys (à 525$ + 45$ de câble). Moteur pas à pas avec une précision de 0.001mm (1µm) commande à distance, programmation de l’avance et du déclenchement. Certes c’est plus cher mais c’est le meilleur et à mon avis la seule solution pour faire du focus stacking avec le MP-E 65.

A vous de voir...

Systeme macro utilisant un MP-E 65 et un double rail motorisé.

03 octobre 2011

Canon MP-E 65mm f/2.8 1-5x Macro

Voici quelques 'trucs' bons à savoir avant d'acheter l'objectif macro MP-E 65mm de Canon....
  1. photo: source wikipedia
    L’objectif Canon MP-E 65mm f/2.8 1-5x Macro est un objectif totalement dédié à la macro photographie. Son domaine commence là où les autres objectifs macro s’arrêtent, et contrairement à ces autres objectifs macro il ne peut pas servir à faire des photos classiques. L’objet à photographier doit se situer entre 10 cm et 4 cm de la lentille frontale de l’objectif.

  2. Il est écrit que c’est un objectif à mise au point manuelle : C’est faux ! Il n’y a ni bague ni système de mise au point, ni automatique ni manuel. La mise au point se fait en déplaçant l’objet ou l’appareil. Une des conséquences est que la mise au point n’est pas pilotable à distance par le logiciel « EOS utilities » comme on peut le faire avec les autres objectifs même en mode mise au point manuelle. Ce qui complique les choses pour le « focus stacking ».

  3. La profondeur de champ varie de 2.2 mm à 0.05mm suivant la combinaison entre le rapport d’agrandissement (1x à 5x) et l’ouverture (f/2.8 à f/16).  Autrement dit c’est un objectif inutilisable sans pied ET sans rail de mise au point. De plus, la télécommande (ou le retardateur ou le logiciel de pilotage à distance) s’impose même si on utilise un pied et que l’on déclenche miroir déjà levé.

  4. L’ouverture affichée par l’appareil correspond à l’ouverture ‘géométrique’ du diaphragme. Du point de vue lumière le diaphragme semble d’autant plus fermé que le grandissement est important. La formule suivante donne la relation : 
    f-réel = f-affiché x (grandissement + 1)
    Exemple : Si l’appareil indique f/8 avec un grandissement de 3 cela correspond d’un point de vu lumière à f/32.  On peut atteindre ainsi f/96. 
    Ce phénomène a deux conséquences :
    * Un flash dédié macro est rapidement une obligation
    * Pendant la visée on est en théorie à  f/2.8 mais à 1x on est en fait à f/5.6 et à 5x on est à f/16.8. La visée n’est donc pas très lumineuse. Il est inutile d’utiliser le bouton de test de la profondeur de champs : on n’y voit plus rien !
 En résumé :
-         Pas de mise au point,
-         Très faible profondeur de champs
-         Très grande proximité avec le sujet
-         Pied + Rail + télécommande + miroir levé
-         Visée peu lumineuse
-         Flash macro presque obligatoire
C’est donc un objectif de studio ou même de labo.

Une fois que l’on sait cela, c’est un super objectif ! Pour en tirer le meilleur il faut rester entre f/4 et f/8.
Voici quelques exemples:
Accessoires pour de Macro :
Ne pas oublier qu'un 5D MK2 + MP-E 65 + Flash MT-24EX approche les 3kg.
La doc de l'objectif.

Un mémo des propriétés de l'objectif.


09 septembre 2011

optWare sur QNAP


J’utilise un QNAP TS259 comme serveur de fichiers dans mon réseau perso. La force et la faiblesse du système de QNAP c’est que beaucoup de choses sont restaurées dans leur état de base à chaque reboot à partir d'une mémoire flash. Ceci protège contre de fausses manips mais rend difficile toute configuration personnelle. Il existe des méthodes pour que ces modifs persistent d’un reboot à l’autre. Mais aucune n'est totalement efficace en cas de mise à jour du firmware.

optWare est un system de gestion de packages adapté aux systèmes Linux embarqués. Il peut être installé par l’intermédiaire d'un package standard (QPKG) de Qnap.Une fois le package optWare installé, on peut utiliser en ligne de commande ipkg pour accéder à plus d’un millier de logiciels compilés pour Intel ou ARM (suivant le type de QNAP) et qui fonctionnent entièrement dans /opt (binaire, config, librairies ect). Tout l’intérêt c’est que le contenu de /opt n’est modifié n’y au reboot n’y à l’occasion d’une mise à jour du firmware.

Le seul problème à résoudre est comment lancer à chaque boot du QNAP les daemons installés via ipkg de optWare (bind, openssh, ect) ? Heureusement QNAP propose un ‘hook’ nommé autorun.sh Dans sa procedure de boot le Qnap appelle ce script. A vous d'y faire ce qui vous arrange.

Voici la procédure pour le mettre en place de la manière la plus simple et la plus efficace possible.

1) A faire une seule fois

ATTENTION
  1. suivant la configuration disque et le modèle de votre QNAP, ce qui chez moi s'appelle MD0_DATA peut, par exemple, s’appeler HDA_DATA chez vous. A vous de trouver l'équivalent et d’adapter ce qui suit. 
  2. De même ce qui chez moi s’appelle /dev/sdx6 sur mon Qnap peut s’appeler /dev/mtdblock5 sur le votre.
Créer un répertoire
mkdir /share/MD0_DATA/.qpkg/autorun
Entrer dans ce répertoire
cd /share/MD0_DATA/.qpkg/autorun
Créer les 3 scripts shell : autorun.sh run.sh et restore_autorun.sh

Le script autorun.sh
#!/bin/sh 
RUN=/share/MD0_DATA/.qpkg/autorun/run.sh 
[ -x $RUN ] && $RUN
Le script run.sh
#!/bin/sh

RUNDIR="$( cd -P "$( dirname "$0" )" && pwd )"
echo "RUN: " `date` >> $RUNDIR/log.txt

#Start all optWare packages
for i in /opt/etc/init.d/S??* ;do              

     case "$i" in
        *.sh)
            # Source shell script for speed.
            (
                trap - INT QUIT TSTP
                set start 
                . $i
            )
            ;;
        *)
            # No sh extension, so fork subprocess.
            [ -f $i ] && $i start
            ;;
    esac
done
Le script restore_autorun.sh
#!/bin/sh
cd /
mount /dev/sdx6 /tmp/config
cp /share/MD0_DATA/.qpkg/autorun/autorun.sh  /tmp/config/autorun.sh
ls -l  /tmp/config
umount /tmp/config
Rendre les 3 scripts exécutables
chmod +x *.sh

2) A faire la première fois et après chaque changement de firmware

Exécuter cette commande depuis la ligne de commande du Qnap:
/share/MD0_DATA/.qpkg/autorun/restore_autorun.sh
Ceci va copier dans la mémoire flash (dans mon cas /dev/sdx6) le fichier autoruns.sh qui sera appeler à chaque boot.
Ce fichier a pour rôle d'appeler notre run.sh qui effectue le véritable travail.

Pourquoi ne pas tout mettre dans autorun.sh ?
- La place dans la mémoire flash est limité.
- L’accès à la mémoire flash n'est pas immédiat. Il faut d’abord la monter. Ce qui rend l’édition du fichier autoruns.sh pas pratique.

3) Adapter run.sh à vos besoins

Éditez directement le script "/share/HDA_DATA/.qpkg/autorun/run.sh" pour démarrer, initialiser ce qu’il vous plaira.
La version présenté ci-dessus démarre tous les daemons installés par optWare et qui ont un script de démarrage dans /opt/etc/init.d (Tous les packages de optWare ne mettent pas leut script de démarrage là : Lire la doc !)


24 août 2011

HG + SSH


Dans le cas où on utilise Mercurial dans un mode client/serveur il faut choisir un protocole de communication entre les clients et le serveur. Cette page récapitule les options possibles.

Si on ne veut pas installer des applications supplémentaires (Rhodecode, hgweb, hg-ssh ect…) la seule solution efficace est ssh. Mais c’est aussi la solution la moins documentée !

Le principe de fonctionnement de hg + ssh est le suivant :
Le hg coté client va utiliser ssh pour exécuter les commandes hg coté serveur et communiquer avec.

Le problème c’est que des commande comme celle-ci on n’a pas envie de les taper ni de rentrer le mot de passe à chaque fois.

“C:\Program Files\TortoiseHg\TortoisePlink.exe” -ssh -2 -i “C:\Documents and Settings\All Users\Documents\ssh\hg\id_rsa.ppk" hg@mon.domaine.com “hg -R /home/hg/repo1 serve –stdio”

Pour automatiser il faut :

  • Utiliser un client graphique. Il s’occupera de construire la commande et de l’exécuter.  Le meilleur des clients graphiques est TortoiseHg
  • Utiliser ssh avec une paire de clefs publique/privée pour éviter de taper le mot de passe à chaque commande.
1) Installation de Mercurial

On partira du principe que le serveur est sous Unix et le client sous Windows.

* L’installation de TortoiseHg sur le poste Windows n’est pas un problème. Il inclut tout : Mercurial, l'interface graphique et même le client ssh : TortoisePlink.exe (mais on peut en utiliser un autre).
* L'installation de Mercurial sur le serveur Unix est basique. Il suffit d'installer le package correspondant à son Unix ou à sa distribution Linux. (Il faut avoir python 2.6+ deja installé).


2) La paire de clefs publique/privée

Il faut ensuite créer la paire de clefs, déposer la clef publique sur le serveur Unix et expliquer à TortoisePlink ou trouver la clef privée. Attention la clef privée doit être au format ppk. Ce format de clef est propre à PuTTY, et TortoisePlink est basé sur le Plink de PuTTY.

Pour générer cette paire de clefs il faut utiliser puttygen, qui ne fait pas partie de TortoiseHg mais de de PuTTY.  Voir cette page sur comment générer cette paire de clefs avec puttygen.

Important : Pour simplifier ne pas attribuer de passphrase à la clef privée.

Par la suite on supposera que les noms de fichiers pour la paire de clefs sont:
   Publique : hg_rsa.pub
   Privée : hg_rsa.ppk

Déposer la clef publique sur le serveur Unix dans le répertoire de l’utilisateur dédié à hg. En principe on crée un utilisateur nommé ‘hg’ et les repository sont stockés dans son home directory.  Donc on dépose la clef publique hg_rsa.pub dans le répertoire /home/hg/.ssh  du serveur.

Ensuite il faut ajouter cette clef publique à la fin du fichier /home/hg/.ssh/authorized_keys
   cat hg_rsa.pub >> authorized_keys
On peut ensuite supprimer le fichier hg_rsa.pub coté serveur
   rm hg_rsa.pub



3) Mercurial.ini
Il faut maintenant expliquer à Hg comment utiliser ces clefs.
Dans le fichier %USERPROFILE%\Mercurial.ini ajouter dans la section [ui] la ligne

ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -i "C:\Documents and Settings\Path\To\hg_rsa.ppk"

4) Init + Clone
Coté serveur, en utilisant le user dédié à hg, créer un repository vide:

cd /home/hg
hg init PremierTest

Coté client créer le repertoire PremierTest
Click bouton droit sur ce répertoire puis dans le menu contextuel sélectionner TortoiseHg > Clone ..



Remplacer le contenu du champ « Source » par   
   ssh://hg@mon.serveur.com//home/hg/PremierTest
ou  
   ssh://hg@mon.serveur.com/PremierTest
(en supposant que votre utilisateur soit hg)

ATTENTION : 
  Ne pas oublier le nom du user coté Unix (ici hg)
  Respecter la case du path coté Unix.  
  C'est bien un double / ou un simple / entre le nom du serveur et le path

Quand le path commence par un double / cela signifie qu'il est absolu.
Quand il commence par un simple / cela signifie qu'il est relatif au home directory du user (ici 'hg')

Un path relatif est moins dépendant des variations de l'organisation sur le disque du serveur et est donc préférable car plus stable.

Puis cliquer sur le bouton "Clone".

A partir de là il ne sera plus nécessaire de faire référence à ssh ou au nom du serveur. TortoiseHg a tout enregistré et générera les commandes ssh adéquates.

5) Apprendre !

Voici un très bon tutoriel (plein d'humour) sur Mercurial. Il ne présente que l'utilisation de la ligne de commande (hg). Mais la conversion en clicks sur l'interface graphique de TortoiseHg est facile.


23 juillet 2011

Reverse avec apktool

Si, pour vous instruire sur Android, vous avez regardé le contenu d’un fichier apk (qui est en fait un fichier zip) vous avez constaté que les fichiers texte, comme les xml, sont illisibles. Heureusement il y a apktool !

Apktool est une application open source, écrite en java, qui permet de faire du reverse engineering sur des applications Android (apk).

Attention son téléchargent se fait en deux temps :
  1. Le fichier java apktool.jar, le même quelle que soit la plateforme Win/Mac/Linux.
    Le nom de l’archive qui contient ce fichier est de la forme apktool<x.y.z>.tar.bz2
  2. Un script et  un binaire (dépendant de la plateforme) pour lancer l’exécution du jar.
    Le nom de l’archive qui contient ce fichier est de la forme apktool-install-<plateforme>-r<xx>-brut1.tar.bz2
On copy l’ensemble de ces fichiers dans le même répertoire. L’idéal est d'avoir ce répertoire dans le PATH
Sous Windows on a donc : apktool.jar + apktool.bat + aapt.exe

USAGE 
Ouvrir une console (boite dos) et taper ( sans oublier le 'd' )

apktool  d  \path\to\application.apk

Un répertoire avec le nom de l’application a été créé dans le repertoire courant. Il contient les fichiers en clair. Il ne vous reste plus qu'a explorer !...
(Pour plus de détails sur les paramètres taper juste : apktool)

Où est le code java ?
Les fichiers java sont présentés sous forme de fichiers "smali". Il s'agit du code assembleur utilisé par la machine virtuelle Dalvik.

Application utile:
Il existe des sites web qui vous proposent de créer enligne votre application Android (et iPhone). Les applications ainsi générées nécessitent des droits très surprenant sans rapport avec les besoins réel de l'application. Que contient le fichier .apk à la fin ? Grâce à apktools vous allez découvrir tout ce qui est ajouté (en cachette) à votre application (pub, appel de numéro, liens vers d'autre sites, player étrange, ect) et tout ce qui en fait n'est pas dans votre application mais sur des serveurs.
Donc, grâce à apktool, j'ai appris qu'il ne fallait surtout pas utiliser ces services : trop gratuits pour être honnêtes  !!
Pour aller plus loin...


16 juillet 2011

Bug du SDK r12 d'Android


Quand on utilise le SDK r12 pour Android et que l’on tente d’exécuter un programme Android depuis Eclipse on obtient cette erreur : 

[2011-07-10 21:00:51 - Emulator] invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
[2011-07-10 21:00:51 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.

Le Paramètre invalide Files\Android\android-sdk\tools/emulator-arm.exe est en fait la deuxième partie de C:\Program Files\Android\... coupé par l'espace. Le problème vient donc de l’espace dans le path du SDK: C:\Program Files\Android\android-sdk

Solution :

1) Ouvrir une boite dos et taper la commande 
dir /x \ 
pour déterminer le chemin au format dos du répertoire « \Program Files » 

>dir /x \ 

Répertoire de C:\
17/01/2011  22:45       0    AUTOEXEC.BAT
17/01/2011  22:45       0    CONFIG.SYS 
24/01/2011  10:44    <REP>   DOCUME~1     Documents and Settings
10/07/2011  10:54    <REP>   PROGRA~1     Program Files 
17/06/2011  02:07    <REP>                WINDOWS
Ici le nom dos est “PROGRA~1

2) Dans Eclipse cliquer dans le menu sur : Window > Preferences > Android
Dans le champ SDK Location remplacer \Program Files\ par \PROGRA~1\

10 juillet 2011

Android: Versions, Api, Noms

Il n’est pas toujours facile de se repérer entre les numéros de version d’Android, leur nom de code et le « Api Level ».
  • L’Api level est le seul qui techniquement à une influence.Si ce numéro ne change pas c’est qu’aucune fonction n’est apparue, ou n’a disparue.
  • Le nom de code regroupe plusieurs versions ayant en gros les mêmes fonctionnalités.
  • Le numéro de version, comme l’Api level , montre l’évolution de logiciel mais avec en plus une hiérarchisation des changements.
2003 Octobre : Création de Android Inc.
2005 Aout: Rachat de Android Inc. par Google.
2005 Novembre: Création du consortium Open Handset Alliance.

28 février 2011

Debuter avec Android


PRESREQUIS
  1. Connaitre java et XML. Le noyau d’Android est bien un linux, mais l’environnement d’exécution est sous le contrôle d’une machine virtuelle java, un peu spéciale, nommé Dalvik.
  2. Un téléphone et/ou une tablette tournant sous Android 2.2 ou supérieur. Ceci n’est pas absolument obligatoire car le SDK Android inclus un émulateur. Mais c’est tout de même plus gratifiant d’utiliser ses applications sur un véritable terminal Android.
  3. Lire l’anglais. Ceci est un prés-requis pour tout développeur, quelque soit le langage et  l’environnement de développement. Mais encore plus quand le système est nouveau et que les ouvrages et sites web francophones de qualité ne foisonnent pas encore.
INSTALLATION
  1. JAVA
    Le classique JRE (Java Runtime Environnement) ne suffit pas, il faut absolument  installer le JDK (Java Development Kit). Mais pour développer sous Android inutile de prendre un bundle (JEE, FX ou Netbeam) le JDK SE (Standard Edition) suffit. Bien sur, le JDK inclut le JRE.

    Important: Pour éviter des problèmes ultérieurs commencez par désinstaller votre java actuel, puis installez la dernière version du Java SE Development Kit.

  2. ANDROID
    La première chose à faire est de télécharger et installer le SDK starter package.

    Si vous êtes sous Windows et avez téléchargé l’exe, l’étape suivante se lancera automatiquement. Dans tous les autre cas il vous faudra lancer le SDK Manager qui s’occupera de télécharger les autres éléments du SDK en fonction de vos besoins (ce qui peut être long...). Vous pouvez, par exemple, ne sélectionner que les émulateurs Android 2.2 et supérieur, sauf la 2.3.1 (API version 9) qui est obsolète.

    Important: Si à l'installation le SDK Android vous dit qu'il ne trouve pas pas le JDK java cliquez sur le bouton Back  puis sur le bouton Next, et là il trouve le JDK !

  3. CVS / SVN / MERCURIAL (optionel)
    Que vous vouliez profiter du code de d’autres projets open source, ou publier votre projet sur GoogleCode ou SourceForge ou Savannah, dans tous les cas il vous faudra installer au moins un système de contrôle de version. Les plus connus étant :
    Si vous participez à plusieurs projets vous pourrez êtres amenes à installer plusieurs systèmes de contrôle de version.

  4. ECLIPSE (optionel mais vivement recommandé)
    Il est tout à fait possible de se passer d’Eclipse. On peut juste utiliser un éditeur de texte et la ligne de commande. Mais Eclipse simplifie vraiment la tache. Il est vrai qu’au début l’interface visuelle d’Eclipse est intimidante. Mais ça vaut le coup de se familiariser avec Eclipse car on peut l’utiliser dans bien des domaines (Java, C/C++, php, javascript ect)
    • IDE : Comme pour le JDK, il existe plusieurs bundles pour Eclipse. Mais pour developper sous Android il suffit de prendre le plus petit, et le plus simple, c'est à dire Eclipse IDE for Java Developers
    • Plugins : Grâce à un grand choix de plugins Eclipse est un environnement de développement très versatile.
      Il vous faudra installer au moins le plugin ADT dédié au développement sous Android.
      Attention que la version du plugin ADT soit celle qui va avec la version du SDK Android. 
    • La prise en charge de CVS est intégrée nativement à Eclipse. Pour les autres systèmes de contrôle de version il existe des plugins spécifiques : SVN, Mercurial 
      
APPRENTISSAGE

Comme toute application Android est écrite en java il faut connaitre un minimum de java. Grace au NDK il est possible de développer en langages compilés (donc en C/C++) mais les choses ne sont pas forcement plus simples (ni plus rapides).

SUPPORT

Si vous avez besoin d’aide plusieurs canaux sont disponibles. Au niveaux forums pour développeurs je vous conseille :
Rappelez vous que pour espérer obtenir une réponse il faut
1)      qu’elle soit synthétique. Hors de question d’envoyer 100 lignes de code en disant ça ne marche pas. Pourquoi ?
2)      qu’elle corresponde à un véritable problème. Donc, il faut avoir lu les documentations, fait quelques recherches avec Google, et expérimenté diverses options avant de poser sa question.


A vous de jouer !

    NOHUP ?

    nohup est une commande Unix qui permet de protéger un processus du signal SIGHUP (Signal Hangup). L’usage principal de cette commande est de protéger un processus du SIGHUP envoyé par le shell quand l’utilisateur se déconnecte. Ainsi, le processus continue de s’exécuter en absence de celui qui l’a initié.

    > nohup wget http://download.fedoraproject.org/pub/Fedora-14-i386-DVD.iso &
    > logout

    L’idée de ce blog est de protéger des idées de l’oublie afin qu’elles fassent leurs chemins en mon absence, et que je puisse les retrouver à mon retour.

    Notes: la commande screen est une sorte de nohup appliqué au shell lui-même.