Android studio 什么';Android Studio使用的d8.jar的文件路径是什么?

Android studio 什么';Android Studio使用的d8.jar的文件路径是什么?,android-studio,android-studio-3.0,dx,android-d8,Android Studio,Android Studio 3.0,Dx,Android D8,我知道。但是我想知道d8.jar的文件路径是什么?我在SDK中找不到像dx.jar这样的d8.jar 一个典型的dx.jar位于Android/Sdk/buildtools//lib/中: xb@dnxb:~/Android/Sdk/build-tools/27.0.3/lib$ ls apksigner.jar dx.jar shrinkedAndroid.jar xb@dnxb:~/Android/Sdk/build-tools/27.0.3/lib$ 我的第一个想法是dx.jar意

我知道。但是我想知道
d8.jar的文件路径是什么?我在SDK中找不到像
dx.jar
这样的
d8.jar

一个典型的
dx.jar
位于
Android/Sdk/buildtools//lib/
中:

xb@dnxb:~/Android/Sdk/build-tools/27.0.3/lib$ ls
apksigner.jar  dx.jar  shrinkedAndroid.jar
xb@dnxb:~/Android/Sdk/build-tools/27.0.3/lib$ 
我的第一个想法是dx.jar意味着d8.jar,但似乎不是这样

老一辈:

与27.0.3或更高版本(例如25.0.0)SDK中的.class
dx.jar
完全相同(我将其解压缩):

但结构完全不同:

xb@dnxb:~/Downloads/r8/build/libs/d8/com/android/tools/r8$ ls
annotations                                           ExtractMarkerCommand.class                                                                      
ApiLevelException.class                               ExtractMarker$VdexOrigin.class                                                                  
ArchiveClassFileProvider.class                        GenerateMainDexList.class
ArchiveProgramResourceProvider.class                  GenerateMainDexListCommand$1.class
ArchiveProgramResourceProvider$ZipFileSupplier.class  GenerateMainDexListCommand$Builder.class
BaseCommand$Builder.class                             GenerateMainDexListCommand.class
BaseCommand.class                                     graph
BaseCompilerCommand$Builder.class                     InternalProgramOutputPathConsumer.class
... omit
我在sdk和Android Studio中用d8关键字搜索文件名,但运气不好:

xb@dnxb:~$ find /home/xiaobai/Android/ -iname '*d8*'
xb@dnxb:~$ find ~/Downloads/AS/android-studio -iname '*d8*'
xb@dnxb:~$ 
那么,Android Studio中d8.jar的文件路径在哪里?我的Android Studio版本已经是
3.2金丝雀12
,但是如果d8.jar不存在,Android Studio默认如何调用d8?或者它藏在什么地方?

D8是新技术的一部分。D8不与dx共享任何历史-尽管命名可能会让它看起来像那样。dx不再积极开发,但D8是由Google作为一个开源项目积极开发的


你应该能够在你的类路径中找到
r8.jar
(而不是
d8.jar
,这是不存在的),如果你想使用不同版本的d8,你可以在你的类路径上放上你自己的
r8.jar

在构建工具28.0.1之前,d8/r8并不是作为Android SDK的一部分发布的。在最新版本中有
buildtools/28.0.1/d8
buildtools/28.0.1/lib/d8.jar

它也是Android Gradle插件的一部分。从3.1.x/3.2-alpha开始,D8类(及其重新打包的依赖项)被捆绑到
com.android.tools.build:builder
artifact中。后者是主要gradle插件工件的可传递依赖项。因此,Gradle插件(以及Android Studio)使用捆绑的d8类对代码进行索引


有一个单独的工件
com.android.tools:r8
,它是一个单独的R8jar(从1.0.25版开始,没有依赖项),但android Gradle插件并不依赖于它。

在我刚刚默认安装了android Studio之后,我在这里有一个d8.jar(大小为4MB):

顺便说一句,要调用它,您需要运行


java-cp d8.jar com.android.tools.r8.d8

1。“(不是d8.jar——它不存在)”,那么为什么gradle构建指令会生成d8.jar呢?2.我仍然无法通过
find
echo$CLASSPATH
找到r8.jar。您能否显示如何找到路径的示例输出?谢谢。当我发布此问题时(2018年4月27.0.3日),此文件不存在(自2018年8月28.0.2日起出现)。当然。我只是回答了今天查阅你的问题的人的问题(和我一样)
xb@dnxb:~/Downloads/r8/build/libs/d8/com/android/tools/r8$ ls
annotations                                           ExtractMarkerCommand.class                                                                      
ApiLevelException.class                               ExtractMarker$VdexOrigin.class                                                                  
ArchiveClassFileProvider.class                        GenerateMainDexList.class
ArchiveProgramResourceProvider.class                  GenerateMainDexListCommand$1.class
ArchiveProgramResourceProvider$ZipFileSupplier.class  GenerateMainDexListCommand$Builder.class
BaseCommand$Builder.class                             GenerateMainDexListCommand.class
BaseCommand.class                                     graph
BaseCompilerCommand$Builder.class                     InternalProgramOutputPathConsumer.class
... omit
xb@dnxb:~$ find /home/xiaobai/Android/ -iname '*d8*'
xb@dnxb:~$ find ~/Downloads/AS/android-studio -iname '*d8*'
xb@dnxb:~$ 
~/Android/Sdk/build-tools/29.0.3/lib/d8.jar