How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and...

38
Romain Pouclet @palleas How iOS apps are actually built

Transcript of How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and...

Page 1: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Romain Pouclet @palleas

How iOS apps are actually built

Page 2: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Lessons from building 1000s of iOS apps in the cloud

Page 3: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Common software development practicesDevelopers and users working together to build great applications

Create

Fix

Share

Feedback

Mobile Development

Team

Users Test

Page 4: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Throughout this lifecycle your teams have to make 1000s of decisions

Page 5: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Systems and workflowThe systems required to build great software

Continuous Integration

Analytics & Crash Reporting Feedback

Continuous Deployment

Complex & Cumbersome Difficult to Provision Users

Inefficient & AmbiguousIncomplete & Lacking Context

DevelopersMobile

Page 6: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

An “ecosystem” one-off solutionsToo much time is spent connecting disparate tools

DevelopersMobile

Continuous Integration

Crash Reporting Feedback

Continuous Deployment

Paid user testing

Page 7: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

19 pages just to get your app built and deployed when using traditional CI and deployment tools

“I spent about 10 hours googling cryptic error messages, when trying to configure the build.”

“...if you haven't got a few years of linux admin under your belt, you can write off the rest of the week.”

“...in other words: it sucks at building and testing software.”

Page 8: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

✨Mobile optimized CI/CD solution✨

• Zero configuration ci• Automatic UDID

management• Crash Reports with

context• Frictionless deployment• Feedback from your

testers

Page 9: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Let’s look at the data

Page 10: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Cloud hosted vs self hosted gitDo teams host themselves?

Self Hosted10%

Cloud90%

Page 11: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

In the cloud, where is the code?GitHub, Bitbucket, Gitlab, Beanstalk,

Others4%

Bitbucket36%

GitHub60%

Page 12: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

What do teams use to self-host?Gitlab, Bitbucket Server/Stash, GitHub Enterprise

Github16%

Bitbucket server30%

Gitlab54%

Page 13: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Minimum supported iOS versionsMost apps support iOS 8 and up, but a meaningful number still support lower versions

iOS 826%

iOS 947%

iOS 1024% iOS 11

iOS 10iOS 9iOS 8iOS 7

13

Page 14: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Are people developing watchOS apps?Vast majority of apps don’t include Apple watch apps

No watch app3%

Page 15: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Are people developing tvOS apps?Relative to iOS apps in development, tvOS is vanishingly small

1%

No tvOS app99.0%

Page 16: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Hybrid App UsageStill a number of apps built with non-native tech

Hybrid15%

Native85%

Page 17: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Swift vs Objective C

Both45%

Obj C Only30%

Swift Only25%

Page 18: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Swift versions

Swift 46%

Swift 392%

Swift 22%

Page 19: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Xcode Adoption

Xcode 98%

Xcode 886%

Xcode 76%

Page 20: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Number of build configurationsVast majority of teams stick with the simple Release vs Debug build configurations

2 3 4 5 6 7 8 9 10 11

Waiting for Richie

Page 21: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Cocoapods & Carthage Both3%

Neither20%

Carthage7%

Pods70%

Page 22: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Do teams check in the Pods folder?• Gives more control, but can cause more difficult merge conflicts

Check in54%

Doesn't check in46%

Page 23: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

What about big teams (> 5 devs)• Gives more control, but can cause more difficult merge conflicts

Has Pods Folder39

No Pods Folder61

TODO

Page 24: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Pods listed in the PodfileMany apps depend on many Pods

0 10 20 30 40 50 60 70 80

TODO

Page 25: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

What version of cocoapods do teams use?Gitlab, Bitbucket Server/Stash, GitHub Enterprise

Pre 1.0 1.1 1.2 1.3

Page 26: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

5% of apps are missing the Podfile.lock from repo

CocoapodsMetadatais_pod_folder_in_git_ignore

Page 27: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

2660 Unique Pods are referencedTODO

Page 28: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Pods used in more than 15% of appsDominated by Twitter, Facebook, Google, Realm

along with a number of interesting community projects

Fabric 49%Crashlytics 47%Alamofire 41%AFNetworking 40%Bolts 38%SDWebImage 37%FBSDKCoreKit 36%FBSDKLoginKit 31%GoogleAnalytics 29%MBProgressHUD 28%GoogleUtilities 28%

GoogleSymbolUtilities 27%GoogleInterchangeUtilities 25%FirebaseAnalytics 21%FirebaseInstanceID 21%SwiftyJSON 20%Realm 18%FBSDKShareKit 17%RealmSwift 16%SVProgressHUD 17%Google 17%CocoaLumberjack 16%

TODO

Page 29: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

TestsWhich Xcode projects contain tests?

Does not have tests55%

Has tests45%

Page 30: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Do people actually run tests?Most projects don’t run tests in CI

No running25%

Running tests75%

Page 31: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

How many tests do teams actually have?Number of tests vs frequency of teams. Vast majority of teams have under 100 tests

0 750 1500 2250 3000

Waiting for PR

Page 32: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Custom Scripting

Page 33: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Custom ScriptsHow many people add custom scripts to get something done in buddybuild?

86%

14%

No scripts

Added custom scripts

To do

Page 34: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

What are people doing in custom scripts?Out of a 1000 app sample in buddybuild

npm 37fastlane 29curl 21pod 13S3 9git clone 8gem install 8CFBundleVersion 7

brew install 7HockeyApp 4codecov.io 4Crashlytics 4swiftgen 1

To do

Page 35: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Apple Developer Portal

Page 36: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Apple Developer ConnectionsApple Developer Connections allow automatic provisioning profile management, UDID management, and uploading to iTunes Connect

No connection27%

Has connection73%Ask Matt

Page 37: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

What type of Apple accounts do developers use?

Enterprise8%

Company73%

Individual18%Check dashboard

Page 38: How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and up, but a meaningful number still support lower versions iOS 8 26% iOS 9 47% iOS

Who is using buddybuild?