Mastering the Project File (AltConf)
-
Upload
micheletitolo -
Category
Software
-
view
900 -
download
0
description
Transcript of Mastering the Project File (AltConf)
Mastering theProject File
@micheletitolo
Thursday, June 5, 14
Thursday, June 5, 14
Thursday, June 5, 14
Thursday, June 5, 14
Thursday, June 5, 14
<<<<<<< HEAD! ! ! ! A487DC9215FE5DCD0037E8A3 /* AppDelegate.h */,! ! ! ! A487DC9315FE5DCD0037E8A3 /* AppDelegate.m */,! ! ! ! D9CA01C11720AD7D00CBD2B2 /* View Controllers */,=======! ! ! ! D9CA01B71720AC3000CBD2B2 /* Base */,! ! ! ! D9CA01BB1720AC3C00CBD2B2 /* Controllers */,>>>>>>> new_ratings
Thursday, June 5, 14
Falling back to patching base and 3-way merge...Auto-merging MyApp.xcodeproj/project.pbxprojCONFLICT (content): Merge conflict in ! MyApp.xcodeproj/project.pbxprojFailed to merge in the changes.Patch failed at 0037 Launch screen images updateThe copy of the patch that failed is found in:! /tmp/git/.git/rebase-apply/patch
Thursday, June 5, 14
It’s not that special
Thursday, June 5, 14
Thursday, June 5, 14
.xcodeproj
Thursday, June 5, 14
It’s a folder
Thursday, June 5, 14
Thursday, June 5, 14
Two kinds of files
Thursday, June 5, 14
Plist and XML
Thursday, June 5, 14
All the settings
Thursday, June 5, 14
Schemes, too
Thursday, June 5, 14
Thursday, June 5, 14
project.xcworkspace
Thursday, June 5, 14
another “special” folder
Thursday, June 5, 14
Thursday, June 5, 14
contents.xcworkspacedata
Thursday, June 5, 14
references .xcodeproj
Thursday, June 5, 14
<?xml version="1.0" encoding="UTF-8"?><Workspace version = "1.0"> <FileRef location = "self:MyApp.xcodeproj"> </FileRef></Workspace>
Thursday, June 5, 14
Not just in .xcodeproj
Thursday, June 5, 14
project.pbxproj
Thursday, June 5, 14
it’s a plist
Thursday, June 5, 14
a very special plist
Thursday, June 5, 14
the heart of your project
Thursday, June 5, 14
let’s look inside
Thursday, June 5, 14
// !$*UTF8*$!{! archiveVersion = 1;! classes = {! };! objectVersion = 46;! objects = {
/* Begin PBXBuildFile section */! ! 8A9D5590A3E24AC297598750 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef...! ! D94D3E72170B80FB00EA401C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; f...! ! D94D3E74170B80FB00EA401C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFi...! ! D94D3E76170B80FB00EA401C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuild...! ! D94D3E7C170B80FB00EA401C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; ...! ! D94D3E7E170B80FB00EA401C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D94...! ! D94D3E82170B80FB00EA401C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRe...! ! D94D3E84170B80FB00EA401C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRe...! ! D94D3E86170B80FB00EA401C /* [email protected] in Resources */ = {isa = PBXBuildFile; fil...! ! D94D3E88170B80FB00EA401C /* [email protected] in Resources */ = {isa = PBXBuildFile...
Thursday, June 5, 14
Thursday, June 5, 14
Let’s break it down
Thursday, June 5, 14
‘objects’ and ‘root_object’
Thursday, June 5, 14
‘objects’
Thursday, June 5, 14
objects = {D94D3E72170B80FB00EA401C = {...};D94D3E74170B80FB00EA401C = {...};D94D3E76170B80FB00EA401C = {...};532ABB3011D5647300D29D20 = {...};532ABB3111D5647300D29D20 = {...};532ABB3211D5647300D29D20 = {...};532ABB3311D5647300D29D20 = {...};};
Thursday, June 5, 14
Every object has a UID
Thursday, June 5, 14
objects = {532ABB3011D5647300D29D20 = {...};532ABB3111D5647300D29D20 = {...};532ABB3211D5647300D29D20 = {...};532ABB3311D5647300D29D20 = {...};};
0123
Thursday, June 5, 14
‘root_object’
Thursday, June 5, 14
04A4CCDA164D5E0400FB5950 /* Project object */ = {! isa = PBXProject;! attributes = {! ! CLASSPREFIX = MRT;! ! LastUpgradeCheck = 0450;! ! ORGANIZATIONNAME = "Michele Titolo";! };! buildConfigurationList = 04A4CCDD164D5E0400FB5950;! compatibilityVersion = "Xcode 3.2";! developmentRegion = English;! hasScannedForEncodings = 0;! knownRegions = (! ! en,! );! mainGroup = 04A4CCD8164D5E0400FB5950;! productRefGroup = 04A4CCE4164D5E0400FB5950 /* Products */;! projectDirPath = "";! projectRoot = "";! targets = (! ! 04A4CCE2164D5E0400FB5950 /* MyApp */,! ! D9D2509C173AB9AD0046F074 /* MyApp Test */,! ! D9E6BA6A177CDB9C00C98B08 /* MyApp KIF */,! );};
Thursday, June 5, 14
04A4CCDA164D5E0400FB5950 /* Project object */ = {! isa = PBXProject;! attributes = {! ! CLASSPREFIX = MRT;! ! LastUpgradeCheck = 0450;! ! ORGANIZATIONNAME = "Michele Titolo";! };! buildConfigurationList = 04A4CCDD164D5E0400FB5950;! compatibilityVersion = "Xcode 3.2";! developmentRegion = English;! hasScannedForEncodings = 0;! knownRegions = (! ! en,! );! mainGroup = 04A4CCD8164D5E0400FB5950;! productRefGroup = 04A4CCE4164D5E0400FB5950 /* Products */;! projectDirPath = "";! projectRoot = "";! targets = (! ! 04A4CCE2164D5E0400FB5950 /* MyApp */,! ! D9D2509C173AB9AD0046F074 /* MyApp Test */,! ! D9E6BA6A177CDB9C00C98B08 /* MyApp KIF */,! );};
isa
mainGroup
targets
buildConfigurationList
Thursday, June 5, 14
isa = PBXProject;
Thursday, June 5, 14
mainGroup = A487DC7415FE5DCD0037E8A3;
Thursday, June 5, 14
targets = (! 1D6058900D05DD3D006BFB54 /* MyApp */,! D94C698916E6E808002BDD31 /* MyApp Test */,! D9E1D32A16E6FCC100C0524D /* MyApp Pro */,);
Thursday, June 5, 14
projectReferences = (! {! ! ProductGroup = D94C698116E6E7DE002BDD31 /* Products */;! ! ProjectRef = D94C698016E6E7DE002BDD31 /* KIF.xcodeproj */;! },);
Thursday, June 5, 14
buildConfigurationList = C01FCF4E08A954540054247B
Thursday, June 5, 14
Classes
Thursday, June 5, 14
PBXAggregateTargetPBXBuildRulePBXContainerItemProxyPBXCopyFilesBuildPhasePBXFileReferencePBXFrameworksBuildPhasePBXGroupPBXHeadersBuildPhasePBXLegacyTargetPBXNativeTarget
PBXProjectPBXReferenceProxyPBXResourcesBuildPhasePBXShellScriptBuildPhasePBXSourcesBuildPhasePBXTargetDependencyPBXVariantGroupXCBuildConfigurationXCConfigurationListXCVersionGroup
Thursday, June 5, 14
Thursday, June 5, 14
Thursday, June 5, 14
XCBuildConfiguration
Thursday, June 5, 14
Thursday, June 5, 14
Debug and Release
Thursday, June 5, 14
Compiler flags
Thursday, June 5, 14
04A4CD07164D5E0400FB5950 /* Debug */ = {! isa = XCBuildConfiguration;! baseConfigurationReference = 4B98CBDFD81F4259923E97CE;! buildSettings = {! ! CODE_SIGN_IDENTITY = "iPhone Developer";! ! "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";! ! GCC_PRECOMPILE_PREFIX_HEADER = YES;! ! GCC_PREFIX_HEADER = "MyApp/MyApp-Prefix.pch";! ! GCC_VERSION = com.apple.compilers.llvm.clang.1_0;! ! INFOPLIST_FILE = "MyApp/MyApp-Info.plist";! ! PRODUCT_NAME = "$(TARGET_NAME)";! ! PROVISIONING_PROFILE = "";! ! "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";! ! WRAPPER_EXTENSION = app;! };! name = Debug;};
PROVISIONING_PROFILEPRODUCT_NAMEINFOPLIST_FILEGCC_VERSION
CODE_SIGN_IDENTITY
name
Thursday, June 5, 14
Swift
Thursday, June 5, 14
SWIFT_OBJC_BRIDGING_HEADER = "MyApp-Bridging-Header.h";SWIFT_OPTIMIZATION_LEVEL = "-Onone";
Thursday, June 5, 14
Project or Target
Thursday, June 5, 14
PBXNativeTarget
Thursday, June 5, 14
04A4CCE2164D5E0400FB5950 /* MyApp */ = {! isa = PBXNativeTarget;! buildConfigurationList = 04A4CD06164D5E0400FB5950 /* Build configuration list for PBXNativeTarget "MyApp" */;! buildPhases = (! ! 29390B06A9D3479F9566AA27 /* Check Pods Manifest.lock */,! ! 04A4CCDF164D5E0400FB5950 /* Sources */,! ! 04A4CCE0164D5E0400FB5950 /* Frameworks */,! ! 04A4CCE1164D5E0400FB5950 /* Resources */,! ! F3BAB5EA93C24AE18A4EE832 /* Copy Pods Resources */,! );! buildRules = ();! dependencies = ();! name = MyApp;! productName = MyApp;! productReference = 04A4CCE3164D5E0400FB5950 /* MyApp.app */;! productType = "com.apple.product-type.application";};
buildPhases
name
buildConfigurationList
productName
Thursday, June 5, 14
Build phase types
Thursday, June 5, 14
PBXResourcesBuildPhase==
Copy Bundle Resources
Thursday, June 5, 14
PBXSourcesBuildPhase==
Compile Sources
Thursday, June 5, 14
PBXFrameworksBuildPhase==
Link Binary With Libraries
Thursday, June 5, 14
PBXShellScriptBuildPhase==
Run Script
Thursday, June 5, 14
F3BAB5EA93C24AE18A4EE832 /* Copy Pods Resources */ = {! isa = PBXShellScriptBuildPhase;! buildActionMask = 2147483647;! files = ();! inputPaths = ();! name = "Copy Pods Resources";! outputPaths = ();! runOnlyForDeploymentPostprocessing = 0;! shellPath = /bin/sh;! shellScript = "\"${SRCROOT}/Pods/Pods-resources.sh\"\n";};
shellScript
Thursday, June 5, 14
xcuserdata
Thursday, June 5, 14
User-specific info
Thursday, June 5, 14
.xcuserdatad
Thursday, June 5, 14
Schemes & breakpoints
Thursday, June 5, 14
xcschememanagement.plist
Thursday, June 5, 14
MyApp.xcscheme
Thursday, June 5, 14
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>! <key>SchemeUserState</key>! <dict>! ! <key>MyApp.xcscheme_^#shared#^_</key>! ! <dict>! ! ! <key>orderHint</key>! ! ! <integer>1</integer>! ! </dict>! </dict>! <key>SuppressBuildableAutocreation</key>! <dict>! ! <key>1D6058900D05DD3D006BFB54</key>! ! <dict>! ! ! <key>primary</key>! ! ! <true/>! ! </dict>! </dict></dict></plist>
MyApp.xcscheme_^#shared#^_
Thursday, June 5, 14
Thursday, June 5, 14
.gitignore’d
Thursday, June 5, 14
xcshareddata
Thursday, June 5, 14
.xcschemes
Thursday, June 5, 14
xml
Thursday, June 5, 14
Don’t .gitignore
Thursday, June 5, 14
The Big Picture
Thursday, June 5, 14
Thursday, June 5, 14
.pbxproj: It’s just a plist
Thursday, June 5, 14
.xcworkspace: It’s XML
Thursday, June 5, 14
xcshareddata: Has plists
Thursday, June 5, 14
xcuserdata: Has plists
Thursday, June 5, 14
Thursday, June 5, 14
git
Thursday, June 5, 14
Merge Conflicts
Thursday, June 5, 14
project.pbxproj
Thursday, June 5, 14
1. Check the comments
Thursday, June 5, 14
2. Pick 1 UID
Thursday, June 5, 14
3. Rebase early and often
Thursday, June 5, 14