Androà¯d Studio : Livre, formation, transition. Le retour du ";"

Salut à  tous,


 


En pleine reconversion professionnelle je me forme au développement. Je commence à  être à  l'aise avec le développement iOs et Mac Os. J'ai quelques applications à  mon actif. J'ai réussi à  apprendre en autodidacte, cela dit je suis développeur dans l'âme depuis que j'ai 12 ans. J'ai commencé sur ZX81 (pour ceux qui connaissent).


 


Beaucoup de chemin parcouru depuis là . Même si je n'ai pas choisi le meilleur moment car j'ai subi le passage d'Objectif C à  swift. A peine ai-je commencé à  comprendre les mécanismes d'Objective C que Swift était annoncé. Je me suis rendu à  une Cocoahead ou nombre de dév. ne donnait pas cher de swift. De mon côté j'ai foncé et je ne le regrette pas. J'aimerais bien revoir ceux qui pariais sur l'abandon de swift par apple dans les mois qui devaient suivres.


 


Grâce à  ce site, aux livre d'aaron Hillegass, mais aussi à  iTunes university et à  la plateforme FUN (que certain ici connaissent) j'ai pu asseoir des basses solides pour me lancer dans le développement.


 


Aujourd'hui force est de constater qu'il me faudrait aussi des bases dans l'univers Androà¯d. C'est pourquoi je lance ce sujet pour savoir comment de votre côté vous développez dans cette environnement, quels sont les livres, les formations internet et autres tutos que vous conseillez.


 


Merci de vos retours


 


PS : J'ai déjà  compris que j'allais faire face au retour du ; dans mon code  ::)


Mots clés:

