Hello xcode 4 v2

Post on 26-Jun-2015

1.892 views 0 download

Transcript of Hello xcode 4 v2

HELLO XCODE 4

Jean-Alexandre Iragne Benjamin Bouachour Édouard Richard

Mathieu GodartNicolas Lauquin

14 Avril 2011 @ CocoaHeads Paris

• 1er réseau de fans de sports

• 16 développeurs en France

• Présent sur 5 plateformes 350 apps

• Nous sommes les pionniers de la conception et la réalisation d’applications mobiles dans le domaine du Sport en Europe.

• Nous avons gagné un prix lors de la première session des Mobile Awards organisée en France pour l’application « RTL FOOTBALL »

NETCOSPORTS

NETCOSPORTS

pense, crée et fait connaitre vos applications mobiles

•Notre philosophie est d'allier artisanat et nouvelles technologies

•Développement d’applications mobiles natives pour iPhone et Android

INTRODUCTION

• Une app attendue

• Une modification du processus de développement

• Un gros changement

•Des fonctionnalités perdues

•Des évolutions

UN LOGICIEL ATTENDU

• Show à la WWDC 10

• Une beta instable

• Une version stable «juste par le nom»

• Une release quelques semaines après

MODIFICATION DU PROCESSUS DE

DÉVELOPPEMENT

• Fusion des outils

• interface builder

•Debug

• SCM

DE GROS CHANGEMENTS

• Une fenêtre unique

• Une navigation par onglet

• Un menu à droite

CE QUI NE MARCHE PLUS

• Les users script

• Le drag & drop de groupe

• La création de custom view

•Détacher le debugger

EVOLUTIONS

•L’UI• Interface Builder•L’édition de code•Le SCM•La compilation•Le Debugger

Interface Utilisateur

par Benjamin Bouachour

Aspect Général•4 Éléments principaux

•Navigateur

•Editeur

• Inspecteur

•Débogueur

Navigateur•Workspace

•Explorateur de projet courant

•Différentes vues :

•Arbre de fichiers

•Par symbol du projet

•Outil de recherche

Navigateur•Différentes vues

•Résultat de la compilation

•Stack du débogueur

•Les breackpoints du projets

•Les log

•Pour chaque vue une bar de filtres

Editeur

Editeur

• Intègre Interface Builder

•Onglets

Editeur•Différents Mode :

•Mode Editeur : un fichier ouvert

•Mode Assitant : plusieurs fichiers ouverts sur le même onglets

•Mode versioning : deux fichiers ouverts pour comparaison

Inspecteur•Détails du fichiers

•Aide

• Inspecteur d'interface builder

Inspecteur•Différents Éléments disponibles

•Templates de fichiers

•Snippet

•Élement graphique pour Interface Builder

•Média du projets

Débogueur

• Intégré à la fenêtre principale

•Console

•Les cibles : variables à instant t

•3 vues

Tool Bar•Boutton vers les différents mode

•Lancer / arrêter un projet

•Choix différentes Vues

•Breakpoints

•Choix du scheme

•Organize

Raccourcis•Navigateur :

•Pomme (+ shift) + 0 = ouverture/fermeture

•Pomme + ctrl (+ shift) + 1-7 = Différents navigateurs

•Alt + shift + click fichiers = choix dans l'ouverture du fichiers

Raccourcis• Inspecteur

•Pomme + alt (+ shift) + 0 = ouverture/fermeture

•Pomme + alt (+ shift) + 1-2/1-7 = Différents types d'inspecteurs

Raccourcis•Débogueur

•Pomme + R = lancer un projet

•Pomme + shift + Y = ouverture/fermeture

•Pomme + shift + . = arrêt du projet

Raccourcis•Editeur

•Pomme + ctrl + fleche droite/gauche = fichiers suivants/précédents

•Pomme + ctrl + flèche haut = .h/.m

•Pomme + enter = mode editor

•Pomme + alt + enter = mode assistant

Raccourcis•Editeur

•Pomme + shift + alt + enter = versioning mode

•Pomme + T = nouvel onglets

•Pomme + shift + T = suppressionde l'onglet courant

Préférences Systèmes•Pomme + ,

•Faire ses propres raccourcis

•Choix de comportement à différents stades

•Apparence du texte

•etc..

Organizer•Vos archives

•Devices

•Documentation

•SCM : Repositories

•Projects

INTERFACE BUILDER&

ÉDITION DE CODE

par Édouard Richard

INTERFACE BUILDER

BARRE D’INSPECTION -FILE INSPECTOR

• Identité et Type

• Interface Builder Document

• Internationalisation

