Top Banner
30

Xcode Project Infrastructure

Apr 14, 2017

Download

Software

Make School
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Xcode Project Infrastructure
Page 2: Xcode Project Infrastructure

XCODE PROJECT INFRASTRUCTURE

The lecture that will make you cry!

Page 3: Xcode Project Infrastructure

AGENDAProjects / Workspaces

Targets

Schemes

Build Settings

Code Signing

Entitlements.plist

Info.plist

Page 4: Xcode Project Infrastructure

PROJECTS /WORKSPACES

Page 5: Xcode Project Infrastructure

WORKSPACES / PROJECTS

Workspace

Project1.xcodeproj

Project2.xcodeproj

App Target

Test Target

Framework Target

Documentation Target

Page 6: Xcode Project Infrastructure

PROJECTS

Collection of source code and resource files, structured into groups

Collection of targets

Provides project wide build settings

Page 7: Xcode Project Infrastructure

TARGETS

Page 8: Xcode Project Infrastructure

TARGETS

Page 9: Xcode Project Infrastructure

TARGETS

Targets define how an individual product is built

Products can be executables, frameworks, test suites, etc.

Targets can provide specific build settings

Page 10: Xcode Project Infrastructure

SCHEMES

Page 11: Xcode Project Infrastructure

SCHEMES

Page 12: Xcode Project Infrastructure

SCHEMES

“An Xcode scheme defines a collection of

targets to build, a configuration to use when

building, and a collection of tests to

execute.”

- Xcode Concepts Documentation

Page 13: Xcode Project Infrastructure

BUILD SETTINGS

Page 14: Xcode Project Infrastructure

BUILD SETTINGS

Page 15: Xcode Project Infrastructure

BUILD SETTINGSProject provides build settings that apply to all

targets

Target can override build settings

Build settings parameterize how product is

built, e.g. which SDK version is used, which provisioning profile, etc.

Page 16: Xcode Project Infrastructure

CODE SIGNING

Page 17: Xcode Project Infrastructure

SIGNING

App

Provisioning Profile

CertificatePrivate Key

Code Signinghash

Signature App

Signed App

Public Key

Page 18: Xcode Project Infrastructure

VERIFICATION

App hash

Signature

Public Key

DecryptedhashDecrypt

= Valid App

Page 19: Xcode Project Infrastructure

CODE SIGNING

Ensures identity of developer of an application

Ensures integrity of application content (has not been manipulated after submission to App Store)

Page 20: Xcode Project Infrastructure

CODE SIGNING

Developer signs with developer profile when submitting to App Store

Apple resigns application with their own certificate before distributing to users

Apple’s certificate doesn’t expire!

Page 21: Xcode Project Infrastructure

CODE SIGNING

Certificate: Public Key + Identifying information

Provisioning Profile: Combination of entitlements, certificate and list of viable devices

Page 22: Xcode Project Infrastructure

CERTIFICATE

Page 23: Xcode Project Infrastructure

ENTITLEMENTS.PLIST

Page 24: Xcode Project Infrastructure

ENTITLEMENTS.PLIST / CAPABILITIES

Page 25: Xcode Project Infrastructure

ENTITLEMENTS / CAPABILITIES

Defines which privileges an app has (e.g. access to iCloud)

App’s privileges need to match the ones in corresponding provisioning profile

Page 26: Xcode Project Infrastructure

CODE SIGNING SUMMARYEntitlements define what app is allowed to do

Entitlements need to be specified in Provisioning Profile

Provisioning Profiles specifies with which Certificates an

app can be signed

Code signing ensures that app developer can be

identified and that app content isn’t modified after

signing

Page 27: Xcode Project Infrastructure

INFO.PLIST

Page 28: Xcode Project Infrastructure

INFO.PLIST

Defines target specific settings that aren’t related to build process:

Product version, Product name, Initial Storyboard File, etc.

Page 29: Xcode Project Infrastructure

ADDITIONAL RESOURCES