Android Makers 2017 Highlights

May 23, 2017 – Romain Guefveneu & Jean-Élie Le Corre – 5-minute read

This article was written before Drivy was acquired by Getaround, and became Getaround EU. Some references to Drivy may therefore remain in the post

Android Makers is the biggest Android event in France, it occurred last month in Paris. It’s always a great time to connect and learn from the Android community. For this first edition, a lot of great speakers from all around the world were in Paris. This post is not intended to dive into the details of each conference, but more about an overview, giving you enough insights to chose the right conference to playback.

Modules - Octo

Our friends at Octo talked about how they improved compilation time, test time and how to better split your app into reusable components.

They worked on the Meetic app, if you work on a big app or on multiple apps for the same company, you certainly faced the same kind of issue:

  • Compilation time is growing up
  • It becomes slower and slower to launch tests
  • Multiple apps using the same component and repeating code

They finally split the app into modules:

  • It dramatically improved the build time
  • They could share the message component between 2 apps

One year of Clean Architecture: the Good, the Bad and the Bob - Octo

Watch on YouTube

Octo again, on how they applied the principle of Uncle Bob’s clean architecture on Android.

By splitting the responsibility of each layer of your app, you improve the testability and flexibility.

Takeaways:

  • Easier to onboard new developers in big teams on big projects because of the conventions to follow
  • Be pragmatic, adapt the architecture to your need and team size, don’t over-engineer if it’s not necessary

Make your app work offline - Virtuo

Virtuo
Watch on YouTube

Virtuo is a new generation car rental agency. Your smartphone replaces the old rental agency.

The main feature of the app is to be the virtual key responsible to open the car. As the cars can be parked in an underground parking, the app must work offline.

Takeaways:

  • You can use http headers max-age and max-stale to fine tune your client cache
  • UX matters: instead of downloading the virtual key in the background without telling the user, they enforce the user to click on a big “Download the key” button. That way, you are sure the key is on the phone when it is offline in the parking.

The Fabulous Journey to Material Design Award - Fabulous

Fabulous
Watch on YouTube

While I would prefer more conferences about UX and UI at Android Makers, this one by the co-founder of Fabulous was really great!

The particularity of Fabulous: be Android first. Why? There are a lot more users on Android, and they are willing to pay for great experiences.

To achieve such a great experience means that the whole company must be sensible to design and user experience.

Takeaways:

  • Design first in the specs flow
  • Context is super important to re-engage users
  • Great illustrations give your app personality
  • You can A/B tests in the app and A/B test Google Play Page to improve conversion
  • Always take the user feedbacks into account when you iterate on your product

The ART of organizing resources - Philips Hue

Watch on YouTube

All computer scientists knows that naming things is hard. As your app grows, assets multiplies and it can quickly becomes a mess if you don’t follow strict naming rule. Jeroen Mols, from Philips Hue, suggests this simple pattern:

`WHAT_WHERE_DESCRIPTION_SIZE` For example:

  • activity_main for activities layouts
  • linearlyaout_main_fragmentcontainer for views
  • all_infoicon_small for drawables

It makes everything clear!

Taking care of UI Test - Novoda

Watch on YouTube

Keep your tests clean! When using Espresso, UI tests look like this:

@Test
public void autoCompleteTextView_clickAndCheck() {
    // Type text into the text view
    onView(withId(R.id.auto_complete_text_view))
        .perform(typeTextIntoFocusedView("South "), closeSoftKeyboard());

    // Tap on a suggestion.
    onView(withText("South China Sea"))
        .inRoot(withDecorView(not(is(mActivity.getWindow().getDecorView()))))
        .perform(click());

    // By clicking on the auto complete term, the text should be filled in.
    onView(withId(R.id.auto_complete_text_view))
        .check(matches(withText("South China Sea")));
}

With PageObject Pattern, it’ll look like this:

@Test
public void autoCompleteTextView_clickAndCheck() {
    SearchScreen searchScreen = new SearchScreen();
    searchScreen.givenKeyword("South ")
                .tapOn("South China Sea")
                .assertTextMatches(""South China Sea");
}

It’s easier to read, reuse and maintain!

Deep Android Integration - Uber

Watch on YouTube

Ty Smith from Uber reminds us that a good user experience also consist in a deep system integration. It’s not only about having a UI, but also about using right system APIs such as:

Pro Tip: You can listen for INSTALL_REFERRER broadcast to show the relevant screen after an install!

Conclusion

A lot of great talks for this first Android Makers conference in Paris. It’s always a pleasure to learn from other developers and other people in the industry. It’s also a great moment to meet passionate people and to connect with others at the after-hours events. See you next year!

Did you enjoy this post? Join Getaround's engineering team!
View openings