PLURALSIGHT Droidcon Boston ’19: Everything You Ever Wanted to Know About Error Handling on Android

PLURALSIGHT DROIDCON BOSTON 19 EVERYTHING YOU EVER WANTED TO KNOW ABOUT ERROR HANDLING ON ANDROID
English | Size: 255.66 MB
Category: Tutorial


We all use crash reporting tools in our apps, but have you ever wondered what happens under the hood? How do these crash reporters do what they do to make our debugging lives easier? Let’s find out! In this session, you’ll learn how to create a crash reporting SDK from scratch using Android’s UncaughtExceptionHandler, starting by capturing and sending stack traces to an HTTP endpoint. We’ll then progressively add functionality onto our crash reporter until it’s turned into a battle-tested SDK that we’re confident will save us hours of debugging crashes in production. As expected diving deeper into the inner workings of our tools, we’ll encounter challenges along the way. We’ll analyze the various scenarios, what they mean for our apps, and how to best go about solving for them given tradeoffs and solutions. Here are some of the challenges we’ll encounter: For starters, we’ll discuss the design constraints caused by working in a low-memory environment, and how streaming IO and JSON serialization can help us capture OutOfMemoryErrors. We’ll also learn the best practices of caching undelivered reports on disk for future delivery and triggering automatic upload of reports in response to connectivity changes. We’ll consider privacy issues, like how we can collect useful metadata about the device and application at the time of crash while respecting user privacy by filtering sensitive information. To further expand our tool, we’ll capture exceptions caught in a try-catch block and discuss the difficulties with ensuring thread-safety in these situations. Then we’ll move on to the various strategies for testing a crash reporter and walk through the benefits of black-box end-to-end tests. Another issue to examine is how we can deobfuscate stack traces in apps which use R8-we’ll review uploading a mapping file to an HTTP endpoint and read its contents to reveal a readable stack trace. There are even things we can do to highlight the most useful parts of stack traces as well as thinking through grouping related errors together. Then we’ll consider supporting different API levels and how it affects the collection of useful data, and finally, we’ll touch on capturing errors in NDK apps and the potential pitfalls in the Java Native Interface. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Test the Untested: Our Journey from Zero Coverage to Automated Testing

PLURALSIGHT DROIDCON BOSTON 19 TEST THE UNTESTED OUR JOURNEY FROM ZERO COVERAGE TO AUTOMATED TESTING-JGTiSO
English | Size: 207.67 MB
Category: Tutorial


Do you fear changes in the shape of a monster legacy code base? Do you have zero test coverage and don’t know how to regain safety in your day-to-day work? Come to this talk and get insights from the developers of a million client SDK who solved these problems without a whole rewrite. A code base which grows over years often leads to an ad-hoc architecture and plenty of dark corners where no developer wants to go. If this code base is untested it can slow down implementation speed dramatically. It may prevent developers from making necessary changes as they fear to break something. So most changes are limited to small operations which do not increase the overall quality of the code base. We faced such problems in our Android SDK and introduced architectural components and abstractions to support testability and regain safety for future changes. I will present how we fought this giant legacy code monster: from introducing architectural patterns to a critical codebase, which runs on millions of devices around the world, techniques for testing legacy code without breaking it, to how we support our engineers with CI tools and automated device tests. I will show which obstacles we had to pass and where we are now. [Read more…]

PLURALSIGHT Droidcon Boston ’19: SELECT * FROM Kotlin-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 SELECT FROM KOTLIN-JGTiSO
English | Size: 233.89 MB
Category: Tutorial


Now that Kotlin is the preferred language of Android developers, what is the best library to work with SQLite databases using Kotlin? Room just released support for Kotlin Coroutines, and SqlDelight released support for Kotlin Multiplatform. Room has great documentation and hides a lot of implementation detail, while SqlDelight lets you write raw SQL statements with an Android Studio plugin and then generates type-safe code for you. In this session, you’ll see a rundown of these two libraries, along with live coding demos to help you decide which library sounds right for you in this Kotlin world. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Flutter, a Designer and a Developer Walk into a Project-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 FLUTTER A DESIGNER AND A DEVELOPER WALK INTO A PROJECT-JGTiSO
English | Size: 206.38 MB
Category: Tutorial


Two longtime friends with complementary skills meet a new mobile SDK for building high-performance apps from a single codebase, what could go wrong? Flutter is quite powerful but with great power comes great responsibility. Using widgets, building a meaningful UI in a new way, finding that library we need and getting used to a different architectural approach are some of the many challenges we face as developers and designers when going into the cross-platform world. In this talk, we’ll review some of the advantages of using Flutter, how to tackle common challenges when adopting it and how can it spark a better collaboration between designers and developers, including roles and responsibilities, a well-defined feedback process, and our own experience while building an app. Interested? [Read more…]

PLURALSIGHT Droidcon Boston ’19: Optimizing Android Apps for Chromebooks

PLURALSIGHT DROIDCON BOSTON 19 OPTIMIZING ANDROID APPS FOR CHROMEBOOKS
English | Size: 296.17 MB
Category: Tutorial


