droidcon SF 2019

Paths

droidcon SF 2019

Author: droidcon SF

Droidcon is the largest global network of developer conferences which bring together the industry's foremost experts dedicated to advancing the Android platform. Droidcon engages... Read more

What You Will Learn

  • Android
  • Kotlin
  • Flutter
  • Jetpack
  • MotionLayout

Pre-requisites

None.

Beginner

These talks are beginner friendly.

droidcon SF 2019 Welcome Address

by droidcon SF

Dec 19, 2019 / 7m

7m

Start Course
Description

Welcome to droidcon SF 2019! In this session, you'll receive an intro to all things going on at droidcon Global and you'll hear a few words from our program committee co-chairs.

Table of contents
  1. Welcome Address

Opening Keynote: Android Then & Now

by droidcon SF

Dec 19, 2019 / 45m

45m

Start Course
Description

Android development has come a long way since 1.0. How did we get here? And, now that we're here, what do we do next? In this keynote, Romain Guy and Chet Haase will go over the landscape of Android development through the years, the releases, what Android platform priorities are now, and what this all means for developers.

Table of contents
  1. Opening Keynote: Android Then & Now

Easy, Scalable Backends for Android Developers

by droidcon SF

Dec 19, 2019 / 40m

40m

Start Course
Description

In the past, engineering teams typically split front end and back end responsibilities. As an Android developer, you almost certainly slotted into the front end category with no responsibility on the back end. And, if you do want to work on the back end for an app, it can be taxing to learn new tools and languages, while being responsible for managing and scaling a server farm. Today, with serverless back ends becoming popular, server management and scaling is being fully automated, and you can use many of the same tools and languages you use for Android development. Do you want to write Kotlin everywhere? There is a solution for you! Join this talk with Doug Stevenson to survey some serverless options provided by Google, see some demos, and figure out which options are right for you.

Table of contents
  1. Easy, Scalable Backends for Android Developers

The Facebook Mobile Performance Tooling Ecosystem: An Overview

by Pluralsight

Dec 19, 2019 / 17m

17m

Start Course
Description

Keeping the Facebook family of apps performant is a company-level priority, and the team has developed an extensive ecosystem of performance tooling and developer workflows to achieve this. In this talk, Tim Mellor will cover how Facebook thinks about mobile app performance, how and why Facebook developed their performance tools and workflows, and how the tools work together to streamline the developer experience.

Table of contents
  1. The Facebook Mobile Performance Tooling Ecosystem: An Overview

The Journey from Legacy Code to Idiomatic Kotlin

by Pluralsight

Dec 19, 2019 / 15m

15m

Start Course
Description

We are often faced with large legacy codebases in Java that need to be converted to Kotlin. Sure, you can let Android Studio do the conversion, but then you end up with inefficient Kotlin code. So, where do you begin? This talk walks you through key steps in converting your Java codebase to efficient, idiomatic Kotlin. After working with multiple clients on legacy projects, Seetha Annamraju has learned lessons on doing this conversion efficiently while ensuring that you are taking full advantage of Kotlin. We will walk through the process and provide tips on major components that generally require attention.

Table of contents
  1. The Journey from Legacy Code to Idiomatic Kotlin

Full-stack Automation of UI Testing on a Custom Android Firmware

by droidcon SF

Dec 19, 2019 / 14m

14m

Start Course
Description

Working on a custom Android firmware has its own challenges, especially if you have a suite of system applications that requires UI testing. Manually, you would need to flash your device with the custom ROM, run UI tests on it, and check the results. If you have a high-cadence delivery cycle, this can become troublesome fast. In this talk, Faraz M.R. and Bharath MG will walk you through how Hammerhead automated UI testing of their custom firmware and integrated it with their CI/CD pipeline. With this setup, their custom hardware downloads the custom ROM, runs tests across applications, and uploads the results to the CI server without human intervention.

Table of contents
  1. The Device Is Running on Its Own! Full-stack Automation of UI Testing on a Custom Android Firmware

A Day in the Life of a Mobile Malware Reverse Engineer

by droidcon SF

Dec 19, 2019 / 28m

28m

Start Course
Description

Android applications are a powerful vehicle to deliver content and new experiences to the users of mobile devices. Unfortunately, bad actors can also use this type of applications to steal information, user credentials and commit fraud. This talk will describe how the members of the Android malware research team identify malicious applications on a daily basis, from detecting spyware to finding and responding to phishing campaigns. Salvador Mandujano will introduce some of the most severe malware categories, static and dynamic analysis considerations that reverse engineers need to have in mind when studying Android apps, and common obfuscation challenges that need to be resolved in order to produce evidence that an app's behavior is affecting users and violating Google application safety policies.

Table of contents
  1. A Day in the Life of a Mobile Malware Reverse Engineer

MotionLayout & Motion Editor

by droidcon SF

Dec 19, 2019 / 33m

33m

Start Course
Description

MotionLayout is a new class in ConstraintLayout 2.0 that dramatically simplifies the creation of animations, particularly related to handling motion and touch events. In this session, Nicolas Roard and John Hoford will cover what the library is capable of, where it makes sense to use it, and how to take advantage of the upcoming Motion Editor in Android Studio to quickly add motion to your application.

Table of contents
  1. MotionLayout & Motion Editor

Coroutines Zero to Hero

by droidcon SF

