How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and...
Transcript of How iOS apps are actually built - Amazon Web Services · 2017-11-26 · Most apps support iOS 8 and...
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?