SWIFT-01-introduction iOS.pdf - Google Drive

1 downloads 6 Views 2MB Size Report
n Salle u4lisée : 2210 MAC, deux machines macOS sont toujours disponibles en. 3806. 3. Page 3 of 45. Page 4 of 45. +. H
+

Développement iOS Introduc4on iOS

+

2

Environnement du cours n 

Système (mini) :

n 

IDE (mini) :

n 

A par4r de Xcode 7 l’u4lisa4on d’un device comme cible permet de faire le test des applica4ons, sans programme de développement standard. Un câble suffit donc pour faire le test.

n 

Cependant à ce jour, seule la dernière app testée est u4lisable. D’anciennes apps testées ne sont plus u4lisables.

n 

Le programme de développement standard reste donc nécessaire.



+

3

Environnement du cours n 

Machine Apple physique. La virtualisa4on ventée dans beaucoup de tutoriels pose réellement de nombreux problèmes de mise à jour et de version.

n 

Sachant que le développement d’apps nécessite les dernières versions de Xcode et de macOS, une machine physique est préférable.

n 

La virtualisa4on est d’ailleurs non-licite, ce que n’encourage pas ce cours.

n 

Xcode fait que vous êtes tout de même référencé chez Apple (Member Developer program)

n 

Comptes u4lisateurs du cours : prévoir un compte App Store pour meUre à jour Xcode.

n 

Salle u4lisée : 2210 MAC, deux machines macOS sont toujours disponibles en 3806.

+

4

Historique n 

Basé sur une technologie des années 1980

n 

ObjC s’inspire de C, Smalltalk

n 

NextStep (Steve Job)

n 

Apple rachète NextStep

n 

Reste de l’histoire dans les types NS…

n 

Swid rompt avec l’histoire et se rapproche de C#, Java

n 

Introduc4on de Swid : WWDC du 2 Juin 2014

n 

Version actuelle : Xcode 8 avec Swid 3.0 (septembre 2016)

+

5

Popularité de l’éco-système n 

Point sur l’éco-système Apple : n  n  n  n  n  n  n 

Santé connectée (HealthKit) Domo4que (HomeKit) Montre (WatchKit) : Apple Watch (WatchOS) Téléphone, tableUe, Siri (iOS) TV (tvOS) iBeacon (Bluetooth LE) iCloud

n 

Le plus important dans un éco-système, ce n’est le produit (gadget), mais uniquement ce que le gadget autorise derrière.

n 

Parce que tout les téléphones se ressemblent, la seule différence, c’est l’éco-système auquel il est aUaché

n 

Apple n’est plus une entreprise informa4que, au même 4tre que Google ou Amazon.

n 

Savoir programmer ou innover ne sert qu’à une seule cause : créer un business autour d’un concept



+

6

Popularité de Swid

+

7

Popularité de Swid

+

8

Popularité de Swid

+

9

Popularité de Swid n 

redmonk

+

10

Popularité de Swid n 

Redmonk, juin 2015, basé sur GitHub et Stack Overflow

n  1 JavaScript n  2 Java n  3 PHP n  4 Python n  5 C# n  5 C++ n  5 Ruby n  8 CSS n  9 C n  10 Objec4ve-C n  11 Perl n  11 Shell n  13 R n  14 Scala n  15 Go n  15 Haskell n  17 Matlab n  18 Swid n  19 Clojure n  19 Groovy n  19 Visual Basic

+

11

Popularité de Swid n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n  n 

Redmonk, juin 2016, basé sur GitHub et Stack Overflow 1 JavaScript 2 Java 3 PHP 4 Python 5 C# 5 C++ 5 Ruby 8 CSS 9 C 10 Objec4ve-C 11 Shell 12 R 13 Perl 14 Scala 15 Go 16 Haskell 17 Swid 18 Matlab 19 Visual Basic 20 Clojure 20 Groovy

+

12

Popularité de Swid n 

Classement juillet 2014 :

TIOBE

+

13

+

14

+

15

Popularité de Swid n 

Classement juillet 2014 : PyPL

+

16

Popularité de Swid n 

Classement septembre 2016

n 

PyPL

+

17

Popularité de Swid n 

La baisse de la posi4on d’ObjC, va laisser de la place pour d’autres langages, en l’occurrence Swid

+

18

Rénova4on du langage n 

C/C++ -> ObjC -> Swid (juin 2014)

n 

Compa4bilité encore assurée pour l’instant

n 

Swid = Obj C sans le C !

n 

Co-existence des deux langages pour l’instant.

n 

Langage d’avenir pour Apple, plus facile à prendre en main

+

19

Plateforme matérielle n 

Plateforme de développement -> Intel (OSX)

n 

Plateforme d’exécu4on -> ARM (iOS)

n 

Rappel : Apple maitrise le processus complet de produc4on de ses appareils (hardware et gravure des processeurs)

n 

Pour le hardware : mac book pro, mac book air, mac mini, …

n 

Pour le sodware : OSX (El Capitan)

n 

Pour les processeurs : la logique est sous licence.

n 

ARM propose un produit générique paramétrable (trous)

n 

La basse consomma4on n’est pas supportée par intel -> ARM

+

20

Plateforme matérielle n 

L’architecture est celle d’une machine de Turing !

n 

Restric4ons : n  n 

Mémoire encore limitée (256 Go) Puissance de calcul encore limitée (64 bits A9 avec coprocesseur)

n 

Energie des baUeries : ges4ons des composants (GPS, caméra), ges4on des algorithmes coûteux en énergie

n 

Pe4t appareil, qui autorise des mises à jour, et donc une évolu4on dans le temps (iPad 2 -> iPad Air 2) Les formats d’écran ont évolué avec le temps : 3.5 (4-4S), 4 (5-5C-5S), 4.7 (6), 5.5 (6+), re4na (x2)

n 

+

21

Plateforme matérielle n 

Mémoire Flash (disque dur) : 16 (64) Go à 128 (256) Go

n 

Capteurs divers : accéléromètre, gyroscope, GPS, capteur de proximité,

n 

Les capteurs ne sont pas accessibles dans le simulateur (via Xcode)

n 

Le mailComposer n’est pas accessible dans le simulateur, mais fonc4onne sur le device aUaché à macOS (via Xcode)

+

22

Plateforme logicielle n 

NeXT hérite d’UNIX (1969)

n 

Apple hérite de NeXT (1986)

n 

OSX hérite de NeXTStep l’OS NeXT

n 

OSX est donc un UNIX Like

n 

Un UNIX like n’est pas un LINUX like -> Androïd

n 

Les commandes diffères, les paramètres, les dossiers, comportent des différences

n 

Linux a été développé de manière indépendante, sur les mécanismes UNIX

+

23

Interface n 

Changement du design depuis iOS 7 (flat design)

n 

iOS 9 est actuellement u4lisé

n 

Les différents SDK font apparaître : n  n 

Device -> iPhone, iPad, iPod Wearable -> Apple Watch

n 

Car -> carPlay TV -> Apple TV

n 

Health -> kit (pas de produit spécifique ->4ers)

n 

House -> kit (pas de produit spécifique -> 4ers)

n 

+

24

Interface n 

Programma4on réac4ve -> proche de la programma4on événemen4elle -> événements (TouchDown, ValueChanged, …)

n 

Gestuel -> événements haut niveau (OS).

n 

L’OS aUrape les événements avec mécanismes de surveillance (pool)

n 

Interrup4ons, déroutements (reset, division par 0, …) -> événements bas niveau (matériel)

n 

Chaque événement matériel, possède une adresse de déroutement

n 

Modèle MVC par défaut

n 

Les différents devices, wearables, nécessitent une adapta4on de l’affichage des applica4ons (Universal Story Board)

+

25

iOS vs Android n 

Le marché visé n’est pas le même

n 

Androïd -> monde libre à la base (Java)

n 

iOS -> monde plus propriétaire (ObjC, Swid)

n 

Androïd -> marché de masse, grande diversité de device

n 

Androïd -> PlayStore : poli4que de publica4on (exigences qui se renforcent))

n 

iOS -> marché premium, nombre de device limité (raisonnable)

n 

iOS -> AppStore : exigences plus élevés, contraintes

+

26

iOS vs Androïd n 

Même format d’appareil -> limite dans les fonc4onnalités -> ressemblances logiques

n 

La ressemblance des smartphones provient aussi du fait qu’un smartphone possède une surface finie avec un arrangement possible d’éléments fini (nombre de permuta4on des éléments internes et externes)

n 

Écran, haut parleur, jack, bouton volume (x2), connecteur = 6! = 720 arrangements

n 

On assiste également à une uniformisa4on du design des produits de la vie courante (appartements, surface de vente, voitures, ordinateurs, téléphones, …)

n 

Java -> Eclipse + SDK Google

n 

Swid -> Xcode + SDK Apple

+

27

Développement n 

Compila4on croisée : compila4on pour une plateforme cible, différente de la plateforme de développement d’origine

n 

C’est le principe même des applica4ons embarquées (satellites, voitures, avions)

n 

Cible -> Simulateur, device Physique (Programme de développement plus nécessaire suivant le besoin)

n 

La publica4on sur l’App Store nécessite toujours un programme de développement payant (90 euros)

+

28

Compila4on croisée n 

La cible n’est pas la même que l’origine :

+

29

Les programmes de développement

+

30

Les programmes de développement n 

Enterprise Program :

+

31

+

32

Workflow apple n 

L’enchaînement des étapes :

+

33

Déploiement n 

Déploiement local : USB (provisioning profile)

n 

Via AppStore

n 

Dans les deux cas Xcode gère le processus

n 

Via intranet, Xcode génère un fichier .ipa

n 

