Sid Patil

code
search
dark_mode
person_outline

Android Worldwide: July 2022

calendar_today hourglass_empty 7 min read workspaces Community
Android Worldwide is a quarterly event where Android engineers from all around the world come together to share ideas on Android app development.

Gurupreet Singh shares how to build Adaptable-UIs with Jetpack Compose


Event Details

Following up Droidcon Berlin 2022, we head into yet another amazing session of Android Worldwide this July, here’s a recap:

Speaker line-up for July 2022

Day 1 (July 26)

  • Kotlin Symbol Processor tricks by El Zhang
  • Bazel for Android Development by Arunkumar Sampathkumar
  • Effective Code Reviews by Tahsin Dane
  • When Build Engineering meets Data Science: automating Gradle benchmarks at N26 by Ubiratan Soares
  • Making Adaptable apps using material 3 and Jetpack Compose by Gurupreet Singh
  • Don’t get stung by OWASP II - The final five! by Ed Holloway-George

Day 2 (July 27)

  • Building Multi-Platform Projects with MVI Architecture by Etienne Caron
  • Building Android Testing Infrastructure by Mohit Sarveiya
  • Performing Due Diligence as Android Developers by Ishan Khanna
  • Advanced techniques for building Kotlin DSL(s) by Pavlo Stavytskyi

Kotlin Symbol Processor tricks with El Zhang

  1. Complex arguments passing by file
  2. Variant-aware code generation strategy
  3. Dealing with classes from dependencies
  4. Beyond Annotation Processor - process all other Kotlin Symbols
  5. Stubbing the generated code to improve user experience
  6. Working with pipelined multiple processors

Bazel for Android Development by Arunkumar Sampathkumar

Abstract: Bazel is an open source build system by Google with a focus on large scale applications. In this talk, we discuss Bazel build system concepts, terminologies and mental model for using Bazel for Android development and explore how it compares conceptually with Gradle.

By end of this talk, viewers will know how to get started with Bazel and understand tradeoffs to evaluate if Bazel might be a good fit for their projects.

  • Bazel Build scripts (Starlark)
  • Bazel rules vs Gradle plugins
  • State of Android support in Bazel
  • Remote Cache and Remote Execution
  • Execution strategy comparison
  • Migration strategies and Grab’s learnings
  • Grab’s automated Bazel migration tooling
  • https://github.com/grab/Grazel
  • Advanced Bazel
  • Platforms, Queries and Extending Bazel

Effective Code Reviews by Tahsin Dane

Abstract: Code Reviews are essential in every software team on any size. It allows teams to share knowledge, onboard people to the code base and most importantly keep the quality coherent. Code Reviews are there to help teams ship better software.

In this talk, after briefly defining code review, we will talk about how to make code reviews effective. The talk will consist of best practices from the eyes of the code author and code reviewer.


When Build Engineering meets Data Science: automating Gradle benchmarks at N26 by Ubiratan Soares

Abstract: For large native Android projects and big teams, the time spent running Gradle tasks eventually is a constant source of pain. Although there are several things that can be done to improve such a situation it is hard to figure out in advance if a given change targeting the Gradle build will actually improve the status quo as we expect; in the same way, it is super hard to detect potential build performance offenders before changes are merged in a shared codebase.

At N26 we took a very unique approach in order to solve this problem. In this talk we’ll share about our learnings regarding the automation of both execution and interpretation of Gradle benchmarks, including data generation and extraction on top of Gradle Profiler and Github Actions alongside with data processing and evaluation on top of battle-tested Data Science tools like SciPy and Jupyter Notebooks. We’ll also share how this custom solution allowed us to scale our initiatives driven by our Continuous Discovery process inside our Mobile Platform team, allowing us to measure dozens of build-intensive scenarios per benchmark pass, benchmarking thousands of builds per month, hence providing us a solid solution that drives our efforts towards having better Gradle builds by ensuring performance improvements or detecting regressions in an up-front fashion.


Making adaptable apps using Material 3 and Jetpack Compose by Gurupreet Singh

