
Andrea Cioccarelli
Andrea is an engineering student at Politecnico di Milano with a passion for Android development, Kotlin, and cybersecurity. He has been building technical apps for Android since the age of 15, with a focus on low-level programming and system security. His main interests are in operating system internals, language design and offensive security. Outside of tech, he is an aviation enthusiast, likes to travel around the world, and trains in karate and krav maga
A Journey: Disassembling Kotlin Features into Bytecode
The talk is a walkthrough, taking the attendees through the process that their Kotlin code for Android apps follows: from class compilation, desugaring, packing, signing, distribution, downloads, installation, on-device recompilation (JIT/AOT) and optimization, and finally execution. I will showcase the different levels of abstraction that the process involves: from abstract JVM specification, to android-specific tooling for resource and kotlin+java bytecode handling, to how devices compile applications to native code, how ART executes and repeatedly profiles running apps, and how system updates affect this mode.
Additionally, to leave practical and tangible knowledge to attendees, we will analyze some kotlin features (which make it the great language we use to create apps), and dissect how they are actually compiled and implemented in the android ecosystem, to tie together the abstract system view with some useful takeaway examples.
But, most importantly, my goal is to to instill in attendees more awareness around their general developer workflow, with sharp technical knowledge and best practices.
The throughline is dividing the talk in initial exploration of the general ecosystem that android apps go through, how the devices actually represent and execute them, and then giving a bird's eye view of some key Kotlin language features, and analyzing their bytecode.