2017-02-03 12 views
1

Я использую датчик отпечатков пальцев в своем приложении. Я знаю, что api доступен для зефира и выше ОС. Поэтому во время работы в моем классе я динамически проверяю версию sdk.Исключение для Android VerifyError

Даже код для отпечатка пальца не выполняется. Я столкнулся с следующим исключением на 4.0 android os, в то время как тот же самый для 5.0 и выше.

**java.lang.VerifyError: com/cloudzon/gratzeez1/GiveGratuityActivity 
                     at java.lang.Class.newInstanceImpl(Native Method) 
                     at java.lang.Class.newInstance(Class.java:1215) 
                     at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2265) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 
                     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342) 
                     at android.os.Handler.dispatchMessage(Handler.java:110) 
                     at android.os.Looper.loop(Looper.java:193) 
                     at android.app.ActivityThread.main(ActivityThread.java:5322) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:515) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
                     at dalvik.system.NativeStart.main(Native Method)** 

Я нашел, что из-за следующего кода в моем классе я столкнулся с этой проблемой.

public boolean cipherInit() { 
    try { 
     cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7); 
    } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { 
     throw new RuntimeException("Failed to get Cipher", e); 
    } 

    try { 
     keyStore.load(null); 
     SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME, 
       null); 
     cipher.init(Cipher.ENCRYPT_MODE, key); 
     return true; 
    } catch (KeyPermanentlyInvalidatedException e) { 
     return false; 
    } catch (KeyStoreException | CertificateException | UnrecoverableKeyException | IOException | NoSuchAlgorithmException | InvalidKeyException e) { 
     throw new RuntimeException("Failed to init Cipher", e); 
    } 
} 
+0

Что такое "bcz" ?? – Doomsknight

+0

уточните сейчас –

+0

Вы уверены, что тот же код работает в версии 5.0? –

ответ

2

Я столкнулся с этим, и еще один ответ заставил меня на правильном пути; How to Use Unsupported Exception for Lower Platform Version

Я изменяю этот метод;

public boolean cipherInit() { 
    try { 
     cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7); 
    } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { 
     throw new RuntimeException("Failed to get Cipher", e); 
    } 

    try { 
     keyStore.load(null); 
     SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME, null); 
     cipher.init(Cipher.ENCRYPT_MODE, key); 
     return true; 
    } catch (Exception e) { 
     if(e instanceof KeyPermanentlyInvalidatedException) 
      return false; 
     else if(e instanceof KeyStoreException|e instanceof CertificateException|e instanceof UnrecoverableKeyException|e instanceof IOException|e instanceof NoSuchAlgorithmException|e instanceof InvalidKeyException) 
      throw new RuntimeException("Failed to init Cipher",e); 
    } 
    return false; 
} 

Изменение блока на вылов KeyPermanentlyInvalidatedException от (KeyPermanentlyInvalidatedException е) к (е InstanceOf KeyPermanentlyInvalidatedException), казалось, решить проблему по какой-то причине.

+0

впервые встречается с этой ошибкой. никто, кажется, не имеет ответа на это здесь. Получив его в своем модуле приложения при создании нового экземпляра класса –

+0

Если ваша ошибка не связана с добавлением кода Cipher и/или Fingerprint в ваш проект Android, тогда я предложите вам открыть новый вопрос. – opt05

+0

Его работа для моей же проблемы. большое спасибо – Kalanidhi

 Смежные вопросы

  • Нет связанных вопросов^_^