【发布时间】:2013-12-26 19:01:14
【问题描述】:
我正在尝试使用 gradle signing plugin 签署 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?我可以构建签名插件,插入一些日志语句并告诉我的构建选择我的自定义版本而不是它附带的版本吗?
【问题讨论】:
-
您是否提供了 pgp 密钥文件?
-
是的,它似乎拿起了一把钥匙。将 keyId 更改为无效会导致实际的错误消息。
-
从 PGPSignatureGenerator 和 PgpSignatory 的源代码和你给出的错误信息来看,sign-plugin 得到了 null 私钥。请确保您使用“gpg --gen-key”之类的命令创建了有效的签名密钥,并将其传递到 android/signingConfigs 配置中。
-
当您调用 gpg 时,它通常会显示一个带有键类型选择的菜单。选择带有“签名”字样的类型。
-
这是正确的键。我可以使用
gpg --sign手动签名并验证它。它也可以使用 maven 的签名插件。
标签: java android debugging gradle