华为SDK hwid项目单元测试失败 环境:问题描述:问题原因:破解解决方案:

问题描述

环境:

  • Android Studio
  • 硬件:5.2.0.300
  • CI

问题描述:

在我们集成最新的华为 SDK 后,我们的 CI 失败了,因为 Android Test 未通过
我们深入研究了一下报告,它在堆栈跟踪中给了我们这个错误

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 一起无法通过单元测试。

问题原因:

深入了解后,华为 SDK 引入了 org.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'
}

解决方法

据团队确认,最新的 Account SDK 版本已更新至 5.3.0.301。在此版本中,删除了引入的 org.bouncycastle:bcpkix-jdk15on。您还可以将最新的 Account SDK 版本集成到您的项目中。

更多关于 5.3.0.300 新特性的信息,请参考https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/version-change-history-0000001050048874?ha_source=hms1

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...