tech conf n°1 - développement natif d'applications mobiles

51
1 Développement natif d’applications mobiles TechConf #1 - Telecom Valley / 4 juin 2014 Nicolas GOUTALAND (Teach on Mars) - Michael LAGUERRE (Ausy)

Upload: michael-laguerre

Post on 26-Jun-2015

194 views

Category:

Mobile


1 download

DESCRIPTION

Conférence sur le développement d'applications mobiles natives sur plateformes mobiles iOS et Android. En collaboration avec Nicolas GOUTALAND de TeachOnMars pour la partie iOS. Tech Conf n°1 organisée par la Telecom Valley, 4 juin 2014 au Campus SophiaTech

TRANSCRIPT

Page 1: Tech Conf n°1 - Développement natif d'applications mobiles

1

Développement natifd’applications mobiles

TechConf #1 - Telecom Valley / 4 juin 2014Nicolas GOUTALAND (Teach on Mars) - Michael LAGUERRE (Ausy)

Page 2: Tech Conf n°1 - Développement natif d'applications mobiles

Question

Sous quel OS tourne votre téléphone ?

2

Page 3: Tech Conf n°1 - Développement natif d'applications mobiles

Une multitude d’OS mobiles

3

Page 4: Tech Conf n°1 - Développement natif d'applications mobiles

Introduction Parts de marché 2Q 2013

4

Autres 4 %

Windows Phone 3 %

Android 79 %

iOS 14 %

Monde

Autres 7 %

Symbian 2 %

Android 41 %

iOS 49 %

France

Page 5: Tech Conf n°1 - Développement natif d'applications mobiles

Introduction

5

Evolution du traficwebsites vs applications

Evolution du traficwebsites

Page 6: Tech Conf n°1 - Développement natif d'applications mobiles

Introduction

6

Page 7: Tech Conf n°1 - Développement natif d'applications mobiles

Développement natif

• Performance

• Meilleure intégration

• Meilleur rendu

• Complexité des applications

7

Page 8: Tech Conf n°1 - Développement natif d'applications mobiles

Qui sommes-nous ?

Nicolas GOUTALAND

• Développement iOS depuis le premier SDK

• Plus d’une centaine d’applications

• CTO @Teach on Mars

8

Page 9: Tech Conf n°1 - Développement natif d'applications mobiles

Qui sommes-nous ?

Michael LAGUERRE

• Développement Android depuis 4 ans

• Une 40aine d’applications sur le PlayStore

• Expert Android @Ausy

• Enseignant @Polytech Nice Sophia et @IUT de Sophia en Android et IHM

9

Page 10: Tech Conf n°1 - Développement natif d'applications mobiles

Par où commencer ?

10

Page 11: Tech Conf n°1 - Développement natif d'applications mobiles

Android developer account

• Android — https://play.google.com/apps/publish

• Un unique type de compte

• Publication sur le PlayStore

• Pas obligatoire pour développer - > publication sur site WEB

• $25 à vie

11

Page 12: Tech Conf n°1 - Développement natif d'applications mobiles

Prérequis

• Mac

• Création d’un Apple ID

• Choix d’une licence

12

Page 13: Tech Conf n°1 - Développement natif d'applications mobiles

iOS Developer Program

• 99$ (~80€) chaque année

• Licence personnelle ou entreprise

• Publication d’applications sur l’AppStore

• 100 devices de test

13

Page 14: Tech Conf n°1 - Développement natif d'applications mobiles

iOS Developer Enterprise Program

• 299$ (~250 €) chaque année

• Distributions d’applications internes à une entreprise (OTA)

• Pas de limites sur la distribution

14

Page 15: Tech Conf n°1 - Développement natif d'applications mobiles

Développer pour Android

15

Page 16: Tech Conf n°1 - Développement natif d'applications mobiles

Eclipse vs Android Studio

• Eclipse • Utilisé depuis les débuts d’Android

• Plugin ADT (Android Development Toolkit)

• Compilation : ANT

!

• Android Studio • Introduit à la Google I/O 2013

• Encore en Developer Preview

• Basé sur la dernière version d’IntelliJ

• Compilation : Gradle

16

Page 17: Tech Conf n°1 - Développement natif d'applications mobiles

