Tagged in android :
Targeting Android SDK 30
When Google announced that Play Store apps must target SDK 30 by August, our team started investigating what it would take to meet this requirement. Now, with our migration to SDK 30 complete, we’d like to detail the changes our team made. This is not meant to be an exhaustive migration guide – but hopefully… Read more
Espresso-friendly Bottom Sheet interactions
Like many other integration testing frameworks, Android’s Espresso provides a management layer for asynchronous operations. Correct usage of this layer allows the test author to treat long-running activities as if they were synchronous, resulting in reliable UI tests. In this post, we’ll describe how we used Espresso to build reliable tests for one such behavior… Read more
Visual Regression Testing on Android
Recently, we found visual regressions in our app after we shipped the app to production on the play store and that is one of the last places you want to catch a bug. We wanted to improve when we detect these bugs and address them way earlier in the development process. There are a couple… Read more
Android App Modularization at Wealthfront (Part 3)
In the previous blog post, we looked at how we started with modularization and refactored our existing code into the legacy module which was ready to be modularized into smaller infrastructure and feature modules. In this blog post, we will go in detail about how we’d refactored our infrastructure modules with the help of interfaces. … Read more
Android App Modularization at Wealthfront (Part 2)
In the previous blog post, we looked at how the project was initially set up, and now we will take a look at how we started organizing features into Gradle modules. To ensure a consistent bucketing strategy throughout the migration period, we decided that it would be ideal to place any new code inside dedicated… Read more
Android App Modularization at Wealthfront (Part 1)
App modularization is the process of spitting a monolithic architecture into much smaller components with high cohesion and low coupling. In layman’s terms, chopping down a very large codebase into smaller digestible (ideally independent) pieces that share a common responsibility. Our main goal was to improve the incremental build times of the application to boost… Read more