Modernizing an Android app
Several years back, I wrote a mobile app to assist with playing a sprawling board game called Arkham Horror, 2nd Edition. With all the expansions, there are over 30 decks of cards, and I don’t have enough table space, let alone time to set it up.
Fantasy Flight (the publisher) was aware there was money to be made here, so they built an app that would allow you to “buy” the expansions via IAP and unlock the different decks. When the 64-bit revolution came around, Fantasy Flight was unable (or willing) to pay to rebuild the app for 64-bit and the app was dead.
This rendered the board game nearly unplayable for us, and I was started to learn Android development, so I built an app that would allow you to draw from the various decks, and remembered which cards were drawn, pinned (saved), and which expansion they were for. This took several hours of development in addition to entering all the cards.
The app was a multi-activity Android application because single-activity-multiple-fragments wasn’t fully established as The Way to build things. The data was stored in SQLite, so all that data entry was copying and pasting and modifying a bunch of INSERT
statements.
The app works and has served us well for years. Now it’s starting to show its age, and I’d like to bring it into 2021, just to see if I can. Here’s what needs to be done:
- replace Java code with Kotlin code (what’s remaining; all new code will be Kotlin)
- replace basic SQLite access with Room
- replace all the activities with a single activity that navigates between multiple fragments
- update Gradle and the Android Gradle Plugin
- support tablets better
I’m expecting that a bunch of this work will require heavy use of Jetpack libraries, which are about as modern as it gets, and I’m excited to get started! I’ll post updates on this blog as I go.