SlideShare a Scribd company logo
1 of 24
Download to read offline
HOW TO XCODE IN TEAMS(Without killing anyone)
@Supmenow
#SUPENGINEERING @Supmenow
Alex Barton
CTO
@alexmbarton
James Campbell
iOS Engineer
@jcampbell_05
Tiziano Bruni
iOS Engineer
@t_bruni
THE PROBLEM @Supmenow
A beautiful seamless experience to
see your friends more
https://bnc.lt/apps-world
@Supmenow
See Facebook Friends. See when they’re nearby 

or meet someone new.
Start a conversation.
@Supmenow
ON YOUR TERMS
A beautiful seamless experience to
see your friends more
https://bnc.lt/apps-world
TIPS TO HELP YOU SPEND
MORE TIME BUILDING
AWESOME PRODUCTS
@Supmenow
7
HOW TO XCODE IN TEAMS
WHAT ARE THE ISSUES ? @Supmenow
➤Conflicts.
➤Time consuming to maintain.
➤Inconsistent behaviour between development machines.
TIP 1: .GITIGNORE @Supmenow
Xcode Projects contain a lot of information about what each developer was doing.
We can use a .gitignore file to ignore all of that.
## Build generated
build/
DerivedData
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
## Mac Files
.DS_Store?
.DS_Store
TIP 2: .GITATTRIBUTE @Supmenow
git doesn’t really understand Xcode projects, we can use .gitattribute file to
let it know what to do when resolving conflicts.
*.pbxproj binary merge=union
TIP 3: COCOAPODS @Supmenow
“CocoaPods is the dependency manager for Swift
and Objective-C Cocoa projects.”
LIBRARIES MADE EASY @Supmenow
target 'myapp' do
pod 'FlatUIKit'
end
We can easily add and maintain code written by others without
having to add it to our project manually.
We just need to create a podfile and cocoapods does the rest.
TIP 4: FASTLANE @Supmenow
Fastlane allows you to automate the process of testing and releasing
your application.
TIP 4: FASTLANE @Supmenow
Fastlane uses the concept of lanes. Each
lane is different way of distributing your
app.
It could be to the app store or just to test
flight.
We describe all of this inside of a fastfile
Your App
@Supmenow
TIP 4: FASTLANE
Fastlane tools:
TIP 4: FASTLANE @Supmenow
lane :appstore do
increment_build_number
cocoapods
xctool
snapshot
sigh
deliver
sh "./customScript.sh"
slack
end
Fastfile:
TIP 5: BUNDLER @Supmenow
Manage the development tools used for your
applications.
TIP 5: BUNDLER @Supmenow
source "https://rubygems.org"
gem "cocoapods", "~> 0.39"
gem "fastlane", "~> 1.36"
We use a lot of tools when developing our apps, controlling which
version we use makes it easier when working in teams.
We just need to create our gemfile, describing which and what
version of our tools.
TIP 6: CI @Supmenow
Allows you to integrate changes from each developer and see how it affects the app
TIP 6: CI @Supmenow
To tell travis how to build our app we simply use a .travis.yml file and it will
handle the rest.
language: objective-c
osx_image: xcode7
script: fastlane beta
TIP 7: COMMUNICATION @Supmenow
Sup. A Social Connection app that 

brings people together by letting
them know when friends are nearby.
https://bnc.lt/apps-world
Alex Barton
CTO
@alexmbarton
James Campbell
iOS Engineer
@jcampbell_05
Tiziano Bruni
iOS Engineer
@t_bruni
#SUPENGINEERING @Supmenow
WE HAVE BLOG
https://medium.com/sup-engineering

More Related Content

What's hot

FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & Automation
Sergey Tihon
 

What's hot (20)

Unpacking Developer Experience
Unpacking Developer ExperienceUnpacking Developer Experience
Unpacking Developer Experience
 
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
 
Introduction to development with Django web framework
Introduction to development with Django web frameworkIntroduction to development with Django web framework
Introduction to development with Django web framework
 
Evernote release process
Evernote release processEvernote release process
Evernote release process
 
Create Cross-Platform Native Mobile Apps in Flex with ELIPS Studio
Create Cross-Platform Native Mobile Apps in Flex with ELIPS StudioCreate Cross-Platform Native Mobile Apps in Flex with ELIPS Studio
Create Cross-Platform Native Mobile Apps in Flex with ELIPS Studio
 