Eclipse

17

Page 18: Tech Conf n°1 - Développement natif d'applications mobiles

Android Studio

18

Page 19: Tech Conf n°1 - Développement natif d'applications mobiles

Android SDK

19

ADT

Hierarchy Viewer Emulateur

draw9patch

Page 20: Tech Conf n°1 - Développement natif d'applications mobiles

Android SDK

• Contient :

• ADT / Librairies nécessaires au développement d’applications Android

• Emulateur Android / Création de devices virtuels -AVD- de différentes configurations hard/soft

• Hierarchy Viewer / Visualisation de l’arborescence d’un écran

• draw9patch / Création de ressources graphiques extensibles

20

Page 21: Tech Conf n°1 - Développement natif d'applications mobiles

Emulateur Android

21

Page 22: Tech Conf n°1 - Développement natif d'applications mobiles

Emulateur Android - Genymotion

22

10x plus rapideque l’émulateur Android

Page 23: Tech Conf n°1 - Développement natif d'applications mobiles

HierarchyViewer

23

Page 24: Tech Conf n°1 - Développement natif d'applications mobiles

draw9patch

24

Page 25: Tech Conf n°1 - Développement natif d'applications mobiles

Le langageJAVA/XML

• Langages :

• JAVA pour le code

• XML pour l’interface, les ressources

!

• Création d’un fichier APK

!

• Développement possible sur Windows, MacOS, Linux

!

• IDE : Eclipse, Android Studio

25

.java .xml

.APK

Page 26: Tech Conf n°1 - Développement natif d'applications mobiles

Le langageJAVA/XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>

26

package com.example.app; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

XML

JAVA

GUI

Logique

Page 27: Tech Conf n°1 - Développement natif d'applications mobiles

Développer pour iOS

27

Page 28: Tech Conf n°1 - Développement natif d'applications mobiles

Xcode vs AppCode

• Xcode • IDE développé par Apple

• Gratuit

!

• AppCode • IDE développé par JetBRAINS (IntelliJ)

• Version 3.0 disponible depuis le 20 Mai

• Payant

28

Page 29: Tech Conf n°1 - Développement natif d'applications mobiles

Xcode

29

Page 30: Tech Conf n°1 - Développement natif d'applications mobiles

AppCode

30

Page 31: Tech Conf n°1 - Développement natif d'applications mobiles

iOS Tools

31

Page 32: Tech Conf n°1 - Développement natif d'applications mobiles

Interface builder

32

Page 33: Tech Conf n°1 - Développement natif d'applications mobiles

Instruments

33

Page 34: Tech Conf n°1 - Développement natif d'applications mobiles

Reveal

34

Page 35: Tech Conf n°1 - Développement natif d'applications mobiles

• Objective-C

• [ ]

• Preprocesseur C

• Protocol / Category

• ARC

• Pas de NullPointerException ;)

35

Le langageObjective-C

Page 36: Tech Conf n°1 - Développement natif d'applications mobiles

Le langageObjective-C

#pragma mark - View management - (void)viewDidLoad { // Hold ordered labels _labels = @[_knownQuestionsLabel, _unknownQuestionsLabel, _didReachObjectiveLabel]; [_labels each:^(UILabel *label) { [[StyleManager sharedInstance] configureDescriptionText:label]; }]; ! [super viewDidLoad]; ! // Localize _scoreCaptionLabel.font = FONT_FUTURA_STD(25.0); _userScoreLabel.font = FONT_FUTURA_HEAVY(25.0); _scoreCaptionLabel.textColor = NORMAL_TEXT_COLOR; _userScoreLabel.textColor = NORMAL_TEXT_COLOR; ! // Configure title label _titleLabel.text = LOCALIZED_STRING(@"QuizResultViewController.title"); [[StyleManager sharedInstance] configureGradientLabel:_titleLabel]; ! _scoreCaptionLabel.text = LOCALIZED_STRING(@"QuizResultViewController.yourScore.caption"); ! UPDATE_VIEW_FRAME_HEIGHT(_contentView, [ROOT_VIEW_CONTROLLER footerHeight]); }

36

Page 37: Tech Conf n°1 - Développement natif d'applications mobiles

