HENNGE @ DroidKaigi 2023

Charles Bond
henngeblog

--

On September 14th — 15th, I attended DroidKaigi 2023 in person at Bellesalle Shibuya Garden in Shibuya, Tokyo. This event was the second in-person conference for DroidKaigi since the covid 19 pandemic started in 2020 and was run both as a hybrid event with some talks in person and some running online. All talks were recorded for later posting to YouTube for those who were unable to attend to access.

The event space was much larger than the one that was used in 2022, having a two-floor facility with 5 talk spaces (including a large space with three screens). Two of the talk spaces were joined with the exhibitor space, which also seemed to have significantly more participation than last year. As has been custom for the last year and a half, masks were optional this year, and there were no temperature checks at the door (which was roughly the opposite the year before). Each of the conference spaces was named after versions of Android Studio (Arctic Fox, Bumblebee, Chipmunk, Dolphin, Electric Eel).

The opening session on each day was held in the largest room, Chipmunk, and covered basic rules, attendance at the conference, historical context, number of sessions, and some of the extras offered to attendees this year. This year’s talk had 46 sessions, 1,000 in-person attendees, and 5000 online viewers. As with last year, prizes were announced for visiting all vendor booths, and meetup sessions were arranged to help developers make local connections. This time, the meetups were held inside the convention site proper rather than at a different external venue. There was also an evening party announced for the first night. The second-day opening session also had a call out for all volunteers helping and the 40+ developers assisting with the convention app.

After the opening talk, several talks were given in each conference room on both days. Below, I will give a quick summary of each talk I could attend in person.

The first talk I attended was “これで安心!Compose時代のDon'tKeepActivites対応” by Yuri Karasawa from Mericari. This talk introduced the concept of using the “don’t keep activities” debug mode on Android to help find crashes and memory issues that are not normally reproducible in test environments. The basic premise is that low memory states are often difficult to reproduce in average test devices, so instead of trying to purchase a low memory device, having activities always destroy when they leave the screen more readily reproduces the state of low memory devices. This is followed by a quick overview of ways to deal with saving state in modern Android apps, including Bundle, compose data, and storing in the ViewModel. Additionally, saving to disk/database was also reviewed. These methods were compared and contrasted to provide basic guidance on which case each was useful for.

The second talk I attended was “Securing Android Applications: The not so secret guide explained” by Bessie Jiang. This covered some common hacking techniques on Android and how to avoid them in your app as well as how to avoid these pitfalls. They also reviewed good and bad practices with cryptography, intent, and broadcast safety, and also webview security issues such as tap-jacking. Proper care of these issues can help avoid data loss or other exploits in your apps and keep users safe.

The final talk of day one was “Overcoming the Challenges of Integrating an EPUB Viewer into a Modern Android App” by Bing-zhu. This was a short presentation about what Bing-zhu discovered while creating a simple epub reader in a modern Android UI. This included some interesting UI ideas, such as having communication contracts between the UI and the viewmodel and having a UI data model for items that don’t need to be stored as deeply as the data model. Some tips for working with EPub3 followed at the end of the talk.

At the start of day two, I attended “A small leak can sink a great ship” by Ayushi Guputa. As the title implies, the talk focused on memory leaks and how those leaks might ruin the app experience and some basic ways to track down and resolve these issues. First, the way Android memory works was reviewed, followed by an overview of how garbage collection works. LeakCanary2 and Shark were profiled as tools to help developers identify their memory leaks. Ayushi Guputa also talked about using these tools to create automated reports on potential memory leaks when code is committed.

Later in the day, I attended “Android「音」を制御する” a talk by Nishimy. This one covered how to control the sound controls on Android. The types of audio volumes were reviewed, as well as detailed information on the specific settings that were supported and various other details about the modern Android audio APIs. Some time was also spent covering how silent mode works on different phones and differs from the “do not disturb” mode.

The following talk was “Jetpack Composeを活用した強力なUI表現の実装実行” by yokomii. In this presentation, rich UI design was reviewed, as well as techniques to build and maintain it efficiently. One key component of this review was text annotation and how it could be used to show much more complicated text components than other views support. Animation was also covered, as well as shapes and animation scripting.

Toward the end of the day, I attended “Jetpack ComposeでAndroid/iOSアプリを作る” by m.coder. This talk focused on using Kotlin MultiPlatform (KMP) for use with writing iOS apps using Kotlin. The basic tools were quickly covered, followed by strategies for handling OS-specific components for iOS in ways that differ from how they are handled on Android. Libraries for making these processes easier were also covered. The lack of jetpack libraries was one important warning for Android devs who expect to use their favorite libraries on iOS. The overall feeling of this talk is that KMP may have a promising future but is not yet ready for most developers to use in production for iOS apps.

The next talk I attended was “Building a screenshot testing pipeline that scales” by Lucas Appelhans of Mericari. This talk went over his experience at Mercari adding automated screenshot testing to their build process. In this, both tools for making this work were covered, as well as hosting solutions for the generated screenshot files. The resulting recommendation was to use the Paparazzi library along with GCS bucket storage. Lucas was a bit caught off guard in retrospect by the size of storage needed to contain the screenshots but still viewed the process as worthwhile to reduce testing overhead for UI changes.

The final presentation I attended during DroidKaigi 2023 was “Material3をやめました” by Yuki Anzai. This talk was essentially a reverse course follow-up to her previous talk about moving to the Material 3 specification last year. The specific reasons given were related to the limitations of Material 3 on color customization and the difficulty of adding more colors that would be supported in night mode when the provided framework did not work. Yuki then introduced the workaround framework she created in response to the problems that were encountered.

Overall there were many more interesting sessions in this year’s DroidKaigi than last year’s, as the event seems to be growing both in attendance and venue space in response to the renewed interest in in-person conferences post-COVID-19 shutdowns. There was also a lot more interaction between individual developers this year as more people felt free to talk to each other, and the event space provided more meetup times and spaces. Attendees of DroidKaigi 2024 can likely look forward to an even further expanded presence as interest in this kind of event continues to rebound.

--

--

Charles Bond
henngeblog

A Software developer from the Pacific Northwest region of the US who has been working in the Android space since 2010. Joined HENNGE in May 2020.