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中的.classdx.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