Android Makers 22 Retrospective
Makers is back !
After 2 years’ absence, our favorite french Android conference is back live at the Befroi de Montrouge. Due to Covid, last year’s edition was canceled and 2019’s was 100% online.
Pablo Exposito and Jordan Dahnoun work as Android developers on JobTeaser’s mobile application. They didn’t miss the chance to participate to this two days event, where more than 600 people met and listened to Android experts from around the world such as Romain Guy, Chet Haase or Florina Muntesnescu !
Here are the talks which retained our attention :
Why Projects Succeed: Lessons Learned from the Android OS
Romain Guy and Chet Haase, two Android experts from Google make the introduction talk for this edition.
They talked about their journey from building the Android OS from the mid 2000’s at Google.
We can find some information about this talk in Chet Haase book’s “Androids: The Team That Built the Android Operating System”, and it was very interesting to learn how Android became this successful mobile OS, thanks to hard work of the right people at the right place and time, knowing that at the start of the project it was supposed to be a camera OS.
Android 12 Migration:
Interesting talk from Julien Salvi about the migration to Android 12, one of the hardest since Android 6.0 according to him.
This talk was very helpful by helping the audience understand and target the blocking points of this migration about the new features of Android 12 such as :
- Bluetooth restrictions
- Pending Intent for Notifications
- New privacy rules
- Manifest Configuration
- Closing System dialogs
A must to watch before getting your hands dirty into the code, and don’t forget to test, test and test again !
Mobile Server Driven UI
In this talk, Zhenlei Ji introduces us to the server driven architecture that N26 set up for their app.
By explaining all the pros of this multi platform system, the audience understood the powerful help that can be such a system : by just adding some simple backend changes, the system can build whole new screens without any release or modification on the application code.
The talk was also a retrospective of the steps and mistakes the N26 teams made in order to reach their goals:
- It’s important to have an Atomic Design System
- A versioned backend would prevent errors on unknown components
- Keep your screens static
- Be careful when you choose your Serialization Library, won’t work with all of them, because of ignoring unknown components
- Have a good testing strategy, including unit testing, contract testing and screenshot testing
Becoming a Mentor
A great non technical talk from Florian Mierzejewski about how to help other developers grow by mentoring them.
In this talk, Florian introduces us to his past experience of mentoring, and to the key steps to start mentoring. By making people feel at ease, starting with some easy tasks such as documentation and going through PR, and with a lot of pair coding, it will be within everyone’s reach to introduce new developers to our projects and to become a mentor !
But being a mentor doesn’t stop there, you guide others by helping them improve their skills, and not only their computer science and solving skills, but also their soft skills and organizational skills.
A great talk for anyone wondering how to help others by mentoring them.
Android Benchmarking: How to ben
Benchmarking our own app is a pretty skipped step in a development world where we need to always ship features faster. Enrique Lopez Mañas and Iury Souza introduced us to the good practices of a proper benchmark strategy. By benchmarking on different levels, mobile developers will be able to identify and resolve issues before they become huge issues in production. During the talk we’ve been introduced to the microbenchmark, the macrobenchmark and also Jankstats, the new released framework by Google. By comparing these different solutions, and explaining how they can work together and be integrated in our CI/CD, this talk showed us how to take our app to the next level.
Accessibility with compose by example (“L’accessibilité c’est pas sorcier”)
Helped by a guest( LouisCAD)) wearing a blindfold, we discover all the difficulties encountered when using an app where accessibility is the least of concern.
Several lessons can be taken from this experience:
- The easiest one, describe visual elements using
contentDescriptionon useful images, the rest need to be hidden from Talkback.
- Avoid Floating action Buttons on lists. When accessibility is detected add the button in the menu, otherwise the floating button will be last to be accessed and in case of infinite scroll, the button could never be reached.
- Describe element’s state using
- Add click label with
onClickLabelto explain the use of a button.
- A text is not necessarily accessible, talkback might surprise you when reading some text, like a rating,
semanticscome to the rescue to help you provide a more meaningful sentence.
- The text could also be separated into several elements forming a logical group for a reader, talkback will then read each elements separately without the global context. That can be avoided by merging elements together
Android Architecture Design with Koin
Who’s better than the creator of Koin himself to talk about Android Architecture with Koin ? In this talk, Arnaud Giuliani shows us how to use Koin with different Architectures (MPV, MVVM) and what’s coming for Koin.
When using Koin, we have to be familiar with the scope for our object using Single, Factory, or Scoped. But Android has its own lifecycle and scopes that come into Action and need to be taken into consideration when injecting an object. You need to know how long that object can be restrained in Memory and avoid creating only Singles that are loaded directly with the module.
Enter the injection with Android Scopes :
- activityScope() — Follow Activity lifecycle
- activityRetainedScope() — Follow Activity’s ViewModel lifecycle
- fragmentScope() — Follow Fragment lifecycle, and is linked to parent’s scope
- serviceScope() — Follow Service lifecycle
And if that’s not enough you can create your own custom scope.
Compose being the HOT topic of the moment in the Android community, we couldn’t not talk about how to use Koin with compose. If you’re already familiar with Koin, everything seems quite like home.
- get() — fetch instance from Koin container
- getKoin() — get current Koin instance
- getViewModel() — get viewmodel instance
Some examples are available for those begining with compose and/or koin
While still in alpha, KMM has a lot of traction and Koin is compatible with it since 2020. For those interested in that topic PeopleInSpace is a good start.
What’s next for Koin
See you next year !
To sum up we had a great time at the Android Makers 2022, it was our first live conference since Covid, and it was such a pleasure to had the possibility to exchange with other people about Android development
We can’t wait to go to the Android Makers 2023 next year, with let’s hope a talk from JobTeaser !
A huge thanks to the organizers, the staff and to the speakers for this great edition !
We look forward to sharing more about our work with the community in upcoming posts. To stay up to date on our work, follow our blog, and if you’re also interested in joining the JobTeaser Engineering team to help us face our unique challenges, check out the open positions listed on our page. We’re hiring!
Published by Pablo Exposito and Jordan Dahnoun.