Dec 19, 2019 / 30m

30m

Start Course
Description

In this session, Paulo Sato will cover what coroutines are, how coroutines work in Kotlin, including the principal methods like launch, withContext, and async, what CorutinesContext is, the differences and pitfalls to synchronizing your code using coroutines instead of threads, and how to use coroutines to implement back-pressure to a stream of events.

Table of contents
  1. Coroutines Zero to Hero

Results of Scanning the Top 45 Android Mobile Banking Apps

by droidcon SF

Dec 19, 2019 / 32m

32m

Start Course
Description

In this session, Scott King provides details on development best practices, data leakage risk, and security exposure for 45 Android mobile apps from the top US banks and mobile payment providers. The research displays vulnerabilities in consumer mobile banking apps and the correlating risk they introduce for banks and mobile users. Several of the mobile banking applications score low on application development best practices, use of shared or outdated code, and overuse of third-party services or SDKs. The knowledge gained here will enable developers and mobile banking channel owners insight on the exact items needed to build more secure banking apps and to reduce banking fraud via the mobile channel.

Table of contents
  1. Results of Scanning the Top 45 Android Mobile Banking Apps

Your Strengths Include: Work/Life Balance

by droidcon SF

Dec 19, 2019 / 36m

36m

Start Course
Description

As developers, many of us are fortunate to be passionate about our work. However, passion often ends up being coded language for working extra hours. Things like personal projects, maintaining a portfolio website, or even keeping up-to-date on new libraries and best practices take time and effort that we might prefer spending in other areas. In the end, we all only have 24 hours in a day, 168 hours in a week. Between our family, career, health, and happiness, what should we prioritize? In this session, Parth Padgaonkar will discuss tips for setting boundaries while maintaining career progression, all the while emphasizing making intentional, empowered decisions about your happiness. Work+life balance? Why not both?

Table of contents
  1. Your Strengths Include: Work/Life Balance

We Gave a Mouse an NDK: Non Android Developers' Experience with NDK

by Pluralsight

Dec 19, 2019 / 35m

35m

Start Course
Description

In this session, you'll hear a story about debugging native code on Android in production and how that builds through the lens of developers who were previously not exposed to the world of Android.

Table of contents
  1. We Gave a Mouse an NDK: Non Android Developers' Experience with NDK

Growing at Work with Community-oriented Development

by droidcon SF

Dec 19, 2019 / 14m

14m

Start Course
Description

Professional development stagnation is a common problem in any industry. Let's consider some not-so-obvious solutions to reinvigorate learning and growth in the workplace. In this talk, you'll learn how to create opportunities to help you and others in your community grow through starting Android tech talks, roundtable discussions, workgroups, and other initiatives. These are all things we have implemented at our growing team at Wayfair to great effect.

Table of contents
  1. Growing at Work with Community-oriented Development

Kotlin Internal DSL - Create Your Own Language!

by droidcon SF

Dec 19, 2019 / 37m

37m

Start Course
Description

Want to make your code eloquent, artistic, and expressive with a removed boilerplate? DSL (Domain specific language), though around for quite some time, has gained more momentum with Kotlin, which provides powerful and advantageous language features. In this talk, Vignesh Ramakrishnan introduces and highlights custom DSLs with Kotlin features.

Table of contents
  1. Kotlin Internal DSL - Create Your Own Language!

ARCore: Visualizing the Invisible

by droidcon SF

Dec 19, 2019 / 34m

34m

Start Course
Description

In this session, participants will learn about a National Science Foundation-funded project to develop a smartphone app to visualize magnetic fields with AR. Chrystian Vieyra and Rebecca Vieyra will discuss the opportunities and challenges of working with ARCore and provide visual examples from their recently-developed project, Physics Toolbox AR. They will also share their experience of using ARCore in an educational research setting to help learners make sense of fields in 3d space.

Table of contents
  1. ARCore: Visualizing the Invisible

Consistent Design with Custom Lint Checks

by droidcon SF

Dec 19, 2019 / 23m

23m

Start Course
Description

Android Lint is an extremely useful tool that scans your app for hundreds of potential bugs and common issues, and Lint can do much more for advanced users. In this talk, Alex Lockwood will show you Lyft uses custom lint checks to promote best practices and encourage consistent design across our apps, and how to write them from scratch.

Table of contents
  1. Consistent Design with Custom Lint Checks

Linux & Android Development on Chrome OS

by droidcon SF

Dec 19, 2019 / 22m

22m

Start Course
Description

Chromebooks can run Android apps, but they can also be used to develop them. Emilie Roberts' and Adriana Jara's short talk takes a look at the current state of Linux on Chrome OS and how you can use your device for development.

Table of contents
  1. Linux & Android Development on Chrome OS

Killing XML with Contour

by droidcon SF

Dec 19, 2019 / 30m

30m

Start Course
Description

XML is this weird thing that was invented over 20 years ago as an early web solution for encoding data. It is now 2019 and we are still building apps using this archaic format. How did we get here, why are we still doing this, and why should we change now? In this session, Adam Erb will cover the benefits of abandoning XML defined UIs, and how Contour, a recently open-sourced Cash App library, is a good alternative.

Table of contents
  1. Killing XML with Contour

Playing Videos on Android? ExoPlayer2 at Your Service!

by droidcon SF

Dec 20, 2019 / 40m

40m

Start Course
Description

Playing videos might be easy at first, but this can get tricky when you have to support multiple video/audio formats or offline medias. ExoPlayer2 is here for you! In this session, Julien Salvi will cover the basics of the ExoPlayer, such as how to play a video thanks to the library and its core features. You'll also learn about its architecture, how to set it up, and what video format ExoPlayer supports from classic MP4 to adaptive streams, like HLS or DASH with protected content. A large overview of its capabilities will be highlighted. Then, you will take a look at interesting extensions and features, such as the download manager or the ffmpeg extension for additional audio format support, building playlists, or managing you own DataSource for playing content on SMB servers.

Table of contents
  1. Playing Videos on Android? ExoPlayer2 at Your Service!

Powering Worldwide Learning with Kotlin Multiplatform

by Pluralsight

Dec 19, 2019 / 45m

45m

Start Course
Description

Learn how Quizlet uses Kotlin Multiplatform to build iOS, Android, and web learning experiences for over 50 million users per month. By pinpointing the best areas of Quizlet's codebase to share (and skipping over many others), Quizlet was able to use Kotlin Multiplatform to share the secret sauce of their product. They did this without forcing their Android, iOS, and web clients to follow a rigid, predetermined architecture. You'll hear from Ankush Gupta about Quizlet's journey getting Kotlin Multiplatform into production, how it compares to other approaches of sharing code, and, most importantly, lessons learned about shared code.

Table of contents
  1. Powering Worldwide Learning with Kotlin Multiplatform

Performance by Construction

by droidcon SF

Dec 19, 2019 / 34m

34m

Start Course
Description

In this session, Miguel Azevedo describes the philosophy of "Performance by Construction" and efforts to keep the application and codebase simple, small, and reliable. Miguel will discuss choices and trade-offs that have been made at the architectural level to prevent regressions, ways to optimize efficiency, and how to make apps work at the scale of billions of active users.

Table of contents
  1. Performance by Construction

Get Your App to Work at Work

by droidcon SF

Dec 19, 2019 / 17m

17m

Start Course
Description

In this session, Aser Samak discusses delivering the best experience for Android apps running in the enterprise.

Table of contents
  1. Get Your App to Work at Work

Box Enterprise Security

by droidcon SF

Dec 19, 2019 / 26m

26m

Start Course
Description

In this session, Sudeep Bhowmick and Don Cung will talk on an introductory level about implementing an enterprise grade Android application. They will explain how they built a secure and scalable Android Enterprise and third party MDM (Mobile Device Management) integrations. They will also discuss different Google tools they use with their server side access management.

Table of contents
  1. Box Enterprise Security

Implementing a Design System

by droidcon SF

Dec 20, 2019 / 28m

28m

Start Course
Description

Design systems can help teams move fast and create coherent products. On paper, they are the perfect state of productivity. In practice, they are difficult to get right. The efficiency of reusing resources and setting thoughtful constraints often clashes with creative requirements. In this talk, Nathanael Silverman will explore how Airbnb's Design Language System (DLS) is implemented on Android. Nathanael will also provide a look at component libraries, scaling, testing, and internal tools that Airbnb's Android engineers use every day.

Table of contents
  1. Implementing a Design System

Leveling up

by Pluralsight

Dec 19, 2019 / 1h 32m

1h 32m

Start Course
Description

In this panel, you will learn about Android leadership.

Table of contents
  1. Leveling up

Native, React Native, Flutter, and More

by droidcon SF

Dec 19, 2019 / 20m

20m

Start Course
Description

How does each solution stack up and which should you use? Barlow Tucker will present the highs and lows of each solution.

Table of contents
  1. Native, React Native, Flutter, and More

Intermediate

Are you already familiar with a tool or technology in the Android realm? These droidcon sessions will add to your foundation and understanding.

Learn to Think Like a Hacker

by droidcon SF

Dec 19, 2019 / 32m

32m

Start Course
Description

When your Android app is published, it leaves the safety of your development environment and goes out into the wild. To understand the risks it will be exposed to, it is important to think like a hacker. In this presentation, Verimatrix's Product Manager, Neal Michie, demonstrates how an attacker will reverse engineer your app and provides best practices to defend against them.

Table of contents
  1. Learn to Think Like a Hacker

Performance in a Kotlin World

by droidcon SF

Dec 19, 2019 / 43m

43m

Start Course
Description

Users expect apps to be snappy, responsive, and jank-free. As a developer, you want to use new language features and libraries. How do you make sure these new features deliver the performance users expect? In this talk, you'll learn how to make your app shine with practical performance patterns. After this talk, you'll know how to use Android Studio profilers and the new Jetpack Benchmarking library to find and fix jank and keep it from coming back.

Table of contents
  1. Performance in a Kotlin World

State-machine Driven Payment Flow

by droidcon SF

Dec 19, 2019 / 35m

35m

Start Course
Description

As the world's top-grossing mobile app, payment processing is a crucial part of Tinder. Scaling the payment system is very challenging with a legacy, untestable code base. To resolve the problem, Tinder's team recently made the decision to build a state-machine-based, pluggable solution to represent a universal purchase flow, which is agnostic of any specific payment methods. In this talk, Yisong Wu and Fernando Pereira will share how Tinder's state machine / DSL approach ensures the flow is deterministic, self-documented, and easily testable and how its plug-in system guarantees flexibility by allowing dynamic custom rules to be run along the state transitions.

