Gradle Plugin that allows you to decompile bytecode compiled with Jetpack Compose Compiler Plugin into Java
decomposer
Gradle Plugin that allows you to decompile bytecode compiled with Jetpack Compose Compiler Plugin into Java and check it
How to use
Run build
Task :uicomponent-compose:compileDebugKotlin
DecomposerPlugin: decomposed in /Users/takahirom/git/…/uicomponent-compose/build/decompile
“>
DecomposerPlugin: decomposed in /Users/takahirom/git/…/uicomponent-compose/build/decompile
“>
> Task :uicomponent-compose:compileDebugKotlin
DecomposerPlugin: decomposed in /Users/takahirom/git/.../uicomponent-compose/build/decompile
Now, you can check the Java code in build/decompile
@Composable
private static final void AudioControlButton(final Modifier modifier, final boolean isVisible, final boolean isPlayingPodcast, Composer $composer, final int $changed) {
...
if (($dirty & 731 ^ 146) == 0 && $composer.getSkipping()) {
$composer.skipToGroupEnd();
} else if (isVisible) {
$composer.startReplaceableGroup(445067107);
ComposerKt.sourceInformation($composer, "");
Painter var6;
if (isPlayingPodcast) {
$composer.startReplaceableGroup(445067139);
...
Download
If you are using pluginManagement in settings.gradle.
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
....
maven { url 'https://jitpack.io' }
}
...
resolutionStrategy {
eachPlugin {
if(requested.id.toString() == "com.github.takahirom.decomposer"){
useModule("com.github.takahirom:decomposer:main-SNAPSHOT")
}
}
}
plugins {
id 'com.android.library'
id 'kotlin-android'
...
id "com.github.takahirom.decomposer"
}
If you use buildscript (not checked)
buildscript {
repositories {
mavenCentral()
maven {
url 'https://jitpack.io'
}
}
dependencies {
classpath 'com.github.takahirom:decomposer:main-SNAPSHOT'
}
}
apply plugin: 'com.github.takahirom.decomposer'
Credit
This plugin uses Fernflower https://github.com/JetBrains/intellij-community/tree/4becae3818835d6105dbcf6c55ece50846395290/plugins/java-decompiler/engine