android - R8 不支持 applyMapping 吗?
问题描述
使用 applyMapping 会导致编译异常,比如:
R8: 'boolean readField(int)' already has a mapping
FAILURE:构建失败并出现异常。
- 出了什么问题:任务“:app:transformClassesAndResourcesWithR8ForRelease”执行失败。
com.android.tools.r8.CompilationFailedException:编译未能完成
我的 Android Gradle Plugin 的版本是 3.5.3,我发现是 R8 的问题。因为当禁用 R8 时,applyMapping 工作正常,启用 R8,它将不起作用。我喜欢 R8 生成的 Mapping.txt 有这样的重复方法:</p>
1:1:boolean readField(int):0 -> a
2:2:boolean readField(int):0:0 -> a
如果删除其中一个,它将正常工作。
解决方案
您使用的是旧版本的 R8,它过于急切地在映射文件中报告错误。尝试通过将以下内容添加到顶级 build.gradle 文件来使用旧版本:
构建脚本 {
repositories {
maven {
url 'http://storage.googleapis.com/r8-releases/raw'
}
}
dependencies {
classpath 'com.android.tools:r8:1.6.60' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
这应该有助于解决您的问题。
推荐阅读
- java - 从android中的bundle获取id的问题
- python - ModuleNotFoundError:没有名为“google_auth_oauthlib”的模块
- python - 如果两个不同数据框中两列的值匹配,则将 df2 中另一列的值复制到 df1 中的列
- javascript - Google Places API 和 URL Shorter API
- visual-studio - Mac上的Windows Authentication asp.net core开发
- git - 为什么在推送到我的 github 存储库时出现此错误
- bash - 如何使用 bash 命令输出不带冒号的日期
- c++ - 显示 N 个素数
- angular - 即使表单未经过验证,Angular 7 在组件加载时设置反应表单的值也会启用保存按钮
- wcf - 在浏览器中运行 WCF 服务主机