Table of contents
  1. State-machine Driven Payment Flow

Kotlin Multiplatform Library Development

by droidcon SF

Dec 19, 2019 / 37m

37m

Start Course
Description

One of the most important parts of any software ecosystem is the community support and library development. Kotlin as a platform is no exception. For developers looking to get involved in the open-source world, this is a great time to jump in. While simple libraries are fairly straightforward, there are many details involved in implementing significant libraries, like: Where to use expect/actual? How to wrap existing libraries? How do handle testing, CI, publishing, etc. There's a lot you need to know, and the platform is changing fast.

Table of contents
  1. Kotlin Multiplatform Library Development

Android at Scale @Square

by droidcon SF

Dec 19, 2019 / 31m

31m

Start Course
Description

Codebases naturally grow over time by adding new features, abstractions, and migrating code to new architectures. In this session, Ralf Wondratschek introduces layers to hide implementation details and separate concerns. Good modularization brings many benefits, such as better reusability, shorter build times, and code isolation. Square builds payment, software, and hardware systems that help businesses of any type. The Android Point of Sale repository faces challenges similar to other large code bases. This talk provides an overview of how the repository evolved over the years, the difficulties Square encountered in recent months, and how the team addressed those difficulties with clear structures and common patterns to keep up with ongoing growth.

Table of contents
  1. Android at Scale @Square

Creating Augmented Reality Solutions in Enterprise Verticals

by droidcon SF

Dec 19, 2019 / 34m

34m

Start Course
Description

Smartphone augmented reality (AR) frameworks have brought AR creation within every developer's reach. The consumer AR app space is saturated with games, novelty, furniture placement, and measure apps. Meanwhile, almost every mobile workflow in the Enterprise vertical can benefit from AR by delivering instructions and directions at the real world point of interaction to the user. This talk takes you through building on the smartphone AR frameworks to surmount the hard obstacles that face an Enterprise AR solution: Global Persistence, consistency and robustness and perhaps the most important need: hiding the geekiness of AR from the user. Pat Narendra illustrates this session with live app examples of enterprise AR apps developed for Retail, Warehouse, Transportation and Logistics use cases.

Table of contents
  1. Creating Augmented Reality Solutions in Enterprise Verticals

Kotlin beyond Android

by droidcon SF

Dec 19, 2019 / 30m

30m

Start Course
Description

Join Guillermo Orellana as he tells the story of how he used Kotlin to open up and broaden his horizon. It started with taking the vertical path toward server with Ktor as a companion. Later, Guillermo took the frontend route with KotlinJS and React bindings paving the way. Is the Konan challenge and conquering the iOS ecosystem next?

Table of contents
  1. Kotlin beyond Android

Scalable, Flexible, Modular, Preventative Architecture

by droidcon SF

Dec 19, 2019 / 36m

36m

Start Course
Description

You never want to face issues that you can prevent and it is important to prepare for the next task at hand. Having a flexible and modular architecture allows for easy scaling pivoting with whatever product managers send over to developers. In this talk, Josh Williams will discuss some principles, practices, and things to avoid to make sure the architecture you are building is in a good and agile place.

Table of contents
  1. Buy a Plunger before You Need a Plunger: Scalable, Flexible, Modular, Preventative Architecture

Hands On MvRx: Building Real Apps

by droidcon SF

Dec 19, 2019 / 37m

37m

Start Course
Description

MvRx is an Android architecture library built at Airbnb on top of Jetpack. MvRx is used in hundreds of feature across many companies and exists to make your life as an Android engineer better. In this talk, Gabriel Peal introduces MvRx and then shows its true practical power by building two separate apps live. Come see how MvRx can make your life and your coworkers' life better every day.

Table of contents
  1. Hands On MvRx: Building Real Apps

Reactive Approach to Delegation in Kotlin

by droidcon SF

Dec 19, 2019 / 34m

34m

Start Course
Description

In this session, Aida Issayeva will talk about delegation and delegated properties in Kotlin, how to incorporate them into your custom views, and how to make them react immediately to new data. This talk will also showcase the usage of delegated properties in custom views and enhancing the MVI pattern when dynamically adding different views based on multiple user interactions.

Table of contents
  1. Reactive Approach to Delegation in Kotlin

TP3 & KTP: Simple, Fast, and Boilerplate-free DI for Kotlin

by droidcon SF

Dec 19, 2019 / 25m

25m

Start Course
Description

When you want to use dependency injection (DI) in Kotlin you need to make a decision: Either you sacrifice your coding style by using a Java library or you choose a Kotlin one where you need to write everything yourself. You no longer have to make that choice. TP3/KTP is a Kotlin first dependency injection framework that provides a simple and powerful API. It is boilerplate-free as all the code is generated at compile time using the fastest incremental annotation processing mode. Moreover, it still offers the fast run time performances of Dagger 2. During this talk for intermediate developers, Daniel Molinero Reguera and Stephane Nicolas will introduce TP3/KTP and its main features.

Table of contents
  1. TP3 & KTP: Simple, Fast, and Boilerplate-free DI for Kotlin

Deep Learning: A Practical Introduction from an Android Dev Perspective

by droidcon SF

Dec 19, 2019 / 46m

46m

Start Course
Description

Are you an Android developer interested in building your own Deep learning models but don't know where to start? That was Joaquim Verges a few months ago. Now, Joaquim wants to share lessons learned learned and provide an introduction to deep learning in a very practical way with no intimidating equations, just code. In this talk, you'll get a walk through of how to build your own models, the vocabulary, core concepts, how to set up an environment, how to transform data, and, finally, how to make it all to work in an Android app.

Table of contents
  1. Deep Learning: A Practical Introduction from an Android Dev Perspective

Architecture Agnostic UI Development

by droidcon SF

Dec 19, 2019 / 37m

37m

Start Course
Description

Over the course of the last few years, Vinay Gaba and Marcos Paulo Damasceno have seen a host of different architectures being used and recommended in their ecosystem. With each iteration of these recommended patterns, valuable development cycles are spent by migrating our apps to the latest and greatest. Wouldn't it be great if you could make your UI agnostic without having it attached to any kind of architecture? In this talk, Vinay and Marcos will go through how to leverage UI objects, sealed classes, and state machine to make your UI easier to write, more testable, and more predictable. These changes will allow you to easily switch architectures and UI frameworks without changing much of the core implementation of your UI code.

Table of contents
  1. Architecture Agnostic UI Development

Structure Unit Testing with Spek

by droidcon SF

Dec 19, 2019 / 31m

31m

Start Course
Description

Are you tired of decrypting the JUnit test that you wrote a few weeks back? Do you want to write nice, readable and structured tests that are fun to write and a joy to read? In this session, Martin Petrulak will describe how Spek works, compare Spek with JUnit, and highlight sample tests for a project following a clean architecture pattern (data, domain, and view layer).

Table of contents
  1. Structure Unit Testing with Spek

Let's Build a Dependency Injection Framework [Live Coding]

by droidcon SF

Dec 19, 2019 / 32m

32m

Start Course
Description

Gain a deep understanding of dependency injection (DI) as Leland Takamine live codes a DI framework from scratch. Dependency injection frameworks are often viewed as magical black boxes. This session will help you build a fundamental understanding of what dependency injection is, why it's important, and how it's implemented. With this understanding, dependency injection and dependency injection frameworks become less scary and more intuitive.

Table of contents
  1. Let's Build a Dependency Injection Framework [Live Coding]

Jetpack Security Extension Overview, Data-at-rest, and in-transit

by droidcon SF

Dec 19, 2019 / 17m

17m

Start Course
Description

In this session, Nicole Borrelli will cover the strategies for data encryption on Android using Jetpack Security. The key takeaways include: Learning to encrypt data safely on device and using the AndroidKeyStore.

Table of contents
  1. Jetpack Security Extension Overview, Data-at-rest. and in-transit

ConstraintLayout 2.0 and MotionLayout Workshop

by droidcon SF

Dec 19, 2019 / 38m

38m

Start Course
Description

In this workshop, Nicolas Roard and John Hoford will highlight a series of examples through some of the new layout concepts and features of ConstraintLayout 2.0 and how to best take advantage of them, simplifying UI creation and maintainability. They will also cover the new MotionLayout class, how to integrate it in your applications, and how to leverage it to build great motion-enabled applications.

Table of contents
  1. ConstraintLayout 2.0 and MotionLayout Workshop

Coroutines and Rx: A Battle Towards Asynchronicity

by droidcon SF

Dec 19, 2019 / 25m

25m

Start Course
Description

Coroutines have already changed the way that we all thought of doing asynchronous programming. The transition from the traditional way of doing asynchronous programming to coroutines is also not easy, especially when you have to leave something like RxJava. In this talk, Amanjeet Singh will make you realize how Rx things will look in a coroutine world.

Table of contents
  1. Coroutines and Rx: A Battle Towards Asynchronicity

JUnit 5 Testing: Android Unidirectional Data Flow with LiveData

by droidcon SF

Dec 19, 2019 / 32m

32m

Start Course
Description

Beginning to test the Coinverse app from scratch was daunting at first. You may ask a number of questions. Where do you begin between testing the UI and business logic? How do you handle components that work with the network responses, databases, and analytics? After modularizing the app using Android's Unidirectional Data Flow (UDF) and LiveData, writing local unit tests for the business logic became simpler. In this talk, Adam Hurwitz discusses how to use the UDF pattern with LiveData in Kotlin in order to write JUnit 5 tests with MockK.

Table of contents
  1. JUnit 5 Testing: Android Unidirectional Data Flow with LiveData

Working with Alternative Build Systems

by Pluralsight

Dec 19, 2019 / 39m

39m

Start Course
Description

As a mobile codebase grows, there are new types of challenges developers must tackle. One of the common challenges is the scalability of build systems like Gradle. Uber, Google, and Facebook use Buck and Bazel to work with large codebases. In this talk,Kurt Nelson and Gautam Korlam will talk about how alternative build systems impact both the developer experience and the performance of builds. You will also learn if, when, and how you should switch to them for your own code base.

Table of contents
  1. Working with Alternative Build Systems

Intro to App Modularization

by Pluralsight

Dec 19, 2019 / 33m

33m

Start Course
Description

In this session, Mario Sanoguera will cover the current state of Modularization on Android by covering these questions: What is modularization? Why should I modularize my app? When should I modularize my app? How do I modularize?

