gpt4 book ai didi

android-gradle-plugin - Android gradle 插件(升级到 2.2.0 后)失败,出现 dexguard 任务错误 "No signature of method: ....getAllLibraries()"

转载 作者:行者123 更新时间:2023-12-01 13:41:42 25 4
gpt4 key购买 nike

我在“dexguard”任务期间得到了这个堆栈跟踪(所有行都以时间戳和 [ERROR] [org.gradle.BuildExceptionReporter] 开头):

Caused by: groovy.lang.MissingMethodException: No signature of method: com.android.build.gradle.internal.core.GradleVariantConfiguration.getAllLibraries() is applicable for argument types: () values: []
at com.guardsquare.dexguard.h.getProguardFiles(DexGuard7.1.23:1090)
at com.guardsquare.dexguard.ao.doCall(DexGuard7.1.23:784)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:590)

我在 Windows 7 64b 上使用 DexGuard v7.1.23、Android Studio 2.2、默认 gradle 2.14.1。

错误发生在我更改后(在所有相关的 build.gradle 脚本中):

     dependencies {
- classpath 'com.android.tools.build:gradle:2.1.3'
+ classpath 'com.android.tools.build:gradle:2.2.0'

使用 gradle 插件 2.1.3 构建工作。

我尝试通过远程连接到 gradle 在 Android Studio 中调试它,但是虽然调试器中的“暂停”按钮看起来暂停了进程,并且我可以恢复执行,但它不会显示任何代码(可能需要gradle 和所有相关插件的来源?)。

我认为错误最有可能出现在 dexguard gradle 插件代码中,它访问了一些在 android gradle 插件 2.2.0 中不再可用的东西。


提问时间:

如何调试/修复这样的东西?我已经习惯了一些来自大型 C++ 项目的重要构建方案,这些项目涉及 make 文件和执行外部工具的各种脚本(我可以很容易地检查这些项目)源代码级别的每个构建错误,并准确了解使用什么参数调用了什么二进制文件以及为什么),但是这个 gradle 生态系统具有从某些网络存储库下载的许多动态部分和极慢的 Groovy 执行控制对我来说有点太复杂了,方式在我的头上。

是否有(不是很困难)调试构建过程的方法(我不是在谈论 native 调试器和调试 VM 本身,虽然可能,但结果听起来毫无用处)?也许一些简单的方法也可以从存储库中获取源包,类似于 linux 的 -src.pkg,只需添加依赖项?

或者我可以在某处找到缓存的 dexGuard gradle 插件二进制文件,反汇编它,检查它调用的内容,然后在我自己的脚本中手动重写它吗?

任何有关如何获得有关该 gradle blackbox 的更多信息的建议都值得赞赏,即。它是如何工作的,为什么它失败了,等等......(虽然我没有考虑正确地学习整个 Groovy,特别是因为即使对于核心语言我也没有那种心态(我是一个简单的人,在 ASM 中思考和 C++),如果我理解得很好,gradle 会以非常特定领域的方式扩展它,所以纯 Groovy 甚至不足以流利地理解这些脚本?)。

最佳答案

你有两个选择:

  • 继续使用 Android gradle 插件 2.1.0 或更早版本
  • 将 DexGuard 更新到支持 2.2.0+ 的最新版本(最新版本是 7.2.12)

编辑:

为了更好地理解为什么会发生这些事情:DexGuard 插件使用了来自 Android gradle 插件的 API。如果 API 在新版本中发生变化,DexGuard 插件必须适应更新的 API,同时仍然保持对旧版本的向后兼容性。

关于android-gradle-plugin - Android gradle 插件(升级到 2.2.0 后)失败,出现 dexguard 任务错误 "No signature of method: ....getAllLibraries()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39597664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com