Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Mastering the
Project 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 */,
!...
Falling back to patching base and 3-way merge...
Auto-merging MyApp.xcodeproj/project.pbxproj
CONFLICT (content): Merge co...
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>
...
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...
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 = {...};
532ABB30...
Every object has a UID
Thursday, June 5, 14
objects = {
532ABB3011D5647300D29D20 = {...};
532ABB3111D5647300D29D20 = {...};
532ABB3211D5647300D29D20 = {...};
532ABB33...
‘root_object’
Thursday, June 5, 14
04A4CCDA164D5E0400FB5950 /* Project object */ = {
! isa = PBXProject;
! attributes = {
! ! CLASSPREFIX = MRT;
! ! LastUpgr...
04A4CCDA164D5E0400FB5950 /* Project object */ = {
! isa = PBXProject;
! attributes = {
! ! CLASSPREFIX = MRT;
! ! LastUpgr...
isa = PBXProject;
Thursday, June 5, 14
mainGroup = A487DC7415FE5DCD0037E8A3;
Thursday, June 5, 14
targets = (
! 1D6058900D05DD3D006BFB54 /* MyApp */,
! D94C698916E6E808002BDD31 /* MyApp Test */,
! D9E1D32A16E6FCC100C0524...
projectReferences = (
! {
! ! ProductGroup = D94C698116E6E7DE002BDD31 /* Products */;
! ! ProjectRef = D94C698016E6E7DE002...
buildConfigurationList = C01FCF4E08A954540054247B
Thursday, June 5, 14
Classes
Thursday, June 5, 14
PBXAggregateTarget
PBXBuildRule
PBXContainerItemProxy
PBXCopyFilesBuildPhase
PBXFileReference
PBXFrameworksBuildPhase
PBXG...
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 = 4B98CBDFD81F4259923E...
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 /* B...
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;
!...
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/Pr...
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
Upcoming SlideShare
Loading in …5
×

Mastering the Project File (AltConf)

1,512 views

Published on

Published in: Software, Technology, Art & Photos
  • Be the first to comment

Mastering the Project File (AltConf)

  1. 1. Mastering the Project File @micheletitolo Thursday, June 5, 14
  2. 2. Thursday, June 5, 14
  3. 3. Thursday, June 5, 14
  4. 4. Thursday, June 5, 14
  5. 5. Thursday, June 5, 14
  6. 6. <<<<<<< HEAD ! ! ! ! A487DC9215FE5DCD0037E8A3 /* AppDelegate.h */, ! ! ! ! A487DC9315FE5DCD0037E8A3 /* AppDelegate.m */, ! ! ! ! D9CA01C11720AD7D00CBD2B2 /* View Controllers */, ======= ! ! ! ! D9CA01B71720AC3000CBD2B2 /* Base */, ! ! ! ! D9CA01BB1720AC3C00CBD2B2 /* Controllers */, >>>>>>> new_ratings Thursday, June 5, 14
  7. 7. Falling back to patching base and 3-way merge... Auto-merging MyApp.xcodeproj/project.pbxproj CONFLICT (content): Merge conflict in ! MyApp.xcodeproj/project.pbxproj Failed to merge in the changes. Patch failed at 0037 Launch screen images update The copy of the patch that failed is found in: ! /tmp/git/.git/rebase-apply/patch Thursday, June 5, 14
  8. 8. It’s not that special Thursday, June 5, 14
  9. 9. Thursday, June 5, 14
  10. 10. .xcodeproj Thursday, June 5, 14
  11. 11. It’s a folder Thursday, June 5, 14
  12. 12. Thursday, June 5, 14
  13. 13. Two kinds of files Thursday, June 5, 14
  14. 14. Plist and XML Thursday, June 5, 14
  15. 15. All the settings Thursday, June 5, 14
  16. 16. Schemes, too Thursday, June 5, 14
  17. 17. Thursday, June 5, 14
  18. 18. project.xcworkspace Thursday, June 5, 14
  19. 19. another “special” folder Thursday, June 5, 14
  20. 20. Thursday, June 5, 14
  21. 21. contents.xcworkspacedata Thursday, June 5, 14
  22. 22. references .xcodeproj Thursday, June 5, 14
  23. 23. <?xml version="1.0" encoding="UTF-8"?> <Workspace version = "1.0"> <FileRef location = "self:MyApp.xcodeproj"> </FileRef> </Workspace> Thursday, June 5, 14
  24. 24. Not just in .xcodeproj Thursday, June 5, 14
  25. 25. project.pbxproj Thursday, June 5, 14
  26. 26. it’s a plist Thursday, June 5, 14
  27. 27. a very special plist Thursday, June 5, 14
  28. 28. the heart of your project Thursday, June 5, 14
  29. 29. let’s look inside Thursday, June 5, 14
  30. 30. // !$*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 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fil... ! ! D94D3E88170B80FB00EA401C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile... Thursday, June 5, 14
  31. 31. Thursday, June 5, 14
  32. 32. Let’s break it down Thursday, June 5, 14
  33. 33. ‘objects’ and ‘root_object’ Thursday, June 5, 14
  34. 34. ‘objects’ Thursday, June 5, 14
  35. 35. objects = { D94D3E72170B80FB00EA401C = {...}; D94D3E74170B80FB00EA401C = {...}; D94D3E76170B80FB00EA401C = {...}; 532ABB3011D5647300D29D20 = {...}; 532ABB3111D5647300D29D20 = {...}; 532ABB3211D5647300D29D20 = {...}; 532ABB3311D5647300D29D20 = {...}; }; Thursday, June 5, 14
  36. 36. Every object has a UID Thursday, June 5, 14
  37. 37. objects = { 532ABB3011D5647300D29D20 = {...}; 532ABB3111D5647300D29D20 = {...}; 532ABB3211D5647300D29D20 = {...}; 532ABB3311D5647300D29D20 = {...}; }; 0 1 2 3 Thursday, June 5, 14
  38. 38. ‘root_object’ Thursday, June 5, 14
  39. 39. 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
  40. 40. 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
  41. 41. isa = PBXProject; Thursday, June 5, 14
  42. 42. mainGroup = A487DC7415FE5DCD0037E8A3; Thursday, June 5, 14
  43. 43. targets = ( ! 1D6058900D05DD3D006BFB54 /* MyApp */, ! D94C698916E6E808002BDD31 /* MyApp Test */, ! D9E1D32A16E6FCC100C0524D /* MyApp Pro */, ); Thursday, June 5, 14
  44. 44. projectReferences = ( ! { ! ! ProductGroup = D94C698116E6E7DE002BDD31 /* Products */; ! ! ProjectRef = D94C698016E6E7DE002BDD31 /* KIF.xcodeproj */; ! }, ); Thursday, June 5, 14
  45. 45. buildConfigurationList = C01FCF4E08A954540054247B Thursday, June 5, 14
  46. 46. Classes Thursday, June 5, 14
  47. 47. PBXAggregateTarget PBXBuildRule PBXContainerItemProxy PBXCopyFilesBuildPhase PBXFileReference PBXFrameworksBuildPhase PBXGroup PBXHeadersBuildPhase PBXLegacyTarget PBXNativeTarget PBXProject PBXReferenceProxy PBXResourcesBuildPhase PBXShellScriptBuildPhase PBXSourcesBuildPhase PBXTargetDependency PBXVariantGroup XCBuildConfiguration XCConfigurationList XCVersionGroup Thursday, June 5, 14
  48. 48. Thursday, June 5, 14
  49. 49. Thursday, June 5, 14
  50. 50. XCBuildConfiguration Thursday, June 5, 14
  51. 51. Thursday, June 5, 14
  52. 52. Debug and Release Thursday, June 5, 14
  53. 53. Compiler flags Thursday, June 5, 14
  54. 54. 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_PROFILE PRODUCT_NAME INFOPLIST_FILE GCC_VERSION CODE_SIGN_IDENTITY name Thursday, June 5, 14
  55. 55. Swift Thursday, June 5, 14
  56. 56. SWIFT_OBJC_BRIDGING_HEADER = "MyApp-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; Thursday, June 5, 14
  57. 57. Project or Target Thursday, June 5, 14
  58. 58. PBXNativeTarget Thursday, June 5, 14
  59. 59. 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
  60. 60. Build phase types Thursday, June 5, 14
  61. 61. PBXResourcesBuildPhase == Copy Bundle Resources Thursday, June 5, 14
  62. 62. PBXSourcesBuildPhase == Compile Sources Thursday, June 5, 14
  63. 63. PBXFrameworksBuildPhase == Link Binary With Libraries Thursday, June 5, 14
  64. 64. PBXShellScriptBuildPhase == Run Script Thursday, June 5, 14
  65. 65. 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
  66. 66. xcuserdata Thursday, June 5, 14
  67. 67. User-specific info Thursday, June 5, 14
  68. 68. .xcuserdatad Thursday, June 5, 14
  69. 69. Schemes & breakpoints Thursday, June 5, 14
  70. 70. xcschememanagement.plist Thursday, June 5, 14
  71. 71. MyApp.xcscheme Thursday, June 5, 14
  72. 72. <?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
  73. 73. Thursday, June 5, 14
  74. 74. .gitignore’d Thursday, June 5, 14
  75. 75. xcshareddata Thursday, June 5, 14
  76. 76. .xcschemes Thursday, June 5, 14
  77. 77. xml Thursday, June 5, 14
  78. 78. Don’t .gitignore Thursday, June 5, 14
  79. 79. The Big Picture Thursday, June 5, 14
  80. 80. Thursday, June 5, 14
  81. 81. .pbxproj: It’s just a plist Thursday, June 5, 14
  82. 82. .xcworkspace: It’s XML Thursday, June 5, 14
  83. 83. xcshareddata: Has plists Thursday, June 5, 14
  84. 84. xcuserdata: Has plists Thursday, June 5, 14
  85. 85. Thursday, June 5, 14
  86. 86. git Thursday, June 5, 14
  87. 87. Merge Conflicts Thursday, June 5, 14
  88. 88. project.pbxproj Thursday, June 5, 14
  89. 89. 1. Check the comments Thursday, June 5, 14
  90. 90. 2. Pick 1 UID Thursday, June 5, 14
  91. 91. 3. Rebase early and often Thursday, June 5, 14

×