Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compile with D8

I want to use the recently introduced D8 compiler from Google to build a dex file. Unfortunately, I didn't find the jar executable in the build-tools folder (like the dx tool). Does anyone know where it's located instead?

Thanks in advance.

like image 442
False Avatar asked Nov 17 '22 20:11

False


1 Answers

There is no D8.jar anywhere in build-tools. D8 is distributed as a maven artifact instead. It can be downloaded from https://maven.google.com. The artifact is named com.android.tools:r8 because D8 is a part of the R8 project. The jar contains both R8 and D8 commandline interfaces, so, in theory, it can be downloaded and used from a commandline like: java -cp r8.jar:<...dependency jars> com.android.tools.r8.D8 <D8 arguments here> java -cp r8.jar:<...dependency jars> com.android.tools.r8.R8 <R8 arguments here> However this artifact jar has a lot of dependencies and if you want to use it outside of the gradle-based build then it is easier to build r8/d8.jar executable jars from the sources by yourself. The instruction how to do it is at https://r8.googlesource.com/r8/. The resulting jars are self-contained (all deps bundled in).

The Android Gradle plugin (and, therefore, Android Studio) doesn't depend on the com.android.tools:r8. R8/D8 classes are bundled into com.android.tools.build:builder (one of the libraries that gradle plugin consists of) instead.

like image 115
Darth Beleg Avatar answered Mar 05 '23 06:03

Darth Beleg