37

L’autre langage Swift

Page 38: Tech Conf n°1 - Développement natif d'applications mobiles

L’autre langage Swift

38

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet var tableView : UITableView var items:Dictionary<String,String>=["Pizza Margherita":"Tomato, mozzarella, oregano ", "Pizza viennese":"German sausage, oregano, oil", "Pizza capricciosa":"mushrooms, artichokes"] func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { return self.items.count; } func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { var cell:myCell = self.tableView.dequeueReusableCellWithIdentifier("miaCella") as myCell let menusPizza=Array(items.keys) let menusingredients=Array(items.values) ! cell.mioTesto.text = menusPizza[indexPath.row] cell.mioSubtitle.text = menusingredients[indexPath.row]; return cell } func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { performSegueWithIdentifier("miaview", sender: self.view) println("Hai selezionato: \(indexPath.row)!") }}

Page 39: Tech Conf n°1 - Développement natif d'applications mobiles

Une app mobile : un ensemble de composants

39

Page 40: Tech Conf n°1 - Développement natif d'applications mobiles

Une application mobile, c’est :

40

Interface graphique

Data

RéseauCapteurs

Services OS

Page 41: Tech Conf n°1 - Développement natif d'applications mobiles

Google Play Services

• Ensemble d’API Google « extraites » d’Android

• APK installé sur 99.9% des terminaux -> réduction des effets de la fragmentation

• Portage de nouvelles API sur les anciennes versions d’Android

41

• Google Maps API • Geofencing • Fused Location Provider • Reconnaissance d’activité • Google Play Games API • Google+ API • Google Drive API • Google Cast API • Google Mobile Ads • Google Wallet • Google Cloud Messaging • … • … et plein d’autres à venir

Page 42: Tech Conf n°1 - Développement natif d'applications mobiles

Frameworks iOS

• Foundation : Classes de base (Array, Dictionary, String, Network)

• CoreData : ORM

• UIKit : Framework de composants graphiques

• CoreAnimation : Classes en charge des animations

• CoreLocation, CoreMotion : Gestion des capteurs

• et pleins d’autres encore …

42

Page 43: Tech Conf n°1 - Développement natif d'applications mobiles

Ressources et liens utiles

43

Page 44: Tech Conf n°1 - Développement natif d'applications mobiles

44

Inspiration http://inspired-ui.com

Page 45: Tech Conf n°1 - Développement natif d'applications mobiles

45

Inspiration http://www.pttrns.com

Page 46: Tech Conf n°1 - Développement natif d'applications mobiles

46

Inspiration http://capptivate.co

Page 47: Tech Conf n°1 - Développement natif d'applications mobiles

Tips AndroidLibrairies utiles

• Retrofit : Appels réseau + transformation en objets http://square.github.io/retrofit/

• Picasso : Téléchargement des images en background http://square.github.io/picasso/

• EventBus : Bus évènementiel de communication entre composants https://github.com/greenrobot/EventBus

• GreenDao : ORM SQLite pour Android http://greendao-orm.com/

• Android Asset Studio : Générateur de ressources Android http://romannurik.github.io/AndroidAssetStudio/

47

Page 48: Tech Conf n°1 - Développement natif d'applications mobiles

Tips AndroidLiens utiles

• http://developer.android.com/

• http://www.vogella.com/tutorials/android.html

48

Page 49: Tech Conf n°1 - Développement natif d'applications mobiles

Tips iOSLibrairies / outils utiles

• Alcatraz : Gestionnaire de plug-ins Xcode http://alcatraz.io

• CocoaPods : Gestionnaire de dépendances http://cocoapods.org/

• AFNetworking : Appels réseau http://afnetworking.com/

• SDWebImage : Téléchargement des images en background https://github.com/rs/SDWebImage

• Reveal : Visualisation 3D éclatée de l’interfacehttp://revealapp.com/

• Crashlytics : Remontée automatique de rapport de crashs https://www.crashlytics.com

49

Page 50: Tech Conf n°1 - Développement natif d'applications mobiles

• www.raywenderlich.com

• www.maniacdev.com

• www.cocoacontrols.com

• https://developer.apple.com

50

Tips iOSLiens utiles