.ipa déposé sur serveur

n 

Récupéra4on de l’.ipa par iTunes d’un client, installa4on par câble

n 

OTA : c’est ce que vous faîtes tous les jours

+

34

Qualité des applica4ons n 

Le processus de déploiement est assez complexe

n 

Beaucoup de cer4ficats et donc de système de sécurité

n 

Seule assurance, de retrouver l’auteur d’un malWare (AppStore)

n 

La valida4on vérifie les API invoquées dans les App, afin de ne pas autoriser n’importe quoi

n 

Seule garan4e d’avoir une applica4on conforme

n 

Format propriétaire imposé : pas de discussion possible

+

35

Qualité des applica4ons n 

Androïd raUrappe son retard sur la vérifica4on des Apps (condi4ons moins contraignantes)

n 

La qualité des Apps, fait la qualité de la plateforme, de l’écosystème, et donc la réputa4on

n 

Un « scp » est encore possible sur Androïd

n 

Impossible avec iOS (na4vement)

n 

La taille des apps limitée à 2 Go depuis la créa4on de l’app store, passe à 4 Go en 2015

n 

Se pose la ques4on d’une mémoire de 16 Go ?

+

36

IDE n 

Plateforme de développement : Xcode

n 

Xcode (X86 -> 64 bits) : cible Intel (OSX 64 bits) ou ARM (iOS 32-64 bits)

n 

Xcode se rapproche de plus en plus de VS ou Eclipse

n 

Xcode : Interface Builder -> GUI

n 

Compilateur : LLVM (principe de machine virtuelle) -> frameWork

n 

Debugger : LLDB (GDB pour LLVM)

+

37

Revenus n 

L’ancien modèle d’achat d’apps avec 30% de taxes laisse place à l’abonnement.

n 

A par4r de septembre 2016, 30% de taxe, puis 15% au bout d’un an (après un an d’abonnement à l’app par l’u4lisateur)

n 

L’achat laisse la place à l’abonnement à des applica4ons.

n 

La propriété (achat) laisse la place à la loca4on (abonnement)

n 

Ce business modèle se décline sur d’autres produits (appartements, voitures, téléphone, ordinateurs, produits électroménagers, …)

+

38

Revenus n 

Les apps ne doivent plus être jetables

n 

Le changement de poli4que permet aussi de faire le ménage sur l’app store.

n 

Les apps publiées sur un événement ou une tendance courte n’auront plus d’intérêt

n 

Les développeurs sont poussés à améliorer leurs apps

n 

En moyenne, pour un indépendant, une app a 2 euros sera rentable si elle se vend a 50 000 exemplaires (pour un développement de plus de 6 mois)

n 

Le gros problème c'est que le développement informa4que c'est un secteur industriel (passage à l’industrialisa4on)

n 

Les stores c’est de la grande distribu4on, donc très loin de l'ar4sanat. Gagner de l'argent (assez pour vivre) en étant développeur indépendant c'est donc très difficile (en complément c’est envisageable, mais il faut du temps libre, et être Geek !)

+

39

Instruments n 

Xcode offre des ou4ls d’analyse :

n 

Ou4ls

+

40

Instruments n 

Ges4on mémoire : Alloca4ons

n 

Ges4on système : CPU, Ac4vity Monitor, File Ac4vity

n 

Ges4on graphique : GPU, Core Anima4on

n 

Ges4on données : Core Data

n 

Scénarios de test : Automa4on

+

41

Versioning n 

Git, SVN

n 

Repository Local si ac4vé dans le projet

n 

OSX serveur nécessaire, pour Team development

n 

Client gitHub conseillé pour github.com

+

42

Aide n 

Aide en ligne : alt+ click

n 

Accès interface = Cmd + click

n 

Esc : complé4on



+

43

Couches iOS n 

Core OS : même noyau OSX (noyau BSD Unix) + micro noyaux mach3

n 

Core OS : système de fichiers, trousseau, « Bonjour »,

n 

Core Service : services réseaux, géo-localisa4on, préférences, Contacts, SQLite

n 

Core médias : format de fichiers ( TIFF, JPG, PNG, PDF), audio, vidéo, openGL, sprite kit

n 

Cocoa touch :UIKit, API iOS, Founda4on, services de base

n 

Androïd possède Linux à la place de BSD

+

44

Couches iOS n 

En bas les couches proches du matériel :

+

45

Couches iOS n 

Beaucoup de par4es anciennes sont écrites en langage C

n 

C : possibilité de manipuler des pointeurs -> adressage, mappage

n 

Assembleur : manipula4on du jeu d’instruc4ons du processeur (démarrage, rou4nes système, …)

n 

ObjC et Swid ont tendance à encapsuler les pointeurs

n 

ARC -> très simplifié avec Swid (Automa4c Reference Coun4ng)

n 

Néanmoins quelques connaissances de base sont évidentes pour gérer la mémoire (alloc/dealloc)