Session 408 - Working With Schemes and Projects in Xcode

download Session 408 - Working With Schemes and Projects in Xcode

of 131

Transcript of Session 408 - Working With Schemes and Projects in Xcode

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    1/131

    These are confidential sessionsplease refrain from streaming, blogging, or taking pictures

    Session 408

    Rick Ballard and Mirza GaribovicXcode Engineers

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    2/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    3/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    4/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    5/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    6/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    7/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    8/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    9/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    10/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    11/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    12/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    13/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    14/131

    The core concepts: workspaces, projects, targets, schemes,and run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    15/131

    The core concepts: workspaces, projects, targets, schemes,and run destinations

    Effective use of the scheme actions

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    16/131

    The core concepts: workspaces, projects, targets, schemes,and run destinations

    Effective use of the scheme actions

    Working with build products

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    17/131

    The core concepts: workspaces, projects, targets, schemes,and run destinations

    Effective use of the scheme actions

    Working with build products

    Scheme management

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    18/131

    The core concepts: workspaces, projects, targets, schemes,and run destinations

    Effective use of the scheme actions

    Working with build products

    Scheme management

    Static libraries for iOS

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    19/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    20/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    21/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    22/131

    Contains references to projectsand other files

    Groups together projects you want

    to use together

    Provides a unique location for stateand build products

    Allows implicit dependencies to befound between targets

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    23/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    24/131

    References to source files

    Targets which build products

    Schemes which build targets andperform actions

    Build configurations which selectvariants of target build settings

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    25/131

    Build setting variants

    Debug and Release are the default configurations

    Build settings can have per-configuration variants

    To vary build settings for another purpose, define a newbuild configuration

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    26/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    27/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    28/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    29/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    30/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    31/131

    Instructions for building one product

    References some or all sourcefiles in the project

    Contains build phasesthe

    high-level sequence of steps Build rules determine howto handle each file type

    Build settings control howit is done

    Can depend on one or moreother targets

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    32/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    33/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    34/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    35/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    36/131

    Target Dependencies

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    37/131

    Compile Sources

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    38/131

    Link Binary with Libraries

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    39/131

    Copy Headers

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    40/131

    Copy Bundle Resources

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    41/131

    Copy Files

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    42/131

    Run Script

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    43/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    44/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    45/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    46/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    47/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    48/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    49/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    50/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    51/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    52/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    53/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    54/131

    Instructions for building targets and performing actions

    Actions for running,testing, profiling, analyzing,and archiving products

    A specification of targets tobuild for each action

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    55/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    56/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    57/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    58/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    59/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    60/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    61/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    62/131

    Building is a step performed before each action

    You always build with a purpose

    The action you perform specifies targets and a configuration

    The default Build command builds for the Run action

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    63/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    64/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    65/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    66/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    67/131

    Workspaces

    Projects Build configurations

    Targets Build settings

    Build phases

    Build rules

    Schemes Run destinations

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    68/131

    The device you want to build for and run on

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    69/131

    The device you want to build for and run on Choose among plugged-in iOS devices configured for development,available simulators, and the local Mac

    Only devices compatible with your targets Base SDKand Deployment Target

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    70/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    71/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    72/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    73/131

    Demo

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    74/131

    What is an archive?

    A timestamped bundle with: An install-style build of your application

    Your applications debug symbols, in a separate dSYM file

    Verification and submission status for your application Your own comments

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    75/131

    Application archives

    Contain only a single application

    Archives containing anything else cannot be submitted to the Macor iOS App Store

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    76/131

    Application archives

    Your application should embed libraries and frameworks Static libraries are always incorporated into your application

    Use a Copy Files build phase for frameworks and dynamic libraries

    Turn on the Skip Install build setting for library and framework targets

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    77/131

    Demo

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    78/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    79/131

    Every workspace has its own derived data directory

    Workspaces are distinguished by path Different copies of the same workspace have their own derived

    data directories

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    80/131

    Demo

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    81/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    82/131

    Manually by the user

    Automatically: When creating a new target or project

    When opening a project or workspace for the first time

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    83/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    84/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    85/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    86/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    87/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    88/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    89/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    90/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    91/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    92/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    93/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    94/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    95/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    96/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    97/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    98/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    99/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    100/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    101/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    102/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    103/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    104/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    105/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    106/131

    MyApp.xcodeproj/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    107/131

    MyApp.xcodeproj/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    108/131

    xcuserdata/

    xcsharedata/MyApp.xcodeproj/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    109/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    110/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/ xcschemes/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    111/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/ xcschemes/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    112/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/ xcschemes/

    MyApp.xcscheme

    MyFramework.xcscheme

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    113/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    114/131

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    115/131

    mirza.xcuserdatad/

    rick.xcuserdatad/

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    116/131

    mirza.xcuserdatad/

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

    rick.xcuserdatad/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    117/131

    mirza.xcuserdatad/

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

    xcschemes/rick.xcuserdatad/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    118/131

    mirza.xcuserdatad/

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

    xcschemes/rick.xcuserdatad/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    119/131

    mirza.xcuserdatad/

    MyApp.xcodeproj/

    xcuserdata/

    xcsharedata/

    xcschemes/

    xcschememanagement.plist

    MyApp.xcscheme

    rick.xcuserdatad/

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    120/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    121/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    122/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    123/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    124/131

    Demo

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    125/131

    Michael JurewitzDeveloper Tools Evangelist

    [email protected]

    Documentation

    Xcode 4 User Guidehttp://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/

    Apple Developer Forumshttp://devforums.apple.com

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    126/131

    Working Efficiently with Xcode MarinaTuesday 11:30AM

    Building from the Command Line with Xcode Russian HillTuesday 4:30PM

    Learning InstrumentsPresidio

    Wednesday 4:30PM

    Source Control Management in Xcode Nob HillThursday 10:15AM

    Debugging in Xcode Pacific HeightsThursday 2:00PM

    Building, Archiving, and Submitting Your App Pacific HeightsThursday 4:30PM

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    127/131

    Xcode Lab Developer Tools Lab BOngoing

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    128/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    129/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    130/131

  • 7/28/2019 Session 408 - Working With Schemes and Projects in Xcode

    131/131