Celui qui souhaite s’attaquer au développement Android va trouver un grand nombre de tutoriaux, livres et autres formations en ligne dédié au développement d’applications Android en langage Java. Effectivement, Java est le langage de prédilection de la plateforme pour créer des applications. Or, il existe une manière plus obscure de créer des applications pour la plateforme Android, notamment utilisée pour le portage d’applications existantes sur d’autres environnements : le langage C et C++ et le NDK (Native Development Kit). Et pour qui souhaite s’engager dans cette voie, les sources d’information et tutoriaux sont encore moins nombreuses que celles destinées aux outils fournis en standard dans le kit de développement SDK Android.
Une nouvelle source bien complète, en anglais, vient de paraître : Android NDK Beginner’s Guide de Sylvain Ratabouil. Si le nom de l’auteur a une consonance francophone, c’est tout simplement parce qu’il est français, consultant IT chez Valtech Technologies.
Cet ouvrage s’adresse spécifiquement aux développeurs d’applications Android. L’auteur présume que vous ayez des connaissances avec les langages C/C++, les pointeurs, la programmation objet et bien évidemment de la plateforme Android. Il n’est pas demandé d’avoir un niveau d’expertise dans chaque domaine ! D’ailleurs, si vous ne connaissez pas parfaitement l’une de ses technologies, l’auteur est tout de même pédagogue. il explique, par exemple, comment créer son environnement de développement et de compilation sur les plateformes Windows, Linux et MacOS ! Certaines notions C/C++ sont également décrites pour permettre la compréhension au plus grand nombre.
Ce livre couvrira les points suivants :
- configuration de l’environnement
- créer, compiler et déployer des projets natifs
- interfacer Java et C/C++ via JNI
- écrire des applications Android uniquement en C/C++
- les rendus graphiques avec OpenGL ES
- les rendus audio avec OpenSL ES
- gérer les évènements et interfaces d’entrée
- porter une librairie existante C/C++ sur Android
- toucher du doigt les optimisations de jeux 2D
- debogguer ses applications et problèmes récurrents
Ce livre est vraiment une bonne ressource pour qui souhaite connaître les possibilités offertes par le NDK et faire ses premiers pas (et même un peu plus) dans cet univers. Il vous permettra également d’appréhender les problèmes possibles liés à la création d’application natives.
Cet ouvrage accessible au format électronique ou papier aux éditions Pakt est disponible pour un prix allant de 20 à 38€ (pour l’édition papier et électronique).
Votre café et votre dose de tech vous attendent sur WhatsApp chaque matin avec Frandroid.
Bonjour Peter, Si je réagis sur cette news, c'est justement que le sujet m'intéresse, et je ne crache pas sur le travail qui a été réalisé, mais sur le manque de relecture final (le bouquin ne fait pas 800 pages non plus, et il y a beaucoup de code que l'on peut copier-coller). Vu le prix annoncé en version papier, je m'attends quand même à un travail de relecture soigné, et le fait qu'il n'y ait quasiment rien traitant du NDK sur le net ne peut pas être une excuse valable.Maintenant mon commentaire était là pour prévenir ceux pour qui 38€ représente une somme conséquente (et il y en a surement plein), de faire attention et peut-être attendre une révision 2 du livre.Et comme tu peux le voir au dessus, ça a servi à quelque chose, vu que l'auteur du livre lui même est venu répondre à mon commentaire. Si il me donne un lien vers une version numérique corrigée du livre, je l'achèterai sur le champ pour supporter son travail :)
Bonjour Guildem Je débute la programmation (10 ans de pratique en c++) avec android avec ce livre et je le trouve très bien. Comme vous le dites, si l'on comprend ce qui est écrit, je ne voix pas où une erreur peut se cacher. Ce livre a le mérite d'exister et c'est déjà super, non ? écrire un livre n'est pas simple, cela fait 5 ans que je suis sur l'écriture d'un bouquin sur les maths et la 3d et ça me prend un temps fou ! Merci à M. Ratabouil pour son travail.
Haaaa ! Un humain derrière tout ça ! :D Bah si une correction est faite sur la version électronique, ça m'intéresse bien !
J'ajouterais juste ARMv7 est retro-compatible avec ARMv5. Ainsi, les "programmes ARMv5" tourneront sur les "processeurs ARMv7" (mais sans les fioritures ARMv7 bien entendu comme les instructions VFP ou NEON). L'inverse n'est en revanche pas vrai.
Je n'ai pas encore eu les retours de l'éditeur pour le faire aboutir mais un errata était prévu pour corriger les quelques erreurs qui se sont glissées dans l'édition finale. Cela est déplaisant j'en conviens et en suis désolé. J'active la chose avec l'éditeur pour que cela soit réglé vraiment au plus vite.
Bonjour à tous (je suis un visiteur régulier sur Frandroid, merci pour l'article :D). Je confirme, le code natif ne s'exécute pas dans la VM, c-a-d qu'il n'est pas interprété par la VM mais est exécuté "nativement" par le processeur. Le code natif est appelé via la VM (qui n'est au fond elle-même que du code natif quand on y réfléchit), ou éventuellement tourne dans son propre thread (qui est de toute façon créé directement ou indirectement par une VM, comme avec le "native_app glue"). De plus du code natif NDK peut appeler en retour du code Java interprété lui dans la VM. Donc Java n'est jamais très loin mais le code NDK est vraiment exécuté "nativement" sans interprétation. C'est donc intéressant pour deux choses: obtenir les performances maximales pour des applications ou portions d'applications nécessitant des calculs complexes ou lourds, ou également pour porter des librairies C/C++ existantes provenant d'autres écosystèmes.
Bah ouais, impossible de faire marcher le code du premier coup, ya des noms de classes qui changent, des caractères qui sont pas au bon endroit (avec un ide et des connaissances c++ tu les vois rapidement, mais quand même), ... pas top top vu le prix.
"les sources d’information et tutoriaux sont encore moins nombreuses que celles destinées aux outils fournis en standard" Cela sous-entend que pour le SDK il n'y a pas beaucoup de documentation, ce qui est l'inverse de ce qui est précisé dans la première phrase: " un grand nombre de tutoriaux, livres et autres formations en ligne dédié ". Je sais, c'est de la compréhension de français, c'est difficile ...
Des erreurs ? O_o c'est dingue ça ... ils peuvent pas se relire ... :(
+1 je viens de découvrir ce livre, j'en aurais eu bien besoin plus tôt pour gagner du temps ^^ je vais l'acheter sans tarder.
en effet, c'est 1 compilation par jeu d'instructions CPU. Il y a plusieurs jeux d'instructions ARM, et le x86 est déjà supporté par le NDK. la dernière version du NDK permet de compiler pour ARMv5E, ARMv7, x86, et tout récemment MIPS.
c'est un peu plus compliqué que ça. Mais en effet elle possèdent quand même leur propre instance de la Dalvik Virtual Machine ! ;)
Le code natif ne tourne pas dans la VM par contre l'application tourne toujours dans la VM. On ne peut as faire du code 100% natif, il ya des mecanisme dans le NDK qui permettent de creer une "NativeActivity" avec le native_app_glue. D'ailleur si tu as déjà utilisé le NDK tu aurais du te rendre compte qu'on peut accéder à la machine virtuelle JAVA, et appeler des fonction Java à partir du CC++ Sur le bouquin ça fait longtemps que je l'ai acheté en format e-book (ça ne coutait pas bien cher au moment de l'achat). Il est utile si on a besoin de se former rapidement comme cela avait été mon cas. En effet les ressources concernant le NDK sont bien maigre, Google conseille d'utiliser les samples pour comprendre le fonctionnement du NDK. Donc un livre bien pratique qui rassemble un peu tout.
bon bah verdict : le code du bouquin est bourré d'erreurs, ce qui permet de faire des recherches par soi même, mais à 38€ le bouquin... et je ne trouve pas que le texte explicatif soit super bien rédigé... dommage, car en effet, le nombre de sources d'information sur le ndk est vraiment trop léger... surtout vu la puissance du truc !
Non pas du tout, la deuxieme phrase parle bien du NDK sur lequel il y a très peu de ressources.
Tu dois faire une compilation par processeur que tu vises. Au final tu peux faire une compile ARM et x86 seulement, Mais sinon tu peux avoir une compil pour ARM v6, ARMv7, et avec ou sans les calculs floating points avec NEON. Ca permet d'avoir des versions plus optimisés pour les processeurs différents ( c'est ce que je fais pour des traitements de video )
" Celui qui souhaite s’attaquer au développement Android va trouver un grand nombre de tutoriaux, livres et autres formations en ligne dédié au développement d’applications Android en langage Java." " Et pour qui souhaite s’engager dans cette voie, les sources d’information et tutoriaux sont encore moins nombreuses que celles destinées aux outils fournis en standard dans le kit de développement SDK Android. " Ces deux phrases sont un peu contradictoires, non ?
une compilation par archi suffit (ex : ARM ou x86)
Non...tu te trompes.
mais tu deviens dépendant du HW
A ma connaissance, les applis dévelopépes avec le NDK tourne toujours dans la VM.
Je me posais une question sur le NDK : est-ce qu'il n'existe qu'une compilation à réaliser (car finalement c'est du linux sur tous les Android) ou est-ce que la disparité des plateformes fait qu'il faille une compilation pour les différents environnements ? Par exemple à d'éventuelle différences entre un snap simple coeur et et un tegra3 ? Je ne pense pas, mais si quelqu'un a la réponse, je suis preneur ... PS : bon par contre, je pense que l'arrivée d'intel avec son architecture non-ARM va bousculer les choses ...
Dommage que le livre ne soit pas open source. Je connaissais le NDK mais les tutos sur le net dessus ne sont pas florissant :/. @FredBx:disqus On utilise principalement le ndk pour ne pas dépendre de la vm sur le téléphone/ tablette, afin d'augmenter la rapidité de l'application. Exemple sur les IHM ou les jeux.
J'ignorais cette possibilité, tout un programme, c'est le cas de le dire!
Ce contenu est bloqué car vous n'avez pas accepté les cookies et autres traceurs. Ce contenu est fourni par Disqus.
Pour pouvoir le visualiser, vous devez accepter l'usage étant opéré par Disqus avec vos données qui pourront être utilisées pour les finalités suivantes : vous permettre de visualiser et de partager des contenus avec des médias sociaux, favoriser le développement et l'amélioration des produits d'Humanoid et de ses partenaires, vous afficher des publicités personnalisées par rapport à votre profil et activité, vous définir un profil publicitaire personnalisé, mesurer la performance des publicités et du contenu de ce site et mesurer l'audience de ce site (en savoir plus)
En cliquant sur « J’accepte tout », vous consentez aux finalités susmentionnées pour l’ensemble des cookies et autres traceurs déposés par Humanoid et ses partenaires.
Vous gardez la possibilité de retirer votre consentement à tout moment. Pour plus d’informations, nous vous invitons à prendre connaissance de notre Politique cookies.
Gérer mes choix