The Chromebook represents an extraordinary opportunity for Android app distribution, but it also poses significant development and testing challenges for Android developers. In this talk, we’ll explore how to connect a Chromebook to a development system for debugging and testing. Then we’ll move on to display management, including how to detect and adapt to a Chromebook’s larger screen with its true multi-window environment and variations in screen size, pixel density, and orientation. Specific recommendations will be offered for making an app feel like it’s native to a Chromebook’s visual environment. We’ll then talk about file management, which works somewhat differently on Chromebooks compared to conventional Android devices. We’ll look at how the Chromebook’s local file system is shared with the container that manages Android apps, and how to work with Google Drive through the Storage Access Framework API. And finally, we’ll explore the Chromebook’s USB ports and what they offer for both file transfer and audio output. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Keynote: Lessons from Teaching Android on the Ground and in the Cloud-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 KEYNOTE LESSONS FROM TEACHING ANDROID ON THE GROUND AND IN THE CLOUD-JGTiSO
English | Size: 289.54 MB
Category: Tutorial


Chances are that you’re a teacher – whether you’ve formally taught in a classroom, shared an engineering experience as a talk or blog post, or helped out someone new on your team. Since you’re a teacher, you should care about being a good teacher. Good teaching empowers those around you and nurtures healthy technical communities. Also, teaching doesn’t need to be entirely altruistic – often the best way to truly learn something is to teach it. My education career started over a decade ago. It has included teaching at an all girl’s STEM school in Rwanda and for the last five years as an online instructor for Google’s Android courses. The Google courses are by far the biggest “classroom” I’ve been a part of, with a diverse and driven pool of students. Android has also had seismic changes over the past few years. These facts combined make Android a subject where teachers need to continually adapt, iterate and hone their skills. In this talk, I’ll share what it’s like behind the scenes: scripting, filming and producing Android classes for hundreds of thousands of students, including what we got right, and what took a few tries. From this, I’ll cover reflections and practical takeaways about teaching Android and teaching in general. Because I am a teacher and so are you! [Read more…]

PLURALSIGHT Droidcon Boston ’19: Inhibiting the Impostor

PLURALSIGHT DROIDCON BOSTON 19 INHIBITING THE IMPOSTOR
English | Size: 320.85 MB
Category: Tutorial


Have you ever had an experience where a small voice in your head prevented you from acting on an idea, stopped you from sharing your knowledge or trying something new, or maybe even made you feel like your achievements were nothing special? That voice is more common than you think! In this talk we will go over the basic steps that will help you materialize, deconstruct and take control of that voice, helping you distinguish the useful bits of information that can help you grow from the overwhelming debris and clutter. You will learn how to notice the early signs of its onset and manage the situation to your benefit. Finally, you will learn to use simple tools that will help you recognize and acknowledge your achievements and help yourself and others fight the invisible menace. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Writing Tests That Stand the Test of Time-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 WRITING TESTS THAT STAND THE TEST OF TIME-JGTiSO
English | Size: 250.74 MB
Category: Tutorial


One of the promises of test-driven development is the confidence and ease with which we can refactor our production code. However, sometimes we find ourselves in situations where our tests are too coupled to our code and we have to change the tests every time we update the code. At this point, we start wondering if the tests are worth it. If you have ever found yourself having to update your tests every time the behavior of a dependency of a class changes, then this talk is for you. This talk is to share some patterns, tools, and examples that can guide us to write more maintainable tests. We will look at why we need tests in the first place, how writing tests is an investment that will save time in the future. We will also look at some causes of unmaintainable tests (for example using a wrong test double, testing implementation details and not general behavior) and how to overcome these problems. With the use of examples from everyday Android development, we will learn how to avoid brittle tests. You will leave the talk having a clearer understanding of why tests are important and worth the time and ultimately be able to apply the tips to write robust and more maintainable tests. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Keynote: Ethical Product Design and You!-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 KEYNOTE ETHICAL PRODUCT DESIGN AND YOU-JGTiSO
English | Size: 303.05 MB
Category: Tutorial


Our job as engineers does not stop with building a dizzying array of features, eliminating technical defects and ensuring high reliability. Engineers of all kinds must ensure their work serves the public good. A product that reliably harms, exacerbates injustices, or excludes marginalized groups is not a product worth building and maintaining. Learn how to effectively accomplish change in your working conditions or your employer’s products through grassroots employee advocacy. [Read more…]

PLURALSIGHT Droidcon Boston ’19: Building at the Speed of Thought-JGTiSO

PLURALSIGHT DROIDCON BOSTON 19 BUILDING AT THE SPEED OF THOUGHT-JGTiSO
English | Size: 329.87 MB
Category: Tutorial


Breaking away from the traditional steps of a design sprint, we blur them together to further reduce the development cycle in what we call “Building at the speed of thought”. Over the years my group has been perfecting how to build world-class Android Apps at the speed of thought first for hackathons, then products and now for design sprints. In this session, we will detail the “Speed of Thought” methodology, steps, tools and components involved. We start by utilizing a design sprint to explore the power of mobile and how it fits into the market/problem we are trying to solve. Then focusing on the crucial step in a design sprint, we build high fidelity prototypes in rapid succession utilizing the JetPack Android software components (UI, Behavior, Foundation, Architecture) to take full advantage of the Android platform. We do this by leveraging the design features of Android Studio (material components/theme editor, constraint library, motion editor) along with open source/industry resources to build an intuitive and beautiful UI. Once the UI framework is done, we write the Kotlin application logic utilizing the Android Architecture Components with data binding connected to Firebase for the synchronized backend. With our application finished we execute our strategy for marketing, distribution, and monetization guided by Data-Driven Ethnography (DDE). At the end of the session, the audience will have a good idea of how in rapid succession all these tools and components come together to produce magic. [Read more…]