- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在“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 甚至不足以流利地理解这些脚本?)。
最佳答案
你有两个选择:
编辑:
为了更好地理解为什么会发生这些事情: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/
我是一名优秀的程序员,十分优秀!