提问人:OrenIshShalom 提问时间:5/20/2021 更新时间:5/20/2021 访问量:431
D8 DEX 编译因脱糖而失败
d8 dex compilation fails with desugaring
问:
我无法让 d8 dex 编译器来编译我的 jar 包:
$ wget https://repo1.maven.org/maven2/org/mockito/mockito-core/3.6.0/mockito-core-3.6.0.jar
$ java -jar d8_2.1.86.jar --output /tmp mockito-core-3.6.0.jar 2>&1 >/dev/null | grep "Compilation"
com.android.tools.r8.errors.CompilationError: Class or interface java.lang.RuntimeException required for desugaring of try-with-resources is not found.
Compilation failed
我试图阅读有关脱糖问题的信息,但无法走得很远——这个罐子有什么问题?
答:
1赞
Rico Wind
5/20/2021
#1
如果将 android.jar 或 java 运行时 jar 作为 --lib 传递到编译中,则不会看到该异常。 但是,在 d8 编译中还有很多其他警告,因为不存在脱糖所需的类型。这些来自 mockito 包的依赖项,您在输入或类路径中没有这些依赖项。 参见:https://developer.android.com/studio/command-line/d8#j8
评论
0赞
OrenIshShalom
5/20/2021
添加时不起作用... :(--lib android-4.1.1.4.jar
1赞
Rico Wind
5/21/2021
对我有用: $ wget repo1.maven.org/maven2/org/mockito/mockito-core/3.6.0/... $ wget storage.googleapis.com/r8-releases/raw/2.1.86/d8.jar $ java -jar d8.jar --lib ~/src/r8/third_party/android_jar/lib-v29/android.jar mockito-core-3.6.0.jar 仍然给出很多关于缺少类的警告(预期),但不会编译失败
0赞
OrenIshShalom
5/21/2021
我从这里得到android jar:repo1.maven.org/maven2/com/google/android/android/4.1.1.4/...,我想我应该尝试另一个版本?在哪里可以找到您使用的版本?谢谢!!
1赞
Rico Wind
5/25/2021
您可以使用 sdkmanager 下载android.jar:developer.android.com/studio/command-line/sdkmanager 我刚才用以下命令验证了: ./sdkmanager --sdk_root=/tmp/sdk/cmdline-tools --install “platforms;安卓-30”
评论