问题标签 [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 Studio 3.5 :此方法包含本机引用并将被缩小。[继续失踪]
昨天我将 Android Studio 更新到了新的 3.5 版本。重新启动我的电脑后,Android Studio 无法再编译我的应用程序。我有3个这样的错误:
App.java:29:错误:此方法包含本机引用并将被缩小。[继续失踪]
在两个不同的 Java 文件中,我在其中调用了一些本机方法
我知道 3.5 版将 R8 作为默认代码混淆器,因此在我的 build.gradle 中,我从我的调试/发布构建类型中注释了 useProguard false/true。现在看起来像这样:
我怎么解决这个问题?
android - 如何在android中添加r8规则?
我们如何在 android 项目中为依赖项添加 R8 规则,并从缩小和混淆中排除文件和包?
android - Android R8 找不到方法
我有两个问题。无论哪种方式,我都无法构建发布 apk。当我禁用 R8(首选 proguard)时,构建会永远持续下去(有时会崩溃,引用“内存不足:java 堆空间”),当我启用 R8 时,会出现以下错误:
我的项目级 build.gradle:
还有我的项目模块 build.gradle:
gradle.properties:
jvmargs 和 dexOptions 堆大小都被放在那里,试图解决“java 堆空间”问题,但他们没有。
android-studio - R8 从 AndroidStudio 中抛出 NullPointerException,但不是从命令行通过 gradlew
问题
当我单击 Android Studio 中的调试图标时,我从 R8 获得了这个 NullPointerException。
但...
gradlew
当我尝试通过从命令行运行进一步调查时,没有报告错误。
所以我不知道如何进行。这是一个商业媒体应用程序,已经通过了 beta 测试并应该发布......但现在这让我受阻。
到目前为止我尝试过的事情......
- 清理并重建
- 文件 -> 使缓存无效并重新启动
- 擦除项目 .gradle 和 user/.gradle 缓存,清理和重建
- gradle.config 中的 enableMultiDex = true
- 将 JVM 内存从 2MB 增加到 4MB
- 重新启动计算机
问题
- 如何解决此异常并摆脱困境?
- 是我的代码还是 R8 错误?
- 为什么我不能从命令行重现错误?
- Android Studio 是否在运行带有额外标志的 gradle 时没有报告?
版本信息
(在堆栈溢出中归档时,所有内容都应该是最新的)
- 安卓工作室 3.5
- 摇篮 5.4.1
- Android Studio Gradle 插件 3.5.0
- Java 1.8
- 构建工具 28.0.3
构建.gradle =
gradle.properties =
android - R8 去除反射所需的 Kotlin 伴生对象
我有一个带有实现工厂接口的伴随对象的类。
我有一些代码在运行时使用反射检查此类,以查看该类是否提供工厂方法。它通过检查该类是否具有伴随对象companionObjectInstance
(
这一切在调试版本中都可以正常工作。
它在启用 R8 的发布版本中失败(minifyEnabled true
在build.gradle中)。它失败了,因为companionObjectInstance
返回null
。
我正在使用不优化Proguard 配置:
在我自己的proguard-rules.pro中,我添加了几乎所有-keep
我能想象到的规则,试图保留这个伴随对象,并@Keep
为所有内容添加了注释,但没有任何效果。R8决心将其剥离。
例如:
是否有任何其他-keep
规则或配置选项可以指示 R8 保留此伴随对象?
android-r8 - r8类名的混淆图
我正在使用 r8 dexer 从一堆 *.class 文件中制作 classes.dex 文件。我想对我的所有类使用混淆功能,但问题是我也有指定类名的 AndroidManifest.xml 文件。因此,我必须知道 r8 转换从哪个名称到哪个名称,以便相应地更改我的 AndroidManifest.xml。问题是 - 如何制作这样的地图?
到目前为止,情况如下:
android - 混淆的 Android 库上的 java.lang.VerifyError
对于较少数量的设备,我们遇到了一个奇怪的异常,显然该类由于方法而未验证。不幸的是,我们无法用我们的设备重现这一点,并且堆栈跟踪来自 Fabric。
堆栈跟踪如下所示:
MyLibrary.java:317中的代码如下所示:
函数定义如下:
内部称之为:
请注意,堆栈跟踪在到达函数之前就结束了,所以我认为问题出在 lambda 函数中?还是在定义中?我不知道如何解决这个问题,但这是我们现在遇到的最常见的错误。它发生在随机设备上,Android OS 版本无关紧要。因此,如果有人可以提供帮助或提供一些反馈,我将不胜感激。谢谢。
java - 使用proguard构建应用程序时出现Android异常
我想使用 proguard 更改一个DigestUtils
类的名称来克服这个问题Method not found using DigestUtils in Android。这是proguard-rules.pro
文件(只有一行,只混淆一个文件):
这是应用程序build.gradle
文件:
那么如果我尝试运行./gradlew assembleDebug --stacktrace
我会得到这个异常:
java - 无法使用 R8 签署 APK
我正在准备将我的应用程序部署到playstore,我目前的专业是基于proguard,看来现在我们必须使用R8,所以我按照Android开发者网站上的指南进行操作,因为R8可以使用相同的proguard文件和配置,我只是简单地创建并添加了工作所需的规则。就在我准备注册时,我收到此错误:
C:\Users\bgatica\.gradle\caches\transforms-2\files-2.1\10d9066f27f47bf4c88827e811c3eb8a\obfuscation-dictionary.txt'
我去了那个路径,看起来那些文件是由 gradle 生成的?我在互联网上搜索了类似的错误或他们指导创建此文件的教程,但没有,您能帮帮我吗?
这是我的配置
这是我对 Proguard 的配置
android - 构建 R8 失败 -> 错误:`dalvik.annotation.EnclosureClass` 类型的多个注释
我从命令行构建项目时遇到错误:
Android Studio 版本:3.5 Gradle 插件:3.5.1 Gradle:5.4.1