Tag: Android

In 2016 and 2017 we invested heavily in architecture at Uber and we've seen measurable eng productivity improvements as a result. In many cases double. These results are only possible because of widespread buy in. One of the bigger investments was in our plugin system that I co-designed. I wrote…

In 2016 a handful of engineers and I designed a new cross-platform mobile architecture at Uber. This architecture was first used in the new Uber Rider app. There are a lot of different approaches that can be taken with mobile architecture. Sometimes these choices solve app-specific problems. Sometimes these choices…

TL;DR I wrote a small app that gradually starts generating white noise after you fall asleep. Introduction Suppose construction noises wakes you up at 6:30am. A white noise generator would help mask this construction noise. However, it would also make it a bit harder to fall asleep. Ideally,…

TL;DR Annotation processing lets you create new java source files at build time. If you want to modify existing classes at build time you need a different technique called Java Bytecode Manipulation. I’ve setup a sample Android Studio library project that performs basic bytecode manipulation you can grab…

TL;DR If you want a thorough introduction to the details of Annotation Processing, you can read Hans Dorfmann's Introduction and try to get his Maven projects working for Android Studio. Or, you can fork my gradle project and start tinkering immediately in Android Studio. Introduction Annotation processing lets you…

In Android Studio, you can include a third party library by adding a few lines to your app's build.gradle. dependencies { compile 'com.brianattwell.rating_bar:ratingbar:0.3.1' } This is really easy! Let's walk through what it takes to publish libraries so that other developers can import them…