Despaghettifying the hairball
summary
Starts from a single monolithic module and shows concrete steps to split it: use Dgraph and Gradle dependency trees to surface package clusters, take actual APK heap dumps and parse them with a hprof parser to list loaded vs unloaded classes, use DexFile/dexdump to enumerate APK classes, kill “zombie” runtime work with no-op bindings, extract interfaces and resources into new modules, and run CI that diffs class lists and flags PRs with +100 classes so regressions are caught before merge.
AI-written summary · about
chapters (9)
- 0:00Introduction
- 3:40Why untangle code
- 9:17Finding boundaries
- 15:17Detecting dead code
- 22:43Extracting modules
- 28:00Decoupling dependencies
- 30:30Enforcing changes
- 35:31Key takeaways
- 37:40Q&A
related talks
29mBytecode analysis for everyone!
27mDiffusing Changes in your APK
47mExploring a complex codebase with AI
25mConsiderate App Update Delivery
25mDetangling Your Dependency Graph
54mResolving technical debts in software architecture
51mExploring Java’s Hidden Costs
41mShrink, Secure & Optimize Your App With R8
