java - 如何调试第三方Gradle插件?

标签 java android debugging gradle

我正在尝试使用 gradle signing plugin 对 Android AAR Artifact 进行签名.不幸的是,我在这个过程中得到了一个相当无用的 NullPointerException:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':library:signArchives'.
> java.lang.NullPointerException (no error message)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':library:signArchives'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        [...snip...]
        at org.gradle.launcher.Main.main(Main.java:37)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.lang.NullPointerException
        at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
        at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
        at org.bouncycastle.openpgp.PGPSignatureGenerator$initSign.call(Unknown Source)
        at org.gradle.plugins.signing.signatory.pgp.PgpSignatory.createSignatureGenerator(PgpSignatory.groovy:54)
        at org.gradle.plugins.signing.signatory.pgp.PgpSignatory.sign(PgpSignatory.groovy:64)
        [...snip...]
        ... 52 more


BUILD FAILED

调试此异常最简单的方法是什么?有没有办法将调试器附加到 gradle?我可以构建签名插件,插入一些日志语句并告诉我的构建选择我的自定义版本而不是它附带的版本吗?

最佳答案

根据 thread in the gradle forums有一个有点 secret 的 org.gradle.debug-flag 允许您附加调试器。

gradle someTask --no-daemon -Dorg.gradle.debug=true

对于修补程序/自定义插件,将您复制和修改的插件放在 rootProjectDir/buildSrc/src/main/groovy 中就足够了。您可以在 Gradle site 上阅读更多关于编写自定义插件的信息。 .

关于java - 如何调试第三方Gradle插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789797/

相关文章:

android - 我需要所有的 Android SDK 构建工具吗?

android - 判断android包是vendor预装的

java - 如何在 IntelliJ 中调试多线程应用程序?

java - 获取用户输入并将其分配给不同类中的 HashMap

java - JSR 303 验证 - 确保字段具有特定接口(interface)实现

android - Gradle:在库项目中找不到actionbarsherlock @aar

c# - visual studio 2010 - 使用 "release"web.config 转换进行调试?

java - 在 android studio 中按键盘上的 Enter 键提交包含 EditText 的 AlertDialog.Builder

java - 对话框上的 NullPointerException - Android

c++ - 当 C++ 断言失败时,如何自动创建小型转储?