问题标签 [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 投票
3 回答
15870 浏览

android - D8和R8安卓的区别

由于android studio 推出了两个新工具D8 和R8。根据谷歌文档,D8 是一个 dex 工具,R8 是一个 progourd 工具,但正如他们的解释一样,两者都在做几乎相同的事情,如下所示:

D8是一个将java字节码转换为dex码的dexer。

R8是一个java程序收缩和缩小工具,将java字节码转换为优化的dex码。

似乎两者都从字面上将java字节码转换为dex码。那么,在转换 dex 代码的情况下,他们实际上在内部做什么?

0 投票
2 回答
13762 浏览

android - 如何仅关闭 Android R8 中的混淆功能?

我使用 Android Studio 3.3 Canary 5、Gradle 4.9、gradle plugin 3.3.0-alpha05

不工作。


编辑:

@JakeWharton:“您为此使用 ProGuard 配置,而不是 Gradle DSL。使用 -dontshrink 禁用收缩,使用 -dontobfuscate 禁用混淆,使用 -dontoptimize 禁用优化。”

低密度脂蛋白

proguard-rules.pro

0 投票
2 回答
1193 浏览

android - Android Studio 3.2 上的 AndroidX - 运行应用程序时出现验证错误

将我的应用程序迁移到 Android Studio 3.2 上的 AndroidX 库。在调试中运行时,一切都按预期工作,但如果我生成一个签名的 APK,使用 Proguard 进行混淆 - 我收到此错误:

我尝试排除所有 AndroidX 库:

但是问题仍然存在,除非我基本上使用取消混淆

还尝试查看映射文件的类d.a是什么,但它并没有提示我问题的方向。

喷射器已启用

我在这里错过了什么吗?有没有可能这是 android.preference 库的问题?

0 投票
1 回答
379 浏览

android - 由于 GRPC 和 R8,Firestore (0.6.6-dev) 出现内部错误

更新 Firebase 依赖项后,我的应用停止工作。崩溃报告显示了这个日志:

由于日志没有对我的源代码的任何类引用,我试图找出依赖关系。

终于明白了,问题是因为R8 shrinker和GRPC。

以下是上述问题的解决方案:

  1. android.enableR8=false
  2. -保持类 io.grpc.** { *; }

上述两种解决方案对我来说都不是很有趣。

我不想应用第一种解决方案,因为禁用 R8 会使我的 APK 大小增加 200 KB。第二种解决方案对我来说是个黑客。当单个类引起一些问题时,我不赞成保留整个库。

现在的问题是如何让我的应用程序在启用 R8 的情况下工作并且不让grpc库远离混淆?

0 投票
2 回答
5695 浏览

android - 无法为 com.android.build.gradle.internal.dsl.BaseAppModuleExtension 类型的对象设置未知属性“enableR8”

我在 android studio 3.2 中添加了这段代码;

无法为 com.android.build.gradle.internal.dsl.BaseAppModuleExtension 类型的对象设置未知属性“enableR8”这是什么意思?

0 投票
1 回答
871 浏览

android - 如何修复因 ProGuard/R8 导致的崩溃?

我正在制作一个简单的应用程序,它运行良好,但是当我尝试使用 ProGuard 缩小/混淆代码时,当我从另一个打开 Activity 时它会崩溃。

使用 R8 时也会发生这种情况。

完整的流程是:

输入 MainActivity,然后生成 CameraActivity,它使用 Firebase MLKit 检测条形码(当然,这使用相机)。当检测到 QR 码时,它会启动 DetailActivity 向服务器发送请求(使用 Retrofit)。使用 Room 将响应保存到 DB。总体而言,该应用程序使用整个架构组件。

它在从 CameraActivity 到 DetailActivity 的转换中崩溃,并且 logcat 中绝对没有关于崩溃的日志。

完整的源代码可以在https://github.com/gincos/bookqr-uc/tree/dev找到

你可以在那里检查我的 proguard-rules 和我的依赖项,大部分应用程序都是用 Kotlin 制作的并使用协程。

提前致谢!

0 投票
0 回答
564 浏览

proguard - R8 的一个组件生成一个 VerifyError

我已经通过这个问题两天了。我已经成功构建了我的 Release APK,但是当我在设备中测试这个 APK 时,我得到了这个异常:

m.a在构建文件夹中生成的 proguard mappings.txt 文件中对此进行了跟踪,显然它指向r8.GeneratedOutlineSupport.

每个其他搜索结果都m.a指向类路径中间的点,而不是整个类路径。所以,如果我没记错的话,这意味着代码/资源收缩器的一部分将产生该错误。

GeneratedOutlineSupport首先是什么,我应该把-keep r8.GeneratedOutlineSupport.*或类似的东西作为一种解决方法吗?

编辑:我想我暂时可以使用 Proguard。

0 投票
1 回答
3003 浏览

java - Android/Java 混淆:R8 与(ProGuard 或 DexGuard)?

我想知道最强大的混淆工具是什么(避免逆向工程):

  • R8 和 ProGuard 之间
  • R8 和 DexGuard 之间

谢谢。

0 投票
1 回答
20410 浏览

android - Android/java:从 ProGuard 到 R8 的过渡/迁移?

我想知道如何从ProGuard过渡/迁移到R8

我应该从我的 Gradle 文件中删除与 Proguard 相关的行并添加该android.enableR8 = true行吗?

谢谢。

0 投票
1 回答
630 浏览

java - 如何解决 Proguard 问题 - ArrayIndexOutOfBoundsException?

我正在尝试为我的应用程序生成 APK。但是在构建编译器之后会抛出一个 java.lang.ArrayIndexOutOfBoundsException.

我知道这个错误以编程方式意味着什么。但是如果我禁用minifyEnabledFalse。然后生成 APK 并且应用程序运行良好。

我在这里看到了一个类似的问题,并尝试将其脱糖为假。

但它仍然抛出Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with non-zero exit value 1

我该如何解决这个问题?

在此处输入图像描述