Что вызывает это исключение KeyStore? - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь запустить DJI importSDKDemo образец кода на умных часах Android, и я получаю исключение KeyStore в startSDKRegistration (), когда экземпляр DJISDKManager пытается зарегистрировать приложение.

DJI SDK: v4.9

Android SDK (compileSDKversion): 28

Android-устройство: Mobvoi TicWatch Pro 0584 с Wear OS v2.6

Mobvoi TicWatch подключен к определенной сети Wi-Fi на моем рабочем месте, с модемом рядом, чтобы убедиться, что он не связан с общедоступной сетью WiFi, которую я ранее использовал

Я не смог найти никакой информации, касающейся этой конкретной проблемы, кроме этого отчета о проблеме, я попытался применить предложенное там решение, но я все еще получаю Исключения KeyStore

Я не уверен, какой код включить в этот пост, но есть часть, где программа останавливается, после DJISDKManager.getInstance.registerApp (...), который обычно является той же версией, что и в importSDKDemo.

private void startSDKRegistration() {
        if (isRegistrationInProgress.compareAndSet(false, true)) {
            AsyncTask.execute(new Runnable() {
                @Override
                public void run() {
                    showToast("registering, pls wait...");
                    DJISDKManager.getInstance().registerApp(MainActivity.this.getApplicationContext(), new DJISDKManager.SDKManagerCallback() {
                        @Override
                        public void onRegister(DJIError djiError) {
                            if (djiError == DJISDKError.REGISTRATION_SUCCESS) {
                                showToast("Register Success");
                                DJISDKManager.getInstance().startConnectionToProduct();
                            } else {
                                showToast("Register sdk fails, please check the bundle id and network connection!");
                            }
                            Log.v(TAG, djiError.getDescription());
                        }

А вот полный стек исключений KeyStore, которые я получаю несколько раз:

W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createException(Parcel.java:1964)
        at android.os.Parcel.readException(Parcel.java:1918)
        at android.os.Parcel.readException(Parcel.java:1868)
        at android.security.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:786)
        at android.security.KeyStore.get(KeyStore.java:195)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificate(AndroidKeyStoreSpi.java:144)
        at java.security.KeyStore.getCertificate(KeyStore.java:1120)
        at android.security.net.config.KeyStoreCertificateSource.ensureInitialized(KeyStoreCertificateSource.java:61)
        at android.security.net.config.KeyStoreCertificateSource.findBySubjectAndPublicKey(KeyStoreCertificateSource.java:77)
        at android.security.net.config.CertificatesEntryRef.findBySubjectAndPublicKey(CertificatesEntryRef.java:47)
        at android.security.net.config.NetworkSecurityConfig.findTrustAnchorBySubjectAndPublicKey(NetworkSecurityConfig.java:123)
        at android.security.net.config.TrustedCertificateStoreAdapter.getTrustAnchor(TrustedCertificateStoreAdapter.java:51)
        at com.android.org.conscrypt.TrustManagerImpl.findTrustAnchorBySubjectAndPublicKey(TrustManagerImpl.java:945)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:487)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
        at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339)
        at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
        at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
        at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:208)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:404)
        at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
        at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:224)
        at dji.thirdparty.okhttp3.internal.connection.RealConnection.connectTls(Unknown Source:65)
        at dji.thirdparty.okhttp3.internal.connection.RealConnection.establishProtocol(Unknown Source:54)
        at dji.thirdparty.okhttp3.internal.connection.RealConnection.connect(Unknown Source:202)
        at dji.thirdparty.okhttp3.internal.connection.StreamAllocation.findConnection(Unknown Source:247)
        at dji.thirdparty.okhttp3.internal.connection.StreamAllocation.findHealthyConnection(Unknown Source:0)
        at dji.thirdparty.okhttp3.internal.connection.StreamAllocation.newStream(Unknown Source:22)
        at dji.thirdparty.okhttp3.internal.connection.ConnectInterceptor.intercept(Unknown Source:26)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:165)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:6)
        at dji.thirdparty.okhttp3.internal.cache.CacheInterceptor.intercept(Unknown Source:137)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:165)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:6)
        at dji.thirdparty.okhttp3.internal.http.BridgeInterceptor.intercept(Unknown Source:160)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:165)
        at dji.thirdparty.okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(Unknown Source:60)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:165)
        at dji.thirdparty.okhttp3.internal.http.RealInterceptorChain.proceed(Unknown Source:6)
        at dji.thirdparty.okhttp3.RealCall.getResponseWithInterceptorChain(Unknown Source:114)
        at dji.thirdparty.okhttp3.RealCall$AsyncCall.execute(Unknown Source:4)
        at dji.thirdparty.okhttp3.internal.NamedRunnable.run(Unknown Source:17)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)

Я ожидаю, что регистрация будет разворачиваться нормально, я получаю экран «Hello Round World» и сообщение «Регистрация pls wait ...» showToast, но после нескольких исключений KeyStore я получаю «Ошибка регистрации SDK, пожалуйста, проверьте идентификатор пакета и подключение к сети! " сообщение от OnRegister (DJIError djiError) с DJIError, равным

djiError = {DJISDKError@14580} "The metadata received from server is invalid, please reconnect to the server and try."

Если регистрация завершена в обычном режиме, пользователь должен получить сообщение showToast «Register Success».

Кто-нибудь знает, что может вызвать эти исключения KeyStore?

Спасибо, что уделили время!

...