问题标签 [jdk-desugaring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
49 浏览

android - 应用程序安装选项“默认 APK”和“应用程序包中的 APK”在 Gradle 任务方面有什么区别

我想将我们的 Android 应用程序资产提取到一个Android 资产包中,因为我们超过了 150 MB AAB(Android 应用程序包)的大小限制。在进行测试时,我遵循了Android App Bundle Test Instructions并将我的 Android Studio Run/Debug 配置从 app bundle 更改为 APK。执行此更改后,我可以在运行时从资产包中找到资产,同时调试我的应用程序。

但是,后来在运行时,我意识到 JDK11 方法Optional.isEmpty不再像以前使用 Run/Debug 配置Default APK时那样向后移植。这是它之前脱糖的方式。

经过一些 Google 研究后,我将Desugaring 库合并到我的项目中,这实际上解决了这个反向移植问题。但是,当继续时,我意识到作为依赖项拉入 Android 应用程序的库的某些部分正在使用以下方法。

根据this stackoverflow article,这是一个导致以下异常的已知问题。

这是我的 build.gradle 文件:

运行配置Default APK仅向后移植该Optional.isEmpty方法并保持public static ConcurrentHashMap.KeySetView newKeySet()不变(未对其执行脱糖操作)。这是我也想从 app bundle 为 APK实现的行为。

我显然可以重写被拉入 Android 应用程序的库中的这段代码,但问题仍然存在,Gradle 任务的区别是应用程序安装选项Default APKAPK from app bundle之间的区别。

我已经找到了这篇文章,但没有详细介绍。
此外,在构建应用程序时还会执行以下 Gradle 任务:

0 投票
0 回答
114 浏览

android - com.android.tools.r8.errors.b:跳转目标的不同堆栈高度:0!= 1

我在当前项目中使用 LocalDate。要在下面的 Android OI 中使用它,需要根据开发人员网站的建议使用 DeSugaring 但在此之后我面临另一个问题。

我更新了 Multidex 依赖项和类路径。但我仍然面临这个错误。请帮助我。

0 投票
1 回答
35 浏览

java - java.lang.NoClassDefFoundError:升级 Gradle 和 Android Gradle 插件时解析失败:Ljava/lang/Math8

我正在开发一个带有 Gradle 版本7.1.1和 Android Gradle Plugin 版本的Android 应用程序7.0.0。当我升级到 Gradle 版本7.2和 Android Gradle Plugin 版本7.1.1时,我收到以下错误。

错误来自此代码:

build.gradle文件设置为针对 JVM 1.8 并进行了脱糖。

desugar_jdk_libs版本设置1.0.9为。

为什么升级会导致此错误?