XCODE PROJECT INFRASTRUCTURE The lecture that will make you cry!
AGENDA Projects / Workspaces Targets Schemes Build Settings Code Signing Entitlements.plist Info.plist
PROJECTS / WORKSPACES
WORKSPACES / PROJECTS Workspace Project1. xcodeproj App Target Test Target Project2. xcodeproj 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 SETTINGS Project 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 Signed App Code Signing App hash Signature App Certificate Private Key Provisioning Profile Public Key
VERIFICATION App hash = Valid App Decrypted Decrypt Signature hash Public Key
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 SUMMARY Entitlements 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
ADDITIONAL RESOURCES Apple Documentation: Xcode Concepts Apple Documentation: About Information Property List Files Apple Documentation: Adding Capabilities Apple Documentation: Code Signing Guide Objc.io: Inside Code Signing
Recommend
More recommend