Speeding Up Android Development with Exopackage
David Reiss, Engineer at Facebook
Abstract: Buck is a build system for Android that encourages the creation of small, reusable modules consisting of code and resources. Because Android applications are predominantly written in Java, Buck also functions as a Java build system. Buck has an advanced feature to speed up iterative Android development called exopackage. An exopackage is a small shell of an Android app that contains the minimal code and resources needed to bootstrap loading the code for a full-fledged Android application. Loading the application code at runtime avoids a full reinstall of the app when testing a Java change, which dramatically reduces the length of edit/refresh cycles.
Scaling a Mobile-Only Company
Paul Holden, Mobile Platform Lead, Uber
Abstract: How do you go about building a mobile-first team? What are the challenges in scaling the user base? We will walk you through the Uber journey of how we tackled these questions - the paths we took, lessons we learnt and where we are heading in the future. This talk will cover how we organized our team and built our development process to help scale Uber.
Microsoft Office Cross-Platform Architecture
Igor Zaika, Distinguished Engineer, Microsoft Office
Abstract: What does it take to target multiple major mobile devices (as well as traditional environments) with portable, efficient, single-source code? This talk demonstrates architectures, techniques, and lessons learned rooted in experience of building Microsoft Office (Word, Excel, PowerPoint, OneNote, Lync) on iOS, Android, Windows, and Mac.
This talk covers the following key topics and tradeoffs:
-Rich vs. reach, including access to latest OS features (e.g., iOS 8 additions) and hardware features (e.g., vector units, GPUs).
-Consistency of experience and functionality.
-Client code vs. server/service web code.
-Sharing vs. quality, including dialing appropriately between more shared code and high quality, platform appropriate, UX and code.
-Drawing the line between the bulk of C++ code and interfacing with non-C++ for UX and PALs (platform adaptation/abstraction layers) for target-specific user interface and system services.
-Architecting PALs, including why “mini-PALs” rather than an “über-PAL”.
-Evolving a very large code base.
Scaling Android Apps for Emerging Markets
Chris Marra, Product Manager at Facebook
Tyler Kieft, Engineer at Instagram
Andrew Rogers, Engineering Manager at Facebook
Abstract: In the past few years, Android's growth has been staggering, and now more than half a billion people connect to Facebook each month from more than 40,000 different device models. In order to develop great products for these people, getting smart about performance, connectivity, and device characteristics has become crucial for Facebook and Instagram. We'll discuss the qualitative and quantitative approaches we've taken to better understand the Android device market, and present the way we've scaled this in the organization. We'll cover performance optimizations from a recent redesign of the Instagram application. We'll also cover the ways we've made the Facebook for Android application smarter about its device and network, and the optimizations we're exploring for the future.