问题标签 [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.
android - Android:使用 R8 时构建失败
我正在尝试在启用 R8 的情况下构建我的项目。但是,我收到此错误:
./gradlew assembleAndroidTest
android - 有没有办法防止 Android 应用代码收缩器 R8 更改行号?
Android Studio 最近开始默认使用R8而不是 ProGuard。
尽管代码被混淆了,但 ProGuard 的堆栈跟踪相当容易理解,无需使用任何工具。让我们使用以下示例:
通常我确切地知道 net.foo.anroid.Foo.wb 对应于哪个文件,并且行号(例如 453、213...)是 ProGuard 源文件中的实际行号。
但是,对于 R8,确定哪一行是在 mapping.txt 中查找它们的唯一方法。
这确实是一个很大的麻烦。如果没有从堆栈跟踪中快速定位源代码的好方法,我将仅出于这个原因回到 ProGuard。
有没有办法防止 R8 更改行号?
android - 如何使用 Android R8 保留类构造函数参数名称
我正在编写 Android 库,所以我想为一些构造函数/方法保留参数名称。我正在将我的库部署为 AAR 文件。
在 Gradle 从 3.3.2 升级到 3.4.0 之后,构造函数和公共方法中的所有参数都重命名为“var1”之类的东西,在此之前一切都很好。
据我了解,主要区别在于,现在默认情况下,R8 用于缩小和混淆我们的代码,而不是 Proguard。所以可能我在配置中遗漏了一些东西。
假设我有课:
所以在 proguard-rules.pro 我有:
我将该配置加载到我的模块 gradle 文件中:
现在我的 AAR 文件中的类看起来像这样 ->
所以即使是字段名也被保留了,但我的构造函数中没有变量名。
如何保留方法/构造函数参数名称?
我错过了什么?
android - 同时使用 ProGuard 和 R8
我希望 ProGuard 和 R8 都进行代码压缩和优化:我敢肯定,经过一年的开发,R8 不会像经过 15 年的 ProGuard 一样酷。
android.enableR8
标志启用 R8而不是ProGuard。
有没有办法使用官方的Android工具链来使用这两种工具,即带有Android插件的Gradle?
android - 使用 R8 的 Firebase 中的循环参考错误
Firebase 和 R8 出现以下错误。
请帮助我提供任何进一步的指示来调试它。让我知道是否需要更多日志来调试它。
编辑:它的固定 3.4.0-beta02 起。
android - 致命异常:发布版本中的 java.lang.NullPointerException
我在应用程序的发布版本中遇到了一个奇怪的问题。这是我的例外
Pojo文件
这是我的proguard文件
android - Proguard/R8 规则排除资产文件夹
我的项目由主模块组成,然后是其他模块依赖项。一种这样的依赖是“公地”。假设在“commons”中有一个名为“flags”的资产文件夹。
如果我们事先知道这个文件夹永远不会被使用,有没有办法编写一个 proguard 规则来排除这个特定的“flags”文件夹?
在我的项目中,主模块不使用“commons”模块中专门针对此文件夹的任何代码,但它仍包含在最终包中。
android - 反混淆文件不适用于此异常
我将 deobfuscate 文件上传到控制台,但是... deobfuscate 文件似乎在此异常下无法正常工作。我使用新的 R8 系统而不是 proguard 来混淆代码,因为我使用的是最后一个 android studio,但这也发生在 proguard 之前。我可以在我的 google play 开发者控制台中看到很多异常,其中包含以下文本:
如您所见,它没有说明问题出在哪一行或函数中,而是告诉“在,或,在,或”,而不是说明崩溃在哪里。
我怎么解决这个问题?
android - Stacktrace 在 Google Play 控制台中被混淆了
我在商店里有一些应用程序,我偶尔会看到崩溃报告。但是,即使映射文件显示为已上传,堆栈跟踪仍然是模糊的。
我正在使用 Android Studio,包括新 R8 代码收缩器的默认设置。堆栈跟踪的示例如下所示。
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 具有以下内容: