mastering the project file

Post on 10-May-2015

706 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Do you frequently hear yourself say "Don't touch the project file!", "Who overrode my changes?" or "Where did my file go?" If so, this talk is for you. We constantly put the project file on a pedestal of things-you-do-not-mess-with, but is this much caution really warranted? We'll cover tips, tricks, and solutions to promote harmony between you and your project file.

TRANSCRIPT

Mastering theProject File

Michele TitoloSr. Mobile Engineer / Prolific Interactive

@micheletitolo

Saturday, April 20, 13

Hello!

Saturday, April 20, 13

Saturday, April 20, 13

Saturday, April 20, 13

Saturday, April 20, 13

<<<<<<< HEAD! ! ! ! A487DC9215FE5DCD0037E8A3 /* AppDelegate.h */,! ! ! ! A487DC9315FE5DCD0037E8A3 /* AppDelegate.m */,! ! ! ! D9CA01C11720AD7D00CBD2B2 /* View Controllers */,=======! ! ! ! D9CA01B71720AC3000CBD2B2 /* Base */,! ! ! ! D9CA01BB1720AC3C00CBD2B2 /* Controllers */,>>>>>>> star_circle_ratings

Saturday, April 20, 13

Falling back to patching base and 3-way merge...Auto-merging MyApppp.xcodeproj/project.pbxprojCONFLICT (content): Merge conflict in MyApp.xcodeproj/project.pbxprojFailed to merge in the changes.Patch failed at 0037 launch screen images update

Saturday, April 20, 13

It’s not that special

Saturday, April 20, 13

Saturday, April 20, 13

.xcodeproj

Saturday, April 20, 13

It’s a folder

Saturday, April 20, 13

Saturday, April 20, 13

Saturday, April 20, 13

project.xcworkspace

Saturday, April 20, 13

another “special” folder

Saturday, April 20, 13

Saturday, April 20, 13

contents.xcworkspacedata

Saturday, April 20, 13

references .xcodeproj

Saturday, April 20, 13

xcuserdata

Saturday, April 20, 13

Not just in .xcodeproj

Saturday, April 20, 13

project.pbxproj

Saturday, April 20, 13

it’s a plist

Saturday, April 20, 13

a very special plist

Saturday, April 20, 13

the heart of your project

Saturday, April 20, 13

let’s look inside

Saturday, April 20, 13

// !$*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...

Saturday, April 20, 13

Saturday, April 20, 13

Let’s break it down

Saturday, April 20, 13

‘objects’ and ‘root_object’

Saturday, April 20, 13

‘objects’

Saturday, April 20, 13

objects = {D94D3E72170B80FB00EA401C = {...};D94D3E74170B80FB00EA401C = {...};D94D3E76170B80FB00EA401C = {...};532ABB3011D5647300D29D20 = {...};532ABB3111D5647300D29D20 = {...};532ABB3211D5647300D29D20 = {...};532ABB3311D5647300D29D20 = {...};};

Saturday, April 20, 13

Every object has a UUID

Saturday, April 20, 13

objects = {D94D3E72170B80FB00EA401C = {...};D94D3E74170B80FB00EA401C = {...};D94D3E76170B80FB00EA401C = {...};532ABB3011D5647300D29D20 = {...};532ABB3111D5647300D29D20 = {...};532ABB3211D5647300D29D20 = {...};532ABB3311D5647300D29D20 = {...};};

Saturday, April 20, 13

‘root_object’

Saturday, April 20, 13

isa = PBXProject;

Saturday, April 20, 13

mainGroup = A487DC7415FE5DCD0037E8A3;

Saturday, April 20, 13

targets = (! 1D6058900D05DD3D006BFB54 /* MyApp */,! D94C698916E6E808002BDD31 /* MyApp Test */,! D9E1D32A16E6FCC100C0524D /* MyApp Pro */,);

Saturday, April 20, 13

projectReferences = (! {! ! ProductGroup = D94C698116E6E7DE002BDD31 /* Products */;! ! ProjectRef = D94C698016E6E7DE002BDD31 /* KIF.xcodeproj */;! },);

Saturday, April 20, 13

buildConfigurationList = C01FCF4E08A954540054247B

Saturday, April 20, 13

PBXAggregateTargetPBXBuildRulePBXContainerItemProxyPBXCopyFilesBuildPhasePBXFileReferencePBXFrameworksBuildPhasePBXGroupPBXHeadersBuildPhasePBXLegacyTargetPBXNativeTarget

PBXProjectPBXReferenceProxyPBXRezBuildPhasePBXShellScriptBuildPhasePBXSourcesBuildPhasePBXTargetDependencyPBXVariantGroupXCBuildConfigurationXCConfigurationListXCVersionGroup

Saturday, April 20, 13

Saturday, April 20, 13

Saturday, April 20, 13

Saturday, April 20, 13

XCBuildConfiguration

Saturday, April 20, 13

Debug and Release

Saturday, April 20, 13

Saturday, April 20, 13

Compiler flags

Saturday, April 20, 13

buildSettings = {! ALWAYS_SEARCH_USER_PATHS = NO;! "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";! COPY_PHASE_STRIP = NO;! DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";! GCC_DYNAMIC_NO_PIC = NO;! GCC_OPTIMIZATION_LEVEL = 0;! GCC_PRECOMPILE_PREFIX_HEADER = YES;! GCC_PREFIX_HEADER = Prefix.pch;! GCC_WARN_ABOUT_RETURN_TYPE = YES;! GCC_WARN_UNUSED_VALUE = NO;! GCC_WARN_UNUSED_VARIABLE = YES;! INFOPLIST_FILE = Info.plist;! ONLY_ACTIVE_ARCH = NO;! PRODUCT_NAME = MyApp;! SDKROOT = iphoneos;};

Saturday, April 20, 13

Project or Target

Saturday, April 20, 13

PBXNativeTarget

Saturday, April 20, 13

buildConfigurationList

Saturday, April 20, 13

buildPhases

Saturday, April 20, 13

buildPhases

Saturday, April 20, 13

PBXResourcesBuildPhase==

Copy Bundle Resources

Saturday, April 20, 13

PBXSourcesBuildPhase==

Compile Sources

Saturday, April 20, 13

PBXFrameworksBuildPhase==

Link Binary With Libraries

Saturday, April 20, 13

PBXShellScriptBuildPhase==

Run Script

Saturday, April 20, 13

The Big Picture

Saturday, April 20, 13

Saturday, April 20, 13

It’s just a plist

Saturday, April 20, 13

How does this make our lives suck less?

Saturday, April 20, 13

project.pbxproj -text

Saturday, April 20, 13

Make it readable

Saturday, April 20, 13

Make it JSON

Saturday, April 20, 13

Xcode don’t care

Saturday, April 20, 13

The End

Michele Titolo@micheletitolo

Saturday, April 20, 13

top related