具体的错误提示信息如下:
Thekey ID must be in a valid form (eg00B5050F or0x00B5050F), given value:1E5CBEF8B550FB7D
gralde-error-011202×276 13.6 KB
问题和解决
这个问题比较蠢。与 Gradle 的插件 id ‘signing’ 有关。
在这个源代码中有一个对 Key 校验的方法:
privatestaticStringnormaliseKeyId(String keyId){ String keyIdUpped = keyId.toUpperCase();switch(keyIdUpped.length()) {case10:if(!keyIdUpped.startsWith("0X")) {thrownewIllegalArgumentException("10 character key IDs must start with 0x (given value: "+ keyId +")"); }returnkeyIdUpped.substring(2);case8:if(keyId.startsWith("0X")) {thrownewIllegalArgumentException("8 character key IDs must not start with 0x (given value: "+ keyId +")"); }returnkeyIdUpped;default:thrownewIllegalStateException("The key ID must be in a valid form (eg 00B5050F or 0x00B5050F), given value: "+ keyId); } }
从这个方法中,你可以看到如果你的 Key ID 是 10 位的,你需要使用 0X 开头。
如果你的 key ID 超过 10 位就直接报错了。
在 Kleopatra 中,默认给了 16位的 Key Id,如果你直接拷贝的话,只会报错。
因此,根据上面的问题:
signing.keyId=
参数应该只能保留 8 位置。
因此
signing.keyId=
的配置应该为:
signing.keyId=B550FB7D
通过上面的调整后再进行编译,你应该不会遇到上面错误问题。