[英]How to debug a third-party Gradle plugin?
我正在尝试使用gradle签名插件签署 Android AAR工件。 不幸的是,我在这个过程中遇到了一个相当无用的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? 我可以构建签名插件,插入一些日志记录语句并告诉我的构建版本来获取我的自定义版本而不是它附带的版本吗?
这就是我使用IntelliJ做的方式 - Android Studio基于IntelliJ所以它应该是相同的,其他IDE应该是相似的:
下载错误Gradle插件的源代码的正确版本,或克隆/访问其版本控制存储库,并检查与您正在使用的错误Gradle插件版本对应的相关分支或标记。 使用文件 - >现有源中的新项目将代码导入IntelliJ。 然后在命令行运行:
./gradlew someTask -Dorg.gradle.debug=true --no-daemon
并使用端口5005创建一个新的远程调试连接,设置您的初始断点,然后启动它。
或者,您可以使用Gradle守护程序代替./gradlew -Dorg.gradle.jvmargs="
标准JVM调试参数 "
,这样您就可以使用任何您喜欢的调试端口,但我还没有对此进行测试。 例如:
./gradlew \
-Dorg.gradle.jvmargs="-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=y" \
someTask
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.