Table of contents
  1. Intro to App Modularization

Next Generation Android UI with Jetpack Compose

by Pluralsight

Dec 19, 2019 / 35m

35m

Start Course
Description

Android Widgets have existed since the very first version of Android. Mobile UI paradigms and application needs have changed dramatically since Android 1.0. There have been great solutions that leverage the existing UI widgets and improve them, such as Jetpack (Support Libraries) for backwards compatible support and Data Binding for bringing state and UI closer together. Though they served developers well, the new Kotlin-first approach by Google allows you to imagine what a modern UI framework would look like. Idiomatic, Kotlin-first, with retro-compatibility from the get go and support for live-previews, Jetpack Compose is Google's new experimental way of tackling Android's UI, built from the ground up without any dependence on pre-existing Android Widgets. In this talk, Pedro Veloso will offer a hands-on approach on building a material looking application with Jetpack Compose by using its existing components.

Table of contents
  1. Next Generation Android UI with Jetpack Compose

UI Testing at Pinterest

by droidcon SF

Dec 19, 2019 / 44m

44m

Start Course
Description

At Pinterest, UI testing is a core process of ensuring our Android app does not have any problems. The team has a substantial UI testing suite that they run at scale on every commit. Ryan Cooke will share Pinterest's real-world experience on how they maintain the often challenging infrastructure of UI testing and the tools they have built to allow developers to move faster.

Table of contents
  1. UI Testing at Pinterest

Machine Learning on Android Demystified

by droidcon SF

Dec 20, 2019 / 39m

39m

Start Course
Description

What does it take to implement machine learning in your app? In this talk, Tatyana Casino will suggest different ways to approach this. There will be comparisons between cloud-based services and local (on-device) machine learning, focusing mostly on the latter. On-device predictions are happening strictly on a mobile device, giving you the benefit of keeping the users' data private and not depending on the network connection. Features like Google Lens Suggestions, Call Screening, and Live Caption are all leveraging on-device ML. However, the ML models should be prepared and optimized for efficiency and performance on mobile. For actual implementation, Tatyana will look into how to use TensorFlow Lite SDK for pose estimation. Then there will be coverage of Firebase MLKit Base APIs and using custom models with MLKit. Code examples will be in Kotlin. After attending this talk, you will understand the capabilities and limitations of each of these frameworks. You will have a good idea of where to start, what is necessary to implement your ML idea in your app, and potential issues to be aware of.

Table of contents
  1. Machine Learning on Android Demystified

Attributed Everything: Ensuring Quality for Large Apps

by droidcon SF

Dec 19, 2019 / 39m

39m

Start Course
Description

In this droidcon SF session, engineers from Snapchat's module infrastructure team will talk about various strategies that Snapchat uses to ensure quality for its new Android application, which has hundreds of active contributors across dozens of individual teams. The talk will show how proper attribution of application resources (from CPU and app size to frame rate) can be an effective tool for monitoring app performance and preventing regressions.

Table of contents
  1. Attributed Everything: Ensuring Quality for Large Apps

Advanced & Practical MotionLayout

by Pluralsight

Dec 19, 2019 / 39m

39m

Start Course
Description

ConstraintLayout 2.0 has been steadily releasing new features that give Android developers better animation tools. In this session, Jason Pearson will discuss how to practically use MotionLayout to deliver on complex design asks. This talk will also cover reusing constraints between multiple transitions, how to apply multiple effects at different points in a transition, how and whether to switch between transitions programmatically or automatically, how to link the progress of MotionLayout to other widgets, and how complex interactions with a RecyclerView can be straightforward. Whether you're a senior UI developer who knows the intricacies of Animators or someone who has shied away from animation on Android, this talk should give you a working knowledge of how MotionLayout can make a difference in your app and on your team.

Table of contents
  1. Advanced & Practical MotionLayout

Powering Modularization at Airbnb: Plugin Architecture

by droidcon SF

Dec 19, 2019 / 18m

18m

Start Course
Description

Airbnb prizes modularization for helping the team drive code ownership and decrease build times. These benefits also bring increased complexity and boilerplate. Our Plugin architecture, using an annotation processor and Dagger's multibindings, allows us to reduce those costs and capture some additional benefits. Some of these are: a single source of truth for a plugin/plugin point; abstracting away Dagger gotchas; adding our own compile-time enforcements; and getting some additional value out of the IDE (e.g., finding usages for all plugins contributing to a plugin point). Airbnb introduced the architecture in their 2018 vision and implemented it this year, 2019. In this talk, Adell Hanson-Kahn will go over the benefits listed above and how the tooling works.

Table of contents
  1. Powering Modularization at Airbnb: Plugin Architecture

Level up Your Extension Game

by droidcon SF

Dec 19, 2019 / 13m

13m

Start Course
Description

In this talk Aida Issayeva will go over some good and bad practices for using extensions in Kotlin as well as use cases for the Kotlin's standard and Android KTX extension functions.

Table of contents
  1. Level up Your Extension Game

E2E2U: Slack's Journey to Developer-driven End-to-end Testing

by droidcon SF

Dec 20, 2019 / 43m

43m

Start Course
Description

