Bienvenue sur Smartphone France Android Edition
Actuellement, 67 visiteurs en ligne
Vous utilisez un bloqueur de publicités ? Félicitations :)
Actualités du monde Android

Retour au sommaire du site

  Ajoutez des morceaux de code en C aux applications Android 1.6
 Publié le 29/09/2009 à 21:30 - 9 commentaires ...

Si le JAVA n'est pas trop votre truc et que vous désirez développer en C pour Android vous serez certainement heureux d'apprendre la disponibilité récente du Android 1.6 NDK, Release 1. Ce complément au Android 1.6 SDK, Release 1 vous permettra en effet d'implanter dans les applications Android des parties de code en C ou C++.

Un outil qui ne s'adresse naturellement pas à la majorité d'entre nous mais qui fera certainement le bonheur de tous ceux qui se sentaient limité par le JAVA pour créer leurs applications.


 30/09/2009 08:44:26 - manitoba
Il faut quand même préciser que le NDK ne permet pas de faire une application complète, ni d'accèder aux fonctions du téléphone.
Hors java, point de salut :-)

Note : le NDK existe déjà depuis la 1.5
 30/09/2009 09:37:47 - Christophe - Le Webmaster ...
Ca veut dire quoi ça : "Ajoutez des morceaux de code en C aux applications Android" ???
 30/09/2009 11:08:54 - Nicholas
Attention : il y a une tres bonne video du dernier google I/O qui explique comment avoir des appli performantes, et qui aborde notamment la programmation C/C++ pour des appli android.
Le principe est extrêmement puissant, le code C compilé étant injecté à la volée dans des pages applicatives contenant du javascript.

Pour les non programmeurs qui tentent juste un petit developpement, ou "les programmeurs du dimanche", il est fortement déconseillé de tenter une telle approche de programmation : on a vite fait de faire n'importe quoi, et surtout de ne pas comprendre ce qui se passe à l'excution. Il faut bien regarder la video suivante : http://code.google.com/intl/fr/events/io/sessions/HowToCodeThee.html

Christophe (et les autres ) : n'hésitez pas à me dire si un exemple un peu plus concret "de vulgarisation" vous intéresse.
 30/09/2009 11:42:11 - Christophe - Le Webmaster ...
Je suis preneur de tout information plus ou moins technique car même les développeurs les plus chevronnés ont été un jour des développeurs du dimanche :)
 30/09/2009 12:04:56 - Nicholas
Exact Christophe :-)
Le mieux est de regarder l'exemple donné à 31min et 40sec dans la video "how do i code thee".
Dans la video, c'est un exemple concret qui implémente un algorithme en javascript, java et C et qui compare les performances entre les 3 solutions. A ce point de la video, c'est "comment implémenter l'algo en C et l'appeler depuis la page applicative".
Ne pas hésiter a poser des questions si besoin
 30/09/2009 12:24:28 - Nicholas
Je vais essayer d'en dire un poil plus, pour ceux qui ne sont pas plus éclairés avec la vidéo de google (ce qui serait étonnant vu la clarté de leur exemple... anyway).

La programmation des appli android permet en javascript de faire référence à des "flag" qui lance une commande java. Il y a donc ce qu'on appelle "injection" de java dans le javascript. C'est un premier tour de "passe passe" qui est très malin.
L'avantage de cette méthode est de pouvoir utiliser du java dans sa page de rendu, ce qui peut permettre des traitements plus optimisé. Javascript est un langage "lent et pauvre" en comparaison du java, il y a donc un interet (parfois) à déporter du code de traitement dans du java plutot que de le laisser en javascript.

Mais Java, on le sait tous, c'est un langage riche... et lent. Très lent en comparaison du C. Il est plus sympa et offre un tas d'avantage (a mon gout) pour développer, mais pas celui de la vitesse d'exécution. Ok... L'idée serait donc de pouvoir faire un bout de traitement lourd en C plutot qu'en java, ca sera plus rapide. Normal.
Là où google frappe un grand coup, c'est qu'ils ont ajouté le mot clé "native" pour la déclaration d'une méthode java. Et de fait, on n'exécute plus une méthode java, mais du code écrit en C, qui est compilé préalablement, et encapsulé dans une classe java référente.

Par conséquent, vu que javascript peut injecter du java, et java du C, on peut injecter du code C compilé dans une page applicative, en appelant une méthode par son nom de flag. C'est futé, et super puissant... et dangereux, surtout pour la pérénité de l'application, selon si la méthode écrite en C utilisent des lib externes.
Dans ce cas, elle peut etre impactée en cas de mise à jour du framework ou d'une lib et ne plus fonctionner, sans pour autant que l'appli java ne compile plus : le compilateur java ne traite pas la partie en C car il ne la connait pas. L'application plante alors plus ou moins sauvagement.

Il y a donc un intérêt énorme, comme dans l'exemple donné par google, quand il s'agit de faire des traitements algorithmiquement lourd et autonome au maximum car on gagne en temps d'exécution de façon notable, mais il faut utiliser ce "subterfuge" avec parcimonie, le risque étant de vite avoir une appli lourde à maintenir après chaque mise à jour.

On peut donc avec le NDK ajouter des bouts de code en C dans les applications. Pour nous, utilisateur, veut dire que des mises à jour d'appli devraient sans doute arriver, pour les rendre beaucoup plus performantes.
 30/09/2009 13:38:45 - Osaris
Je comprends pas ce que tu veux dire avec le Javascript ? Tu parles des applis webs, qui tu lances dans le navigateurs ?

Bon sinon ce qu'il y a de vraiment intéressant dans cette nouvelle version du NDK c'est qu'elle intégre maintenant des headers pour l'utilisation direct en code natif des capacité OpenGL de l'appareil, ce qui devrait permettre de faire des applications multimédia ou jeux 3D beaucoup plus performants.
 30/09/2009 14:06:20 - Nicholas
Je parle des appli résidentes qui ont leur propres JSP. Le principe est exactement le même pour openGL que pour tout bout de code C accessible directement ou dans des lib.
 30/09/2009 14:56:41 - Nicholas
Oops, pas JSP mais juste HTML... désolé, tooManyTasksException ^_^

Dorénavant pour publier des commentaires il faut posséder un compte sur le Forum du site et s'authentifier

Créer un compte sur le forum du site

S'authentifier sur le site avec son compte personnel




Retour à la page principale du site