Your SlideShare is downloading. ×
  • Like
Droidcon2013 facebook stewart
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Droidcon2013 facebook stewart

  • 344 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
344
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
9
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Simon Stewartsimons@fb.comgithub.com/shs96c@shs96cBuilding Facebook for Android1
  • 2. Mid 2012: becoming native▪ “We were never able to get the quality that we wanted. Looking back, that’s probablyone of the biggest if not the biggest mistake [we made]”http://www.flickr.com/photos/anandham/4499539060/2
  • 3. Engineers committing mobile code3
  • 4. (but there are spoons)There is no Android team4
  • 5. A developer’s day5
  • 6. Build6
  • 7. The working copy▪ We use git for source control▪ Two branches we care about day-to-day:▪ master▪ stable7
  • 8. How the code is organizedTexthttp://www.flickr.com/photos/darwinbell/3030214710/8
  • 9. ▪ git checkout -b fancy_feature▪ hack, hack, hack▪ git commit -am ‘Fancy new feature’▪ git rebase origin/stable▪ hack, hack, hack,▪ git commit -am ‘checkpoint’▪ git rebase -i HEAD~2▪ arc diff9
  • 10. Dependency injectionhttp://www.flickr.com/photos/31246066@N04/5253179784/10
  • 11. Test11
  • 12. Developers write tests12
  • 13. Unit testshttp://www.flickr.com/photos/aracelota/4773084433/13
  • 14. Larger testshttp://www.flickr.com/photos/amphalon/6510474165/14
  • 15. Commit15
  • 16. Code review▪ arc diff16
  • 17. Image macros17
  • 18. Arcanist▪ The command line counterpart to Phabricator▪ arc lint▪ Runs Android’s own lint tool▪ Checks for common errors:▪ Null pointers▪ Using APIs unavailable in all supported Android versions▪ arc land▪ Pushes code into the tree18
  • 19. Buildbot19
  • 20. Dogfood20
  • 21. Gingerbread▪ Still incredibly popular.▪ Some employees use a Gingerbread device▪ Including our release manager21
  • 22. Updates▪ Employees use more recent version of the apps▪ Rage shake to report bugshttp://www.flickr.com/photos/raindrift/7095238893/in/set-7215762949290803822
  • 23. Release23
  • 24. Pick twoFeatures, quality, schedule24
  • 25. Time based releasesTexthttp://www.flickr.com/photos/andyhay/6947688734/25
  • 26. “Done” isn’t just native code▪ Design▪ Release branch doesn’t take design changes, implies work isn’t quite ready▪ Logging▪ How do we know we aren’t regressing without data?▪ Server-Side▪ We need to test the interactions our users will see▪ Privacy and Legal review▪ Just as important as code review26
  • 27. Questions?27