Two years ago, the Slack team presented on an approach that makes authoring reliable Android UI tests easier. To date, Slack Android developers have written 637 UI tests and all of them run as part of a merge-blocking (and, most importantly, reliable) pull-request check. Having conquered this level, we set our sights on the top of our test pyramid - automated end to end tests. This test suite was still being maintained by a single hero developer, who, through sheer grit and determination, didn't let this important part of the release process die. Armed with experience in functional UI testing, Slack embarked on an adventure to make our end-to-end test suite a shared responsibility of the entire team. The team's journey has taken them through the fields of Dagger, the bog of Espresso IdlingResources, the inferno of ProGuard and, perhaps, the most challenging of them all, cultural aspects of quality assurance. Valera Zakharov looks forward to sharing where Slack is in their never-ending testing story.

Table of contents
  1. E2E2U: Slack's Journey to Developer-driven End-to-end Testing

From Pandora's Box to a Bento Box: Using the Bento Framework to Upgrade Legacy Apps

by droidcon SF

Dec 19, 2019 / 38m

38m

Start Course
Description

At Yelp, the team has used Bento to progressively modularize their UI, transitioning from a Pandora's box of nested adapters, ListViews, and minimal test coverage to a Bento box of modular UI components that can be reused across screens, extensive unit and integration test coverage, clear component ownership, and RecyclerViews. Yelp did this all without having to rethink the entire application architecture and with minimal compile-time overhead. In this talk, Tyler Argo will tell you how Bento works and how it can be incorporated into an existing app to make feature development easier for you and your team.

Table of contents
  1. From Pandora's Box to a Bento Box: Using the Bento Framework to Upgrade Legacy Apps

Dagger 2, 2 Years Later

by droidcon SF

Dec 19, 2019 / 37m

37m

Start Course
Description

A few years ago, we started using Dagger 2 in our applications. We saw some quick wins and were able to do some neat things like mock mode for testing and better support our white-labelling process. However, as time went on, several members of our team developed an aversion to working on the Dagger code. In this session, Matt Dupree will discuss why folks were frustrated and how the team might have avoided that frustration.

Table of contents
  1. Dagger 2, 2 Years Later

Going with the Flow - Using Coroutines 1.3.x

by droidcon SF

Dec 19, 2019 / 43m

43m

Start Course
Description

In this talk, Rick Busarow will evaluate the options for reactive programming with coroutines. This session will also cover Android-specific problems and how to fit their solutions into any existing architecture.

Table of contents
  1. Going with the Flow - Using Coroutines 1.3.x

The (Not So) Hidden Cost of Sharing Code between iOS and Android

by droidcon SF

Dec 19, 2019 / 32m

32m

Start Course
Description

Until very recently, Dropbox had a technical strategy on mobile of sharing code between iOS and Android via C++. The idea behind this strategy was simple: Write the code once in C++ instead of twice in Java and Objective C. Dropbox has now backed off from this strategy in favor of using each platforms' native languages. This decision was due to the (not so) hidden cost associated with code sharing. Join Eyal Guthmann on a journey of how Dropbox set about to share code via C++. You'll learn what went well, what went wrong, the main lessons learned, and what this means for how Dropbox writes code going forward.

Table of contents
  1. The (Not So) Hidden Cost of Sharing Code between iOS and Android

Navigating Android Like a Pro

by droidcon SF

Dec 19, 2019 / 41m

41m

Start Course
Description

Ever since Google introduced Jetpack Navigation, there has been mixed reception on how to get it to work on existing or new projects. Navigation library underwent numerous changes in recent times and it is almost stable and caters to most needs. In this talk, Vivek Chanddru will talk about how to get Jetpack Navigation working for your apps from someone who tried it when it was first introduced and reverted back. You will learn about new features introduced in the Navigation 2.1 alpha and how to use those effectively in your apps, designing a single activity app, and how to use Nested graphs. When you complete this session, you will start loving fragments again and be ready to navigate your app like a pro.

Table of contents
  1. Navigating Android Like a Pro

MUwS, PHA, Vulnerabilities: A Walk through on What Not to Do

by droidcon SF

Dec 20, 2019 / 41m

41m

Start Course
Description

Mobile unwanted software, potentially harmful applications, and vulnerabilities are three important threats that may impact the security and privacy of Android users if applications are not properly designed and implemented. As an Android developer, it is important to understand the practical risks that buggy code, untrusted SDKs, and limited disclosure to users represent in order to anticipate and prevent incidents with their apps. This session by the Google Play Protect reverse engineering team will analyze specific examples of application behaviors and code issues that may cause problems to users and developers in the three areas above, from data collection and dynamic code loading to the abuse of SMS functionality to commit fraud. The audience will learn how to prevent their Google Play or off-market application from being flagged as malicious by Google Play Protect, and how to make design choices that enhance the privacy of the user and the security of the data the application handles.

Table of contents
  1. MUwS, PHA, Vulnerabilities: A Walk through on What Not to Do

Android Canvas: Building One of the World's Largest Interactive Data Visualization Experiences

by droidcon SF

Dec 19, 2019 / 36m

36m

Start Course
Description