• Sélection de Target

• Informations SVN (révision, statuts et chemin)

BARRE D’INSPECTION -QUICK HELP

• Nom de la Classe

• Version d’OS supportée

• Résumé de la Classe

• Endroit de la déclaration

• Références

• Codes d’exemples

BARRE D’INSPECTION -IDENTITY INSPECTOR

• Sélection de Classe personnalisée

• Identité (Label, ObjectID, Notes)

• Accessibilité

BARRE D’INSPECTION -ATTRIBUTES INSPECTOR

• Différents en fonction de l’objet

BARRE D’INSPECTION -SIZE INSPECTOR

• Position & Taille

• Ajustement automatique de l’objet

BARRE D’INSPECTION -CONNECTIONS INSPECTOR

• Liste des Outlets avec leurs liaisons

• Liste des Outlet Collections

BARRE DE BIBLIOTHÈQUE -TEMPLATES DE FICHIER

• Sélection parmi les templates

BARRE DE BIBLIOTHÈQUE -CODE DE SNIPPETS

• Sélection des Snippets

• Librairie Xcode

• Librairie personnalisée

BARRE DE BIBLIOTHÈQUE -OBJETS

• Accès aux Objets

• Vue par icônes

BARRE DE BIBLIOTHÈQUE -MÉDIAS

• Accès aux Médias

• Vue par icônes

LIAISONS - OUTLET

LIAISONS - OUTLET

LIAISONS - ACTION

LIAISONS - ACTION

LIAISONS - OUTLET COLLECTIONS

LIAISONS - OUTLET COLLECTIONS

LES SNIPPETS

ÉDITION DE CODE -AVERTISSEMENTS DE SYNTHAXE

Raccourci : cmd + ctrl + f

ÉDITION DE CODE -ANALYSE

• Utilisation de Clang

• Plus de contenu à l’auto-complétion

• Amélioration de l’analyseur syntaxique

• Auto-Analyse à la sauvegarde (vérification des Avertissements et des Erreurs)

LE SCM

par Nicolas Lauquin

LE SCM : PRÉSENTATION

• Meilleure intégration et confort

• Comparateur efficace

• SVN est bien géré

• Support de git

• Au revoir cvs

Rappel : nom générique pour un ensemble d'outils permettant la gestion des différentes versions d'un code source.

LE SCM : GIT

• Décentralisé ?• une «working copy» est un repository local complet (historique, suivit des

révisions, indépendant du réseau ou d’un serveur central).

• une fois commité, le repository local est mis à jour

• un action de «push» soumet/partage les changements sur UN serveur distant

• Vocabulaire: • clone (git) / checkout (SVN) : créé une working copy

• pull (git) / update (SVN) : récupère les modifications depuis un serveur

• push : envoie les modifications sur un serveur

• Git par défaut: xcode propose la création d’un repo git local pour un nouveau projet.

Rappel : Git est un logiciel de gestion de version distribué. Il a été initialement conçu par Linus Torvalds pour les kernel linux. Il a été developpé pour être rapide.

SCM : VERSION EDITOR

• Super comparateur graphique

• Historique à la «Time Machine»

• 3 modes

• comparaison

• blame

• log

SCM : LES COMMANDES 1/2

1) Depuis le menu « File » -> « Source Control »

SCM : LES COMMANDES 2/2

2) Depuis le menu contextuel

3) Depuis l’Organizer

Fonctionnalité pratique depuis la zone de navigation:

SCM : L’ORGANIZER

• Gérer les différents repository:

• Visualiser l’historique des révisions

• Visualiser et créer des branches

• Naviguer dans le «working repository»

• Actions : commit, pull, refresh

• Ajouter un repository, faire un checkout/clone repository, ajouter une «working copy».

• Bonus : lier un contact du carnet d’adresse

SCM : QUELQUES LIMITATIONS

• Avec git : impossibilité de faire un pull/push si il y a des changement non commités.

• problème avec les settings utilisateurs ? -> utiliser un outil externe-> ne pas les versionner & .gitignore : (ajouter xcuserdata/ )

• Bug rencontrés:

• dans la fenêtre de commit bloquage sur fichier utilisateur -> impossible de commiter (UserInterfaceState.xcuserstate)

• quelques problèmes gestion des repositories (changement de mot de passe, problème de connexion) -> solution suppression/ajout

• git cloning en erreur parfois (fonctionne en ligne de commande)

=> défaut de jeunesse corrigé dans Xcode 4.1 ?

STRUCTURE PROJET XCODE 4 :

PROJECTNAME.xcodeproj! project.pbxproj! project.xcworkspace/! ! ! contents.xcworkspacedata! ! ! xcuserdata/! ! ! ! ! USERNAME.xcuserdatad/! ! ! ! ! ! UserInterfaceState.xcuserstate! ! ! ! ! ! WorkspaceSettings.xcsettings! xcuserdata/! ! ! USERNAME.xcuserdatad/! ! ! ! xcdebugger/! ! ! ! ! Breakpoints.xcbkptlist! ! ! ! xcschemes/! ! ! ! ! PROJECTNAME.xcscheme! ! ! ! ! xcschememanagement.plist

STRUCTURE PROJET XCODE 3 :

PROJECTNAME.xcodeproj/! project.pbxproj! project.xcworkspace! USERNAME.pbxuser! USERNAME.perspective! USERNAME.perspectivev3! USERNAME.mode1v3! USERNAME.mode2v3

• onglet dédié dans l’organizer

• indépendant : un projet effacé est restaurable

• usage manuel : File -> create snapshot

• automatiquement en cas d’édition massive de fichiers ( refactor, renommage du projet, scm update ) - Réglage «File -> Project settings».

SNAPSHOTRappel : permet de sauvegarder l’état courant d’un projet ou d’un workspace sur le disque pour restauration éventuelle.

ARCHIVE

• Archives réalisée sous Xcode3 non rappatriées

• Répertoire et format changé :

• ~/Library/Application Support/Developer/Shared/Archived Applications/XXX.apparchive

• ~/Library/Developer/Xcode/Archives/YYYY-DD-MM/XXX.xcarchive

• Conversion manuelle possible à la nouvelle structure, script trouvé sur stackoverflow (http://stackoverflow.com/questions/5060228/can-we-import-apparchive-bundles-in-xcode-4)

Rappel : utilisé pour packager et distribuer l’application sous l’iOS ou MacApp Store.

COMPILATION

par Jean-Alexandre Iragne

COMPILATION (BUILD, TARGET, EXECUTABLE AND

DEBUGGER)• Introduction des schemes

• Utilisation

• Edition

• Build configuration

• Configuration

•Déploiement

• Build Phase

INTRODUCTION DES SCHEMES

•Définition: Régime ou modèle

• Etude du workflow de compilation

• Permet de regrouper

• Target

• Executable

•Methode d’exécution

• Règle de compilation

SCHEME EDITION

FENÊTRE D’ÉDITION ET DE GESTION DES SCHEMES

• Edition d’un scheme

• Configuration

• Script

• Gestion du debug par instrument

• Gestion de l’archive

• Utilisation

EXEMPLE SCHEME

GESTION DE LA COMPILATION

• Où retrouver ses petits• Gestion des configurations• Gestion des langues• Déploiement• Vision du build setting par level

BUILD SETTING

TARGET

•Où retrouver ses petits

• Ajout de framework

•Dépendance de lib

• Gestion de script

• Liste des sources et ressources

• info.plist

• Interface graphique

• Editeur

TARGET

AGRÉGAT SCHEME ET BUILD CONFIGURATION

• Création d’un scheme

• Spécification d’un instrument pour le profil

• Création d’un adhoc signé

• Création d’une archive iTunes

EXEMPLE

LE DEBUGGER

par Mathieu Godart

DBG – APERÇU GÉNÉRAL

DBG – BARRE DU DEBUGGER

DBG – BREAKPOINT NAVIGATOR

DBG – BREAKPOINT NAVIGATOR

DBG – BREAKPOINT NAVIGATOR

DBG – DEBUG NAVIGATOR

DBG – VARIABLE VIEW

DBG – VARIABLE VIEW

DBG – VARIABLE VIEW

DBG – LA CONSOLE

DBG – LA CONSOLE

• Les bénéfices de LLDB :

• Plus rapide, moins gourmand

•Meilleure intégration avec Xcode (merci Clang !)

• Syntaxe plus simple : nom + verbe [+ options]

• Intégration de Python

DBG – LA CONSOLE

•Quelques commandes utiles :

help

apropos

variable list

expr <objc-code>

script

DBG – LA CONSOLE

BIBLIOGRAPHIE

•Documentation Xcode (organizer)

• Xcode 4 Transition Guide (PDF)

• Xcode 4 User Guide (PDF)

•WWDC 2010 session 307 : Introduction to Xcode 4 (vidéo)

•WWDC 2010 session 316 : Debugging with Xcode 4 (vidéo)

•WWDC 2010 session 313 : LLVM (vidéo)

• Tuto LLDB : http://lldb.llvm.org/tutorial.html

QUESTIONS ?

MERCI