GlueCon'11 - Native vs Wrapped Mobile apps : What to Build ?
GlueCon'11 - Native vs Wrapped Mobile apps : What to Build ?GlueCon'11 - Native vs Wrapped Mobile apps : What to Build ?
GlueCon'11 - Native vs Wrapped Mobile apps : What to Build ?
 
VDC Conference 2011 - Developing Cross-Platform Apps
VDC Conference 2011 - Developing Cross-Platform AppsVDC Conference 2011 - Developing Cross-Platform Apps
VDC Conference 2011 - Developing Cross-Platform Apps
 
How to edit in Capcut?
How to edit in Capcut?How to edit in Capcut?
How to edit in Capcut?
 
Continuous Delivery for Mobile
Continuous Delivery for MobileContinuous Delivery for Mobile
Continuous Delivery for Mobile
 
Google App Inventor
Google App InventorGoogle App Inventor
Google App Inventor
 
FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & Automation
 
Hello PhoneGap
Hello PhoneGapHello PhoneGap
Hello PhoneGap
 
Ofir Dagan - (Don’t) Blame it on React Native - Codemotion Rome 2019
Ofir Dagan - (Don’t) Blame it on React Native - Codemotion Rome 2019Ofir Dagan - (Don’t) Blame it on React Native - Codemotion Rome 2019
Ofir Dagan - (Don’t) Blame it on React Native - Codemotion Rome 2019
 
SydMobNet September 2014: ReactiveUI, Genymotion, Xamarin.UITest and Xamarin ...
SydMobNet September 2014: ReactiveUI, Genymotion, Xamarin.UITest and Xamarin ...SydMobNet September 2014: ReactiveUI, Genymotion, Xamarin.UITest and Xamarin ...
SydMobNet September 2014: ReactiveUI, Genymotion, Xamarin.UITest and Xamarin ...
 
Drupoid
DrupoidDrupoid
Drupoid
 
DevOps + MongoDB Serverless = 
DevOps + MongoDB Serverless = DevOps + MongoDB Serverless = 
DevOps + MongoDB Serverless = 
 
Plugin development
Plugin developmentPlugin development
Plugin development
 
Google Apps Script Overview
Google Apps Script OverviewGoogle Apps Script Overview
Google Apps Script Overview
 
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
 
ApacheCon 2011
ApacheCon 2011ApacheCon 2011
ApacheCon 2011
 

Similar to How to xcode in teams (without killing anyone) - #supengineering

The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
Hinling Yeung
 
Documenting apps ti confnyc
Documenting apps   ti confnycDocumenting apps   ti confnyc
Documenting apps ti confnyc
Jamil Spain
 

Similar to How to xcode in teams (without killing anyone) - #supengineering (20)

Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
 
Building a design system with (p)react
Building a design system with (p)reactBuilding a design system with (p)react
Building a design system with (p)react
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Cucumber meets iPhone
Cucumber meets iPhoneCucumber meets iPhone
Cucumber meets iPhone
 
TiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium ApplicationsTiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium Applications
 
Documenting apps ti confnyc
Documenting apps   ti confnycDocumenting apps   ti confnyc
Documenting apps ti confnyc
 
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
 
Importance Of Alert And Notification In App Dev
Importance Of Alert And Notification In App DevImportance Of Alert And Notification In App Dev
Importance Of Alert And Notification In App Dev
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
GeeCON 2015 DevOps and the dark side
GeeCON 2015 DevOps and the dark side GeeCON 2015 DevOps and the dark side
GeeCON 2015 DevOps and the dark side
 
DevOps & the Dark Side 10 ways to convince your team DevOps is a force for good
DevOps & the Dark Side 10 ways to convince your team DevOps is a force for goodDevOps & the Dark Side 10 ways to convince your team DevOps is a force for good
DevOps & the Dark Side 10 ways to convince your team DevOps is a force for good
 
Lessons learned maintaining Open Source ActionScript projects
Lessons learned maintaining Open Source ActionScript projectsLessons learned maintaining Open Source ActionScript projects
Lessons learned maintaining Open Source ActionScript projects
 
Testing Native Apps at PAYBACK
Testing Native Apps at PAYBACKTesting Native Apps at PAYBACK
Testing Native Apps at PAYBACK
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
Continuous delivery of embedded systems embedded meetup
Continuous delivery of embedded systems   embedded meetupContinuous delivery of embedded systems   embedded meetup
Continuous delivery of embedded systems embedded meetup
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
 

Recently uploaded

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
jaanualu31
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 

Recently uploaded (20)

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
School management system project Report.pdf
School management system project Report.pdfSchool management system project Report.pdf
School management system project Report.pdf
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
kiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal loadkiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal load
 
Bridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptxBridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptx
 
Rums floating Omkareshwar FSPV IM_16112021.pdf
Rums floating Omkareshwar FSPV IM_16112021.pdfRums floating Omkareshwar FSPV IM_16112021.pdf
Rums floating Omkareshwar FSPV IM_16112021.pdf
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 

How to xcode in teams (without killing anyone) - #supengineering

  • 1. HOW TO XCODE IN TEAMS(Without killing anyone) @Supmenow
  • 2. #SUPENGINEERING @Supmenow Alex Barton CTO @alexmbarton James Campbell iOS Engineer @jcampbell_05 Tiziano Bruni iOS Engineer @t_bruni
  • 4. A beautiful seamless experience to see your friends more https://bnc.lt/apps-world
  • 5. @Supmenow See Facebook Friends. See when they’re nearby 
 or meet someone new. Start a conversation.
  • 7. A beautiful seamless experience to see your friends more https://bnc.lt/apps-world
  • 8. TIPS TO HELP YOU SPEND MORE TIME BUILDING AWESOME PRODUCTS @Supmenow 7 HOW TO XCODE IN TEAMS
  • 9. WHAT ARE THE ISSUES ? @Supmenow ➤Conflicts. ➤Time consuming to maintain. ➤Inconsistent behaviour between development machines.
  • 10. TIP 1: .GITIGNORE @Supmenow Xcode Projects contain a lot of information about what each developer was doing. We can use a .gitignore file to ignore all of that. ## Build generated build/ DerivedData ## Various settings *.pbxuser !default.pbxuser *.mode1v3 !default.mode1v3 *.mode2v3 !default.mode2v3 *.perspectivev3 !default.perspectivev3 xcuserdata ## Other *.xccheckout *.moved-aside *.xcuserstate *.xcscmblueprint ## Obj-C/Swift specific *.hmap *.ipa ## Mac Files .DS_Store? .DS_Store
  • 11. TIP 2: .GITATTRIBUTE @Supmenow git doesn’t really understand Xcode projects, we can use .gitattribute file to let it know what to do when resolving conflicts. *.pbxproj binary merge=union
  • 12. TIP 3: COCOAPODS @Supmenow “CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects.”
  • 13. LIBRARIES MADE EASY @Supmenow target 'myapp' do pod 'FlatUIKit' end We can easily add and maintain code written by others without having to add it to our project manually. We just need to create a podfile and cocoapods does the rest.
  • 14. TIP 4: FASTLANE @Supmenow Fastlane allows you to automate the process of testing and releasing your application.
  • 15. TIP 4: FASTLANE @Supmenow Fastlane uses the concept of lanes. Each lane is different way of distributing your app. It could be to the app store or just to test flight. We describe all of this inside of a fastfile Your App
  • 17. TIP 4: FASTLANE @Supmenow lane :appstore do increment_build_number cocoapods xctool snapshot sigh deliver sh "./customScript.sh" slack end Fastfile:
  • 18. TIP 5: BUNDLER @Supmenow Manage the development tools used for your applications.
  • 19. TIP 5: BUNDLER @Supmenow source "https://rubygems.org" gem "cocoapods", "~> 0.39" gem "fastlane", "~> 1.36" We use a lot of tools when developing our apps, controlling which version we use makes it easier when working in teams. We just need to create our gemfile, describing which and what version of our tools.
  • 20. TIP 6: CI @Supmenow Allows you to integrate changes from each developer and see how it affects the app
  • 21. TIP 6: CI @Supmenow To tell travis how to build our app we simply use a .travis.yml file and it will handle the rest. language: objective-c osx_image: xcode7 script: fastlane beta
  • 22. TIP 7: COMMUNICATION @Supmenow
  • 23. Sup. A Social Connection app that 
 brings people together by letting them know when friends are nearby. https://bnc.lt/apps-world
  • 24. Alex Barton CTO @alexmbarton James Campbell iOS Engineer @jcampbell_05 Tiziano Bruni iOS Engineer @t_bruni #SUPENGINEERING @Supmenow WE HAVE BLOG https://medium.com/sup-engineering