Download - 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