whatisgithub

What is u2020?

jakewharton/u2020 — explained in plain English

Analysis updated 2026-06-26

5,640JavaAudience · developerComplexity · 3/5LicenseSetup · moderate

In one sentence

A sample Android app demonstrating dependency injection with Dagger and a debug drawer that lets developers switch servers, enable mock data mode, and inspect app behavior at runtime without rebuilding.

Mindmap

mindmap
  root((repo))
    Core concept
      Dependency injection
      Dagger wiring
    Build variants
      Release build
      Debug build
    Debug drawer
      Server switching
      Mock mode
      Runtime inspection
    Libraries used
      Retrofit and OkHttp
      RxJava
      Picasso and Moshi
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Study how to wire up Dagger for dependency injection in an Android app with clear separation between debug and release builds.

USE CASE 2

Implement a debug drawer in your own app so testers can switch API endpoints and toggle mock data without rebuilding.

USE CASE 3

Use the Mock Mode pattern to make manual QA testing predictable by replacing network calls with in-memory fake data.

USE CASE 4

Reference the library setup when choosing between Retrofit, OkHttp, Picasso, and Moshi for a new Android project.

What is it built with?

JavaAndroidDaggerRetrofitRxJavaOkHttpPicassoMoshi

How does it compare?

jakewharton/u2020hanks-zyh/htextviewwasabeef/blurry
Stars5,6405,6455,656
LanguageJavaJavaJava
Setup difficultymoderateeasyeasy
Complexity3/52/51/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Android Studio and familiarity with Gradle build variants, some libraries are outdated compared to current Android standards.

Use freely for any purpose, including commercial, as long as you keep the copyright and license notice.

So what is it?

U+2020 is a sample Android application created to demonstrate a particular approach to organizing and wiring together the different pieces of an app. It was built alongside a conference talk about Dagger, a tool that handles dependency injection in Android projects. Dependency injection is a pattern where components of an app receive the objects they need from an external source rather than creating those objects themselves. The app has two build variants: a release version and a debug version. The debug version adds a hidden panel called the Debug Drawer, opened by swiping from the right edge of the screen. From this drawer, developers can change settings like which server the app talks to, toggle fake data mode, and inspect how the app is behaving at runtime. One of the more useful debug features is a mode called Mock Mode. When active, the app stops making real network requests and instead responds with fake data stored in memory. This makes manual testing easier and gives automated tests a predictable, stable data set to work against. The project uses a collection of open-source libraries that were popular in the Android ecosystem at the time: Retrofit for network calls, Picasso for image loading, RxJava for managing asynchronous events, OkHttp as the HTTP client, Moshi for JSON parsing, and several others by the same author (ButterKnife, Timber, Scalpel, LeakCanary). The repo is intended as a reference and learning resource, not as a production-ready application template. It is licensed under the Apache 2.0 license.

Copy-paste prompts

Prompt 1
I'm learning Dagger for Android from the u2020 project. Explain how the debug and release build variants use different Dagger modules to inject different dependencies.
Prompt 2
I want to add a debug drawer to my Android app like the one in u2020. How do I implement the swipe-to-open gesture and wire it to runtime settings?
Prompt 3
Show me how u2020's Mock Mode works. How does it intercept network calls and return fake in-memory data, and how do I replicate this pattern in my own app?
Prompt 4
How does u2020 configure Retrofit and OkHttp together, and how does the Dagger setup switch between real and mock network layers?
Prompt 5
What is the overall app architecture in u2020 and how does Dagger connect the Activity, networking, and data layers together?

Frequently asked questions

What is u2020?

A sample Android app demonstrating dependency injection with Dagger and a debug drawer that lets developers switch servers, enable mock data mode, and inspect app behavior at runtime without rebuilding.

What language is u2020 written in?

Mainly Java. The stack also includes Java, Android, Dagger.

What license does u2020 use?

Use freely for any purpose, including commercial, as long as you keep the copyright and license notice.

How hard is u2020 to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is u2020 for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.