Réponses

  • Un prérequis indispensable pour Android :


     




  • Un prérequis indispensable pour Android :


     


    attachicon.gif9292997-14848557.jpg




    Moi qui ne prend jamais de médicament je suis mal parti...

  • Il va falloir t'y mettre, le dév Android étant une sacré pilule à  avaler !

  • CéroceCéroce Membre, Modérateur
    juin 2016 modifié #5

    Je me suis rendu à  une Cocoahead ou nombre de dév. ne donnait pas cher de swift. De mon côté j'ai foncé et je ne le regrette pas. J'aimerais bien revoir ceux qui pariais sur l'abandon de swift par apple dans les mois qui devaient suivre.

    CocoaHeads Paris, non ?
    Je dirais que beaucoup de développeurs sont de purs techniciens et ne comprennent pas les aspects stratégiques. Malgré tous les défauts de Swift il y a deux ans, il était tout à  fait clair qu'Apple n'allait pas l'abandonner, ne serait-ce qu'à  cause de l'investissement dans llvm qui avait déjà  était fait depuis plusieurs années.
     
     

    Aujourd'hui force est de constater qu'il me faudrait aussi des bases dans l'univers Androà¯d. C'est pourquoi je lance ce sujet pour savoir comment de votre côté vous développez dans cette environnement, quels sont les livres, les formations internet et autres tutos que vous conseillez.

    Personnellement, j'avais essayé de refaire les exercices que je donnais en formation, en utilisant essentiellement la doc de Google. Des choses simples, comme afficher une table, avec des sections " beaucoup plus dur ", puis de la navigation entre vues, essayer de faire des rotations d'écran. C'est en codant qu'on devient codeur! Android s'est beaucoup inspiré d'iOS, même dans les API.


  • CocoaHeads Paris, non ?

    Je dirais que beaucoup de développeurs sont de purs techniciens et ne comprennent pas les aspects stratégiques. 




     


    A la fin de la réunion certain étaient prêt à  parier et à  mettre sur la table leurs parties les plus intimes, enfin une des deux ;-) 


    S'ils ne sont pas bon stratège, ils n'en restent pas moins homme.


     




    Personnellement, j'avais essayé de refaire les exercices que je donnais en formation, en utilisant essentiellement la doc de Google. 




     


    Les solutions présentées par Google ne sont pas à  jour (apparement il y a pas mal de mise à  jour au niveau des layout) : https://developer.android.com/training/basics/firstapp/index.html


     


    Ce que j'ai trouvé de mieux pour le moment c'est :


    https://www.raywenderlich.com/120508/beginning-android-development-tutorial-android-studio

  • NiClouNiClou Membre
    juin 2016 modifié #7


    Je me suis rendu à  une Cocoahead ou nombre de dév. ne donnait pas cher de swift. De mon côté j'ai foncé et je ne le regrette pas. 




     


     


    Au contraire, et je m'avance peut être mais je ne donne pas cher de l'objective C.


    Je pense que d'ici 8 ans (c'est cool 8 nan?), l'objective C ne sera qu'un fardeau que beaucoup d'entreprises traineront comme un boulet à  la cheville d'un prisonnier.


    Edit: 8 puisque ça fait bientôt 2 ans que swift est sorti et que 10 ans de plus pour l'objective C alors que le petit nouveau est arrivé devrait tenir de la prouesse.


  • LarmeLarme Membre


    Au contraire, et je m'avance peut être mais je ne donne pas cher de l'objective C.


    Je pense que d'ici 8 ans (c'est cool 8 nan?), l'objective C ne sera qu'un fardeau que beaucoup d'entreprises traineront comme un boulet à  la cheville d'un prisonnier.


    Edit: 8 puisque ça fait bientôt 2 ans que swift est sorti et que 10 ans de plus pour l'objective C alors que le petit nouveau est arrivé devrait tenir de la prouesse.




     


    Je ne sais pas.

    J'aime beaucoup l'Objective-C, et en me tenant encore un peu à  l'écart du Swift pour l'instant, je trouve qu'il y a encore trop de modifications de ce dernier, même si d'un autre côté, c'est plutôt sympa d'écouter la communauté. Mais quand on regarde que le @selector() ;a changé quelques fois, etc, c'est un peu chiant je trouve d'avoir de la compatibilité à  chaque fois. Et revenir sur des " vieux projets " oubliés (genre le projet qui se met légèrement à  jour chaque année) risque d'être assez rébarbatif en fin de compte.

  • CéroceCéroce Membre, Modérateur
    À mon avis, Objective-C disparaà®tra parce qu'il sera de moins en moins adapté à  la manière de travailler. Par exemple, on constate déjà  l'émergence de la programmation réactive; or les outils apportés par Swift " tels que la programmation fonctionnelle, les structs, les protocoles, voire la surcharge d'opérateur " rendent la conception de tels systèmes plus simple, et la syntaxe bien moins lourde.

    L'Objective-C moderne (avec ARC et les blocs) reste pertinent. Mais à  terme, ce sera l'absence d'implémentation des nouveaux paradigmes qui handicapera Objective-C.
  • Vos commentaires sont intéressants mais ils s'éloignent du sujet ;-)


     


    Là  il s'agit de java mais peut-être qu'un jour les googles' truc comprendrons le swift.


     


    Alors n'hésitez pas si vous aves des pistes pour l'apprentissage et surtout à  faire part de votre expérience. Développez-vous sur les deux plate-formes ? etc...


  • jojolebgjojolebg Membre
    juin 2016 modifié #11

    J'ai fais un peu de dev Android, et je suis très partager.


    Je trouve que la conception de leur api est très bien pensé sur le papier, mais qu'en pratique c'est une plaie sans nom pour le développement.


     


     


    Dans Android, il y a la notion d'Activity (le pendant des UIViewController) et d'Intent (Une sorte de description d'une action, un peu comme un pushViewController).


     


    Chaque Activity représente un écran visible de l'application, et une activité doit émettre un Intent pour demander à  Android d'ouvrir un autre écran. Sur le papier c'est bien conçus, une application peut demander via l'Intent d'ouvrir l'écran précis d'une autre application (si l'autre application fourni des Activity publiques), ou peut créer des Intent génériques du style "Ouvrir une image", ou "Partager un contenu textuel" etc..., et chaque Activity de chaque application doit être déclarées dans le manifest (l'équivalent du Info.plist), en indiquant les types d'Intent que l'application est capable de gérer.


     


    Mais en pratique, pour pouvoir gérer ça, chaque Activity s'exécute dans un processus indépendant, ce qui fait que deux Activity ne peuvent pas partager directement des données non serializables (et de préférence, si les données sont sérialisables, ne pas miser sur des gros volumes de données, car la sérialisation désérialisation peut être gourmande, et cela ce fait vite ressentir).


    Par exemple le pattern Delegate courant en développement Cocoa (le delegate classique, ou via des callback) pour faire communiquer deux UIViewController n'est pas possible sur Android, et la moindre interaction entre deux Activity (deux écrans donc) est une plaie à  gérer.


    Pour faire communiqué deux Activity, on se retrouve à  créer une Intent, demander au context d'application de gérer l'intent, et implémenter une méthode dans l'Activity pour gérer le retour de l'Intent. Et tous les retours d'Intent se gèrent donc au même endroit. Ce qui fait qu'on se coltine tout un tas de switch pour gérer tous les types de retour d'intent possibles, d'activity différentes.


    Sans compter qu'il faut penser au cycle de vie des Activity pour gérer correctement les mise en background, foreground, changement de rotation, background prolongé etc..., et gérer correctement le cycle de vie n'est pas évident, (surtout quand on a des appels réseaux à  faire etc...).


    Par exemple, j'ai l'activité ListActivity, qui affiche une liste de tweet, admettons que je scrolle tout en bas de la liste, et que j'appuis sur un tweet, je vais lancer un Intent demandant à  Android d'afficher l'activité TweetActivity avec le tweetId en question. Une fois que je reviens en arrière, sur la ListActivity, si je ne gère pas bien le cycle de vie, ma ListActivity est restauré à  l'état initial, donc scroller tout en haut. Si la ListActivity a commencer une requête réseau, que j'ouvre TweetActivity avant que la requête de revienne, ça va planté, car ListActivity est mis sur stop, et la requête va revenir quand ListActivity est sur stop, et qu'il faller mettre en pause la requête (ou la stopper) pour éviter ce problème.


    Il n'y a qu'a voir les librairies qui facilite les appels http, pour se rendre compte de la galère de les utiliser.


     


    Et bien sur, impossible d'afficher une activité dans une autre, donc pour faire des UIViewController réutilisables faut oublier, ou utiliser les Fragment (une sorte d'Activity miniature, qu'une activity peut afficher comme une vue, mais qui possède son propre cycle de vie), mais les Fragments ne sont pas implémentée par toute les versions d'Android (à  l'époque ou j'avais fais de l'android c'était tout récent), et il faut utiliser des lib de compatibilité qui sont assez buggés, et on se retrouve à  faire pleins de hack pour gérer les bugs.


     


     


    Tous n'est pas noir, Il y a de bonnes choses, comme le positionnement des vues dans des Layout, quand on vient d'iOS avec ces autosizing (avant l'apparition des AutoLayout), c'est juste un miracle de facilité de pouvoir positionner ces vues à  l'écran. Surtout que la fragmentation est énorme sur Android, et c'est essentiel d'avoir un design responsive, car les tailles d'écrans sont très différentes les unes des autres.


    Ou encore le possibilité de créer des thèmes utilisables par les vues, etc...


     


     


    Pour ma part, je fais maintenant du dev React-Native, je suis en train de bosser sur application iPhone en React-Native, suivra une version Android. Dès que l'application sera sorti, je ferai surement un retour d'experience sur le forum.


    Mais c'est une techno que je conseil. (React-Native, avec Flowtype, et redux)


  • Merci pour ce retour d'expérience, jojo.

  • Je relance un peu le sujet car je continue ma formation sous Androà¯d, notamment avec des cours sur Coursera. Ce qui me manque aujourd'hui c'est l'accès à  un forum, comme celui-ci consacré à  Androà¯d ainsi que l'accès à  des objets de base comme on en trouve sur cocoapods ou cocoacontrols


     


    Des idées ? Des conseils ?


  • muqaddarmuqaddar Administrateur

    Pas de forum francophone sur Android ?


     


    Pour ma part, j'espère et je prie pour qu'on puisse coder en Swift sur Android un jour (ça fera ça de moins à  apprendre, le java... il restera les API)


Connectez-vous ou Inscrivez-vous pour répondre.