环境:
- 安卓工作室
- 硬件:5.2.0.300
- CI
问题描述:
在我们集成最新的华为 SDK 后,我们的 CI 失败了,因为 Android 测试没有通过。
我们深入研究报告,它在堆栈跟踪中给了我们这个错误:
org.bouncycastle.pqc.crypto.qtesla.QTeslaKeyEncodingTests > testDecodeEncodePublicKeyQT3P[V1836A - 10] FAILED
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
org.bouncycastle.pqc.crypto.qtesla.QTeslaKeyEncodingTests > testDecodeEncodePrivateKeyQT3P[V1836A - 10] FAILED
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
这个错误是由哪个引入的com.huawei.hms:hwid:5.2.0.300
。
因此,毫无疑问,如果您集成hwid:5.2.0.300
,它将与您的 CI/CD 一起使您的单元测试失败。
问题原因:
深入了解后,华为SDKorg.bouncycastle:bcpkix-jdk15on:1.64
作为依赖引入,在这个版本中,他们错误地将单元测试包含到了他们的库中,并在1.65
.
检查https://github.com/bcgit/bc-java/issues/661
所以我请华为升级org.bouncycastle:bcpkix-jdk15on
到1.65
或以上在您的依赖。如果你有代码库,这是一项工作。
黑客解决方案:
为了使我们的 CI 按预期工作,现在我们正在这样做,如果其他人有同样的问题:
dependencies {
// ......... something else what we need
huaweiApi ('com.huawei.hms:hwid:5.2.0.300') {
// Huawei include org.bouncycastle 1.64 version
// In this version, the source code include unit test file in library, which will cause our CI Fail.
exclude group: 'org.bouncycastle', module: "bcprov-jdk15on"
}
huaweiApi 'org.bouncycastle:bcpkix-jdk15on:1.65'
}