xcode project infrastructure
Post on 14-Apr-2017
517 Views
Preview:
TRANSCRIPT
AGENDAProjects / Workspaces
Targets
Schemes
Build Settings
Code Signing
Entitlements.plist
Info.plist
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 define how an individual product is built
Products can be executables, frameworks, test suites, etc.
Targets can provide specific build settings
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 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.
SIGNING
App
Provisioning Profile
CertificatePrivate Key
Code Signinghash
Signature App
Signed App
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
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
Defines target specific settings that aren’t related to build process:
Product version, Product name, Initial Storyboard File, etc.
ADDITIONAL RESOURCESApple Documentation: Xcode Concepts
Apple Documentation: About Information Property List Files
Apple Documentation: Adding Capabilities
Apple Documentation: Code Signing Guide
Objc.io: Inside Code Signing
top related