Abstract: You will learn how to build adaptive apps for phones, tablets, and foldables, and how they enhance reachability with Jetpack Compose. You also learn best practices for using Material 3 components and theming.


Don’t get stung by OWASP II - The Final Five! with Ed Holloway George

Abstract: Following on from my ‘Don’t get stung by OWASP’ talk at Android Worldwide Jan 2022, this talk takes an in-depth look at the final five largest security threats to us as Android developers as determined by the OWASP Top 10 for Mobile.


Building Multi-Platform Projects with MVI Architecture by Etienne Caron

Abstract: For modern applications, targeting multiple platforms has become table-stakes. That can be an insurmountable challenge for a team working on a project with limited resources. Kotlin Multiplatform is a promising solution to this problem, allowing you to target mobile platforms and the web.

The strength of Kotlin Multiplatform is that it allows you to write native applications, unlike cross-platform frameworks like React-Native and Flutter. While having access to native APIs can lead to a superior user experience, you need to be careful to avoid code duplication.

We’ve decided to embrace the Kotlin multiplatform approach at my company, convinced it will help us build better quality products. And in this talk, I will show how we’ve used MVI architecture patterns to help us maximize code sharing.


Building Android Testing Infrastructure by Mohit Sarveiya

Abstract: Suppose you’re starting to think about how to add different types of tests for your Android app. There are many challenges that come to mind in terms of building a scalable testing infrastructure. How do you setup your CI to run lot of UI tests? When is the right time to run them? What type of UI tests are best to run as part of PRs? In this talk, I’ll share how to setup unit tests, UI tests and snapshot tests as part of your infrastructure. I’ll share which tools to use that allow you to run tests in parallel. We’ll look different types of tests you should setup such as smoke tests. By the end of this talk, you’ll have a good understanding of how to think about planning and building a scalable testing infrastructure.


Performing Due Diligence as Android Developers by Ishan Khanna

Abstract: In this session I plan to share my learnings from the process of integrating Third Party SDKs. Having successfully delivered such projects at Tinder and Booking.com, I came up with a Due Diligence framework for Android developers that a lot of teams can benefit from, especially at Startups, Scale ups and Small companies that often ignore the hidden costs and pitfalls of integrating third party libraries and SDKs.

The attendees will walk away with a Framework that can be implemented at any company in time and can establish and improve an existing framework in these companies for evaluating and integrating with Third Party Libraries and SDKs.


Advanced techniques for building Kotlin DSLs with Pavlo Stavytskyi

Abstract: In this talk, I would like to talk about advanced techniques for creating Kotlin DSL.

As an example, we will see how to build a DSL that looks like a Starlark programming language, a Python dialect used for writing build scripts for Bazel build system. This DSL is a declarative code generator that builds an abstract syntax tree of a Starlark language and then generates a formatted code based on it.

However, all the concepts described in this talk are applicable to any kind of Kotlin DSL(s) including ones for Android projects.

The example project was presented at BazelCon 2021, a Google conference about Bazel build system: https://youtu.be/dz-CFEwJuko In addition, there is a blog post that shows the capabilities of this DSL: https://proandroiddev.com/304fa8b3680c The source code is available on GitHub: https://github.com/Morfly/airin


That’s all folks!

See you in October! The CFP is out, do apply and share your ideas! We’d love to hear from you in our next session. Thanks to Marton, yet again preparing the recap videos on YouTube.

Join us on the Android Worldwide Slack for more updates.

Till next time 👋🏼


About the author

Siddhesh Patil is an Android Engineer at DeliveryHero. Building core ordering experiences at Foodpanda and Foodora. He is the organzier of Kotlin Mumbai, a developer community in Mumbai, India. Find talks, articles and latest developments in Android and Kotlin on this website siddroid.com

Sid Patil is an Android Engineer and Kotlin Advocate based in Berlin, Germany. He works at Delivery Hero, building ordering experiences for food delivery and Q-commerce brands like Foodpanda and Foodora.

Share on

book

More articles to read