L'équipe Android de DVP a lu Pro Android C++ with the NDK et vous donne son impression sur cet ouvrage.


J'ai commencé à lire cet ouvrage après avoir déjà commencé deux jours de développement sur la portabilité d'une application iOS utilisant un backend C++ pour la plateforme Android. J'avais déjà donc lu la documentation fournie avec le NDK ainsi qu'un certain nombre d'articles en ligne.

Malgré un environnement de développement déjà en place sous Windows, j'ai découvert plusieurs astuces dans les deux premiers chapitres par exemple la mise en place d'une compilation unique C++ puis Java sous Eclipse. Ces deux chapitres détaillent bien tous les outils nécessaires ainsi qu'une installation spécifique pour chaque plateforme (je n'ai lu pour ma part que la partie Windows).

Les chapitres 3 et 4 sont à destination des débutants pour bien expliquer la communication entre le code Java et C/C++ ainsi que les différents moyens de passer de l'un à l'autre. La présentation de SWIG – très répandu pour la génération automatique de wrapper entre langages – est très appréciée dans un tel ouvrage.

Le chapitre 5 était l'un des plus intéressants pour moi commençant à rencontrer quelques problèmes lors de mon portage et voulant logger ou déboguer mon code natif. La partie Logging est très complète avec un code entièrement fourni d'une classe permettant l'affichage de logging complet sous Eclipse. Les parties debugging et troubleshooting sont relativement courtes, mais précisent bien les pièges rencontrés par de nombreux développeurs lorsqu'ils essayent de déboguer du code natif (point d’arrêt atteint avant l'attachement de ndk-gdb, la non-activation du débogage dans le AndroidManifest, etc.).

Je n'ai par la suite que survolé les chapitres sur les threads ainsi que sur la communication entre processus car je n'en avais pas besoin dans l'immédiat, cependant ils m'ont paru assez complets et comportant de nombreux exemples de code que je pourrai retourner voir lorsque le besoin se fera sentir.

Le chapitre 11 (C++ Support) reprend ce que l'on trouve dans la documentation officielle et n'apporte pas beaucoup plus d'informations, je l'aurais pour ma part placé plus tôt dans l'ouvrage, car les problèmes de compilation qui sont soulignés dans cette partie arrivent souvent très tôt pour des débutants.

Les chapitres 12 et 13 regroupant les informations sur les API natives (par exemple OpenGL) regroupent un grand nombre d'informations cette fois non disponibles dans la documentation officielle. Travaillant sur le portage d'une application utilisant OpenGL, ce fut un grand plus.

La gestion de la mémoire et des objets étant très différente entre Java et C/C++, je trouve que la présentation d'un outil de profiling et d'optimisation est un plus à la fin de cet ouvrage, je ne l'ai cependant pas encore utilisé.

D'une manière globale, je trouve cet ouvrage très bien fait pour les débutants et il se lit facilement en allant à l'essentiel. Pour les développeurs utilisant déjà le NDK, je pense qu'ils n'y trouveront pas forcément leur compte à l’exception peut-être des chapitres sur POSIX.
Avez-vous lu ce livre ? Quelle est votre impression ?

Votre avis nous intéresse.