Have you wondered what would it be like to translate a traditional Android app experience to an 80-inch touch surface? In the process of making a data visualization tool, VizInteract, to work with large displays, Supratim Chakraborty managed to find great insights and answers to the former question. Due to the need for vanilla AOSP to send a video stream and read sequential multi-touch events, a traditional Android Tablet with HDMI display out cannot serve the purpose. To solve this problem, their team decided to use the Android-x86 project and an external Infrared touch screen overlay to run Oreo on a large display and support 12 touch points. In this talk, Supratim will share how the Android-x86 kernel was modified to add driver support for an IR touch overlay, learnings from building multi-touch experiences on unnaturally large surfaces and how that poses interesting challenges. the key changes in the UX of affording dragging, rotation, pinch to zoom and scale gestures on an 80-inch tablet vs. a regular Android tablet, and the constraints of working with Canvas API and a large amount of numerical data processing.

Table of contents
  1. Android Canvas: Building One of the World's Largest Interactive Data Visualization Experiences

Adding Flutter to Your Android App

by droidcon SF

Dec 19, 2019 / 25m

25m

Start Course
Description

Flutter is a UI toolkit for building beautiful and performant apps across multiple platforms. While many independent app developers have chosen to rewrite their apps with Flutter, an app rewrite is logistically impossible for most companies and developers. Most apps need you to integrate Flutter piece by piece. In this talk, Matt Carroll shows you how to add Flutter to your existing Android app. In addition to outlining the high-level options for adding Flutter to your Android app, this session also pulls back the curtain on the technical details to show you exactly how Flutter integrates with Android. You will leave this talk empowered to make important technical decisions about where, when, and how your team integrates Flutter with your existing Android app.

Table of contents
  1. Adding Flutter to Your Android App

MVVM & Nested Fragments/Views - ViewModel Contracts

by droidcon SF

Dec 19, 2019 / 23m

23m

Start Course
Description

As smartphones get more powerful with bigger screens, the complexity of tasks that people want to be able to do with them follows the same growth. Fragments are making a comeback, combined with LiveData and ViewModels. As you adopt these architecture components into your apps, how can you build support for complex use cases with multiple fragments on screen? Should each fragment have a ViewModel? What about custom views? ViewModel Contracts propose the idea of having fragments (and potentially custom views) declare a ViewModel and LiveData via interface to abstract out all of the communication details between nested fragments and their parents. In this talk, Marcos Paulo Damesceno and Bret Erickson explain how to implement them, how architecture components deal with ViewModels, what ViewModelFactories are, and how you can reuse them.

Table of contents
  1. MVVM & Nested Fragments/Views - ViewModel Contracts

Working Around KAPT

by droidcon SF

Dec 19, 2019 / 8m

8m

Start Course
Description

Lyft is using Kotlin and Dagger without KAPT. How? Their team developed NAPT. NAPT allows Lyft to have annotation processing on Kotlin classes without the overhead of KAPT but with a few limitations. The team believes that many projects could live with those limitations without the downsides of having KAPT.

Table of contents
  1. Working Around KAPT

Advanced

These sessions are in-depth and delve into more advanced topics.

Breaking down Modularization

by droidcon SF

Dec 19, 2019 / 20m

20m

Start Course
Description

Modularizing your repository can take extra effort; however, once done, you'll be able to more easily develop in parallel, reduce cohesion between components, improve your build times, and support dynamic feature delivery. In this talk, Zach Sweuigart will focus on the structure his team designed for building a modular repository as well as some patterns they designed along the way.

Table of contents
  1. Breaking down Modularization

Dagger Reflect - The Circle from Runtime to Compile Time and Back to Runtime

by Pluralsight

Dec 19, 2019 / 35m

35m

Start Course
Description

Working on a custom Android firmware has its own challenges, especially if you have a suite of system applications which need UI testing. Manually, you'd need to flash your device with the custom ROM, run UI tests on it, and check results. If you have a high-cadence delivery cycle, this can get troublesome quickly. In this talk, Nelson Osacky will walk you through how Hammerhead automated UI testing of their custom firmware at and integrated it with their CI/CD pipeline. With this setup, their custom hardware downloads the custom ROM, runs tests across applications, and uploads the results to the CI server without any human intervention.

Table of contents
  1. Dagger Reflect - The Circle from Runtime to Compile Time and Back to Runtime

Voyager: Navigation and DI for Flutter

by droidcon SF

Dec 19, 2019 / 25m

25m

Start Course
Description

Voyager is the widget router for Flutter. It combines YAML configuration map, custom plugins architecture, and dependency injection into one comprehensive system that allows you to define readable requirements as code and turn them into flutter components. This session is for you if you have ever thought how you might make deep links easy, make requirements trackable across git history and different branches, and A/B test different navigation flows without code pollution.

Table of contents
  1. Voyager: Navigation and DI for Flutter

Inside the Room

by droidcon SF

Dec 19, 2019 / 44m

44m

Start Course
Description

Take a deep dive into how Google's persistence library, Room, works with SQLite. In this talk, Effie Barak will cover the 3 layers used to persist to a local database, how they work, and how SQLite, Android, AndroidX libraries, and Room work with each other. Effie will also cover locks and threads and how they're managed, how Room provides RxJava/ LiveData support, SQLite transactions and how they're created and managed by Room, and how Room supports paging and large queries.

Table of contents
  1. Inside the Room

Magic of ADB

by droidcon SF

Dec 19, 2019 / 40m

40m

Start Course
Description

Android Debug Bridge is a powerful tool that many of us use everyday but never take a closer look at. In this session, Wojciech Sadurski will dive into the internals of ADB and reveal its potential.

Table of contents
  1. Magic of ADB