Presentation breve sur l'univers du développement logiciel sur iOS et Android avec état des lieux de la plateform, des editeurs de texte associés et des contraintes liées a ces plateformes.
2. Sommaire
• Vue d’ensemble des deux écosystèmes
• La plateforme iOS
• le SDK iOS
• Gestionnaire de dépendances CocoaPods
• Les langages utilisés sur iOS (Application natives)
• La plateforme Android
• SDK Android
• Android : une plateforme pensé pour tous les périphériques
• Annexes
• Auteurs
4. iOS
• Initialement iPhone OS, crée en 2007
• Dernière version stable iOS 9.2, iOS 9.3 en bêta
• Utilisé sur iPhone, iPod, iPad, Apple tv(fork iOS5),
Apple Watch(fork iOS 8) voiture (iOS in the Car)
• 1,4M d’application disponible dont 700.000
adaptées iPad.
• 14% de pdm (2ème acteur)
5. iOS
iOS très peu fragmenté.
Tailles d’écrans relativement
fragmenté depuis 2014 avec
la gamme iPhone6, Apple
Watch et désormais
AppleTV
6. Android
• Android Open Source Project + Services(Google,
Samsung ou les forks chinois)
• Crée en 2008 et racheté par Google
• 1 milliard de dispositifs activés l’année dernière
• Se taille la part du lion (+80% pdm)
• Actuellement en version 6.0.
• Présent sur tous les périphériques, y compris dans les
frigos connectés, les set-top-box, les lunettes…
10. SDK iOS
L’IDE Xcode
• Crée en 2003
• Développé par Apple seulement sur MacOSX.
• Regroupe l’Interface builder pour faire les UI, Project
Builder pour la partie code et configuration du projet,
automator, test unitaires, profiling et déploiement
d’applications.
• Regroupe toutes les frameworks pour le développement
d’applications Mac OSX, iOS, WatchOS et TvOS
• Automatisable en ligne de commande via les command
line tools du SDK.
• Alternative: AppCode (par JetBrains)
14. Xcode - gestionnaire de
dépendances CocoaPods
• Crée en Sept 2011, Open Source
• En version 0.39.
• La plus grande communauté
• Gestionnaire alternatifs: Xcode Maven, Xcode
Gradle, Carthage (Swift)
16. Objective-c et Swift
• Objective-c
• Crée en 1983 (pas très moderne).
• Extension du C et inspiré de SmallTalk.
• Orienté objet.
• Swift
• Crée en 2014 et OpenSource depuis fin 2015 (Swift V2).
• Plus moderne (plus de headers, typage statique)
• Supporte le paradigme fonctionnel nativement.
• Interopérabilité avec Objective-c.
• Pas mature pour des gros projets (Swift v2 tend à l’être)
20. Android Studio
• Version stable depuis Android Lollipop
• Moderne, complétion plus puissante
• Socle Intellij (phpstorm, pycharm, etc…)
• Edition d’interface plus moderne qu’Eclipse.
• Intégration native repo maven (équivalent de
cocoapods ou composer)
22. Composition du SDK
• IDE
• Les API Android, la bibliothèque JAVA standard
• Les commandes line tools
• Le NDK (native développement kit: api C/C++)
• Les outils (Debug management system, automatisation de
test d’interface, profileur d’interface, simulateur, chrome
webtools)
24. Une multitude de
périphérique de toutes tailles
• Tailles d’écran fragmentés (moins maintenant
qu’avant)
• Versions fragmentés: 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.1, 6.
• Résolutions différentes(HD 4 sur nexus6, HD3 nexus
5, s4, HD sur tablette, semi HD sur S2, MD et LD sur
support écran embarqué
• Supports différents: Montres, lunettes, telephones,
phablettes, tablettes, frigo…
25. Une interface pour tous les
devices
• Le SDK Android a été pensé pour que les
développeurs créent facilement une interface pour
tous les devices.
• Possibilité de faire une UI pour une taille d’écran
spécifique sans écrire de code avec un ciblage
des media queries très précis (exemple: UI
adaptée pour un écran de 500x366 dans la nuit en
paysage sur un en français Android 4.3)
26. Les contraintes du
développement mobile
• Temps de compilation qui augmente avec la taille du projet (réduit sous Android studio
2.0 avec Instant run)
• Développement et test pour beaucoup de périphériques.
• iOS
• Configuration du projet(fichier de conf compliqué, certificat de développement,
gestion du compte, certificat pour le push, passbook).
• Durée de validation (15j), rejet aléatoire de la validation.
• Android
• IDE ralentit sur les gros projets à cause de la complétion (trop) puissante.
• l’environnement trop fragmenté pour des tests recouvrant 100% du parc.
• Choix techniques cruciaux: natif, hybride ou transpilé.