问题标签 [android-r8]

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 投票
1 回答
640 浏览

android - Android:使用 R8 时构建失败

我正在尝试在启用 R8 的情况下构建我的项目。但是,我收到此错误:

./gradlew assembleAndroidTest

0 投票
2 回答
1326 浏览

android - 有没有办法防止 Android 应用代码收缩器 R8 更改行号?

Android Studio 最近开始默认使用R8而不是 ProGuard。

尽管代码被混淆了,但 ProGuard 的堆栈跟踪相当容易理解,无需使用任何工具。让我们使用以下示例:

通常我确切地知道 net.foo.anroid.Foo.wb 对应于哪个文件,并且行号(例如 453、213...)是 ProGuard 源文件中的实际行号。

但是,对于 R8,确定哪一行是在 mapping.txt 中查找它们的唯一方法。

这确实是一个很大的麻烦。如果没有从堆栈跟踪中快速定位源代码的好方法,我将仅出于这个原因回到 ProGuard。

有没有办法防止 R8 更改行号?

0 投票
1 回答
1099 浏览

android - 如何使用 Android R8 保留类构造函数参数名称

我正在编写 Android 库,所以我想为一些构造函数/方法保留参数名称。我正在将我的库部署为 AAR 文件。

在 Gradle 从 3.3.2 升级到 3.4.0 之后,构造函数和公共方法中的所有参数都重命名为“var1”之类的东西,在此之前一切都很好。

据我了解,主要区别在于,现在默认情况下,R8 用于缩小和混淆我们的代码,而不是 Proguard。所以可能我在配置中遗漏了一些东西。

假设我有课:

所以在 proguard-rules.pro 我有:

我将该配置加载到我的模块 gradle 文件中:

现在我的 AAR 文件中的类看起来像这样 ->

所以即使是字段名也被保留了,但我的构造函数中没有变量名。

如何保留方法/构造函数参数名称?

我错过了什么?

0 投票
1 回答
299 浏览

android - 同时使用 ProGuard 和 R8

我希望 ProGuard 和 R8 都进行代码压缩和优化:我敢肯定,经过一年的开发,R8 不会像经过 15 年的 ProGuard 一样酷。

android.enableR8标志启用 R8而不是ProGuard。

有没有办法使用官方的Android工具链来使用这两种工具,即带有Android插件的Gradle?

0 投票
3 回答
1923 浏览

android - 使用 R8 的 Firebase 中的循环参考错误

Firebase 和 R8 出现以下错误。

请帮助我提供任何进一步的指示来调试它。让我知道是否需要更多日志来调试它。

编辑:它的固定 3.4.0-beta02 起。

0 投票
8 回答
9960 浏览

android - 致命异常:发布版本中的 java.lang.NullPointerException

我在应用程序的发布版本中遇到了一个奇怪的问题。这是我的例外

Pojo文件

这是我的proguard文件

0 投票
1 回答
871 浏览

android - Proguard/R8 规则排除资产文件夹

我的项目由主模块组成,然后是其他模块依赖项。一种这样的依赖是“公地”。假设在“commons”中有一个名为“flags”的资产文件夹。

如果我们事先知道这个文件夹永远不会被使用,有没有办法编写一个 proguard 规则来排除这个特定的“flags”文件夹?

在我的项目中,主模块不使用“commons”模块中专门针对此文件夹的任何代码,但它仍包含在最终包中。

0 投票
1 回答
105 浏览

android - 反混淆文件不适用于此异常

我将 deobfuscate 文件上传到控制台,但是... deobfuscate 文件似乎在此异常下无法正常工作。我使用新的 R8 系统而不是 proguard 来混淆代码,因为我使用的是最后一个 android studio,但这也发生在 proguard 之前。我可以在我的 google play 开发者控制台中看到很多异常,其中包含以下文本:

如您所见,它没有说明问题出在哪一行或函数中,而是告诉“在,或,在,或”,而不是说明崩溃在哪里。

我怎么解决这个问题?

0 投票
1 回答
326 浏览

android - Stacktrace 在 Google Play 控制台中被混淆了

我在商店里有一些应用程序,我偶尔会看到崩溃报告。但是,即使映射文件显示为已上传,堆栈跟踪仍然是模糊的。

我正在使用 Android Studio,包括新 R8 代码收缩器的默认设置。堆栈跟踪的示例如下所示。

0 投票
3 回答
714 浏览

android - 如何使亚马逊应用内购买 (IAP) 2.0 与 Android R8 一起使用

在出现重大收入损失后,过了一段时间才发现Android R8 代码收缩器会阻止 Amazon In-App Purchasing (IAP) 2.0 工作。Android Studio 现在默认使用 R8。幸运的是,gradle.properties 中的以下内容似乎能够阻止 R8:

我担心 R8 将来会被强制使用,这将是一场灾难。我正在尝试找到一种使它们兼容的方法。有人在亚马逊的论坛上发了一个类似的问题,这应该是此类问题的最佳场所,但我感觉亚马逊已经停止支持该论坛,因为我最近的两个问题没有收到亚马逊的回复。

我在 R8 使用的 proguard-project.txt 中有以下内容

据我了解,R8 忽略了优化通道。我怀疑这就是原因。

编辑(2019-05-30) proguard-project.txt 的上述脚本来自亚马逊的应用程序内购买文档应用 程序的 build.gradle 具有以下内容: