问题标签 [android-d8]

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 投票
5 回答
1960 浏览

android - Firebase 性能监视器导致“D8:不支持的源文件类型”

我添加了

当我运行build脚本时,我得到了

/transforms/FirebasePerformancePlugin/dev/debug/174/module-info.class:D8:不支持的源文件类型

这可能是什么问题?

我更新了所有插件、播放服务和 Android Studio,但没有运气

0 投票
1 回答
360 浏览

android - R8 仍然在堆栈跟踪中,即使它在属性中被关闭

我正在使用 android 插件 3.4.2,gradle 5.0。我在 gradle.properties 中关闭了 R8android.enableR8 = false

但是我仍然有一个堆栈跟踪,其中 R8 在包中。

这是否意味着 R8 仍然可以工作,或者它只是 r8 包中的 dexer?我知道如何修复此错误,但我想确定 R8 未启用。

0 投票
0 回答
294 浏览

java - Android 构建失败:D8:java.lang.TypeNotPresentException:类型 org.gradle.internal.reflect.Instantiator

我们根据 Google 的要求将我们的应用程序拆分为 32 位和 64 位版本。作为此更改的一部分,我们开始使用 D8 编译器而不是旧的 DEX 编译器。当我们使用 D8 编译器时,我们的构建时间从 6 分钟增加到 20 分钟(我们有一个大型应用程序)。我们在网上进行了广泛的研究,我们发现减少构建时间的唯一解决方案是禁用脱糖。但是,如果禁用脱糖功能,应用程序将不会构建。

当我们关闭脱糖功能时,将 gradle 版本从 5.5.1 更新到 5.6 并没有解决我们的问题。也没有删除 .gradle 和 build 目录并使应用程序无效+重新启动。我们使用的是 Android Studio 3.5 版。

使用 android.enableD8.desugaring=false 构建错误

gradle.properties 文件

build.gradle 片段

我们将感谢有关让我们的应用程序在禁用脱糖的情况下构建的建议。我们还对减少与使用 D8 编译器相关的构建时间的任何其他策略感兴趣。

谢谢!

0 投票
0 回答
282 浏览

android - dex文件过多

当我构建大型多模块项目时,结果 apk 包含很多 dex 文件。调试版本为 35,发布版本为 15。大多数文件的方法和引用都比 65k 少得多。

有没有办法压缩 dex 文件?

我还分析了 google、instagram 和其他一些著名的应用程序。他们都有 4-6 个几乎完整的 dex。没有我们所拥有的。所以看起来压缩是可能的

我们还怀疑如此大量的 dex 文件会减慢应用程序的启动速度。是这样吗?

当我在 android 4 设备上运行应用程序时,我可以在日志中看到 dex 文件是如何被解包的。我没有对其进行分析,但看起来每个文件的速度或多或少都相同,可能我在这里错了。

AGP 3.4,Gradle 5.5

在调试版本上: 在此处输入图像描述

发布版本的 dex 指标: 在此处输入图像描述

0 投票
1 回答
524 浏览

android - 库内片段的脱糖失败

我在库项目中有一个片段 VideoPlayerBaseFragment。我正在使用人工构建实现在我的应用程序中使用这个库

当我构建我的应用程序时,它会引发以下错误:

失败的默认方法脱糖, com.mindvalley.module_videoplayer.base.fragment.VideoPlayerBaseFragment 因为它的超类androidx.fragment.app.Fragment缺失

我的库模块实现了 exoplayer 库

api“com.google.android.exoplayer:exoplayer:2.10.5”

我无法找到原因。它适用于我创建的其他库,并且它们中也有片段。

0 投票
0 回答
81 浏览

android - AndroidX 迁移问题:JAR 文件的黑名单/排除

我有一个 jar 文件在libs其中使用android.support.v4,我正在尝试迁移到 AndroidX。现在,Gradle 同步失败,直到我设置android.enableJetifier=false. 但是,如果我将此标志设置为 false,那么我会收到 D8 错误

程序类型已存在:android.support.v4.media.MediaBrowserCompatApi21$MediaItem

解决此迁移问题的正确方法是什么?

0 投票
0 回答
93 浏览

androidx - com.google.android.gms.common.internal.zzf 类型被引用为来自 `com.google.android.gms.internal.zzcms` 的接口

无法找出什么是错误请帮助我,在迁移到 android x 后,这个错误即将到来,我更新了我的所有依赖项和 android,但它显示这个错误类型 com.google.android.gms.common.internal.zzf 被引用作为来自com.google.android.gms.internal.zzcms.

0 投票
1 回答
120 浏览

android - 如何在 Bazel 项目中为 d8 设置命令行标志?

例如,如果我想设置--min-api为 26:https ://r8.googlesource.com/r8/+/b9cb6ae34047f19320885d9e2c594f81364fa896/src/main/java/com/android/tools/r8/D8CommandParser.java#120

我已经尝试了.bazelrc使用 Bazel-s标志的各种组合,以查看使用其标志调用的子命令,但我没有看到任何我想要的添加:

  • build:d8 --define=min-api=26
  • build:d8 --min-api=26
  • build:d8 --min-api 26

理想情况下,尽管这将设置在 BUILD 文件中的某个位置,因此它可以针对每个目标进行配置。

0 投票
1 回答
765 浏览

android - 为 Android 运行 dx 或 d8 工具时出错

我正在尝试从命令行手动构建 Android 应用程序。
但是,每当我运行位于 Android SDK build-tools 目录中的 dx.bat 命令时,我总是会收到错误消息。无论我给出哪个选项,我总是得到同样的错误。运行dx --help时,我收到此错误:
-Djava.ext.dirs=E:\.android\SDK\build-tools\29.0.2\lib is not supported. Use -classpath instead. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

当我有 Android Studio 时,我没有遇到任何此类问题。我在做什么错误以及如何使 dx.bat 文件正常工作?

0 投票
0 回答
334 浏览

android - java.lang.NoClassDefFoundError:解析失败:Landroid/content/ServiceConnection$-CC;

在 Android Q 上运行我的应用程序时出现此错误:

这是我的配置:

我的jdk版本:jdk1.8.0_221

compileSdkVersion 29

buildToolsVersion '29.0.3'

compileOptions {     
sourceCompatibility JavaVersion.VERSION_1_8     
targetCompatibility JavaVersion.VERSION_1_8
}

android.useAndroidX=true

android.enableJetifier=true

类路径'com.android.tools.build:gradle:3.6.1'

distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-all.zip

HimalayaFmLocalAppImpl$1 是一个实现 android/content/ServiceConnection 的内部类。并且只覆盖onServiceConnectedonServiceDisconnected方法,不要覆盖onBindingDied方法。

任何帮助表示赞赏!