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

Preview:

Citation preview

Romain Pouclet @palleas

How iOS apps are actually built

Lessons from building 1000s of iOS apps in the cloud

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

Create

Fix

Share

Feedback

Mobile Development

Team

Users Test

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

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

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

DevelopersMobile

Continuous Integration

Crash Reporting Feedback

Continuous Deployment

Paid user testing

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.”

✨Mobile optimized CI/CD solution✨

• Zero configuration ci• Automatic UDID

management• Crash Reports with

context• Frictionless deployment• Feedback from your

testers

Let’s look at the data

Cloud hosted vs self hosted gitDo teams host themselves?

Self Hosted10%

Cloud90%

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

Others4%

Bitbucket36%

GitHub60%

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

Github16%

Bitbucket server30%

Gitlab54%

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

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

No watch app3%

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

1%

No tvOS app99.0%

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

Hybrid15%

Native85%

Swift vs Objective C

Both45%

Obj C Only30%

Swift Only25%

Swift versions

Swift 46%

Swift 392%

Swift 22%

Xcode Adoption

Xcode 98%

Xcode 886%

Xcode 76%

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

Cocoapods & Carthage Both3%

Neither20%

Carthage7%

Pods70%

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

Check in54%

Doesn't check in46%

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

Has Pods Folder39

No Pods Folder61

TODO

Pods listed in the PodfileMany apps depend on many Pods

0 10 20 30 40 50 60 70 80

TODO

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

Pre 1.0 1.1 1.2 1.3

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

CocoapodsMetadatais_pod_folder_in_git_ignore

2660 Unique Pods are referencedTODO

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

TestsWhich Xcode projects contain tests?

Does not have tests55%

Has tests45%

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

No running25%

Running tests75%

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

Custom Scripting

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

86%

14%

No scripts

Added custom scripts

To do

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

Apple Developer Portal

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

No connection27%

Has connection73%Ask Matt

What type of Apple accounts do developers use?

Enterprise8%

Company73%

Individual18%Check dashboard

Who is using buddybuild?