xcode project infrastructure

30

Upload: make-school

Post on 14-Apr-2017

510 views

Category:

Software


0 download

TRANSCRIPT

XCODE PROJECT INFRASTRUCTURE

The lecture that will make you cry!

AGENDAProjects / Workspaces

Targets

Schemes

Build Settings

Code Signing

Entitlements.plist

Info.plist

PROJECTS /WORKSPACES

WORKSPACES / PROJECTS

Workspace

Project1.xcodeproj

Project2.xcodeproj

App Target

Test Target

Framework Target

Documentation Target

PROJECTS

Collection of source code and resource files, structured into groups

Collection of targets

Provides project wide build settings

TARGETS

TARGETS

TARGETS

Targets define how an individual product is built

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

Targets can provide specific build settings

SCHEMES

SCHEMES

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

BUILD SETTINGS

BUILD SETTINGS

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.

CODE SIGNING

SIGNING

App

Provisioning Profile

CertificatePrivate Key

Code Signinghash

Signature App

Signed App

Public Key

VERIFICATION

App hash

Signature

Public Key

DecryptedhashDecrypt

= Valid App

CODE SIGNING

Ensures identity of developer of an application

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

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!

CODE SIGNING

Certificate: Public Key + Identifying information

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

CERTIFICATE

ENTITLEMENTS.PLIST

ENTITLEMENTS.PLIST / CAPABILITIES

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

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

INFO.PLIST

INFO.PLIST

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

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

ADDITIONAL RESOURCES