D8 is a command line tool that Android Studio and the Android Gradle Plugin use to compile project's Java bytecode into DEX bytecode. This command has several options :
--output path, --file-per-class, --no-desugaring, --main-dex-list etc.
I have several questions:
- How to pass this flags to d8 from gradle build file?
- How to view full d8 command (with all flags) which Android Studio actualy use when it builds apk.
I already tried to use DexOptions command with additionalParameters property.
android {
....
dexOptions {
additionalParameters = ['--main-dex-list=mylist.txt']
}
}
But it looks like it doesn't work.
Before D8 tool there was DX tool. Params can be sent to DX like this:
But now this doesn't work. Probably because of now D8 dexing task name doesn't starts with dex word.
I also noticed that there is property android.enableD8.desugaring=true which can be declared in gradle.properties file. I assume that this property turns on --no-desugaring flag of D8.
If so maybe other properties also can be set throught gradle.properties file? Is there a documentation of all available android.enableD8.* properties ?
UPDATE:
There is multiDexKeepFile property which can be declared in each BuildType block. It looks like this property does exactly what --main-dex-list flag of D8 does. Ok, but what about other flags?