Je cours dans un VerifyError après la mise à jour de ma Xoom à 3.1. Voici le code qui semble le provoquer.Android 3.1 VerifyError
public boolean goBack()
{
if(_overlay == null || _pdfView == null) return false;
_overlay.removeView(_pdfView);
_overlay = null;
_pdfView = null;
return true;
}
Où _overlay
est un FrameLayout
et _pdfView
est une classe pour le rendu des documents PDF qui RelativeLayout
étend. Voici l'erreur que je reçois.
05-17 11:26:30.532: WARN/dalvikvm(14244): VFY: Ljava/lang/Object; is not instance of Landroid/view/View;
05-17 11:26:30.532: WARN/dalvikvm(14244): VFY: bad arg 1 (into Landroid/view/View;)
05-17 11:26:30.532: WARN/dalvikvm(14244): VFY: rejecting call to Landroid/view/ViewGroup;.removeView (Landroid/view/View;)V
05-17 11:26:30.532: WARN/dalvikvm(14244): VFY: rejecting opcode 0x6e at 0x000f
05-17 11:26:30.532: WARN/dalvikvm(14244): VFY: rejected Lcom/bluediesel/shell/utils/JavaScriptInterface;.goBack()Z
05-17 11:26:30.532: WARN/dalvikvm(14244): Verifier rejected class Lcom/bluediesel/shell/utils/JavaScriptInterface;
05-17 11:26:30.532: DEBUG/AndroidRuntime(14244): Shutting down VM
05-17 11:26:30.532: WARN/dalvikvm(14244): threadid=1: thread exiting with uncaught exception (group=0x401e2760)
...
05-17 11:26:30.542: ERROR/AndroidRuntime(14244): Caused by: java.lang.VerifyError: com.bluediesel.shell.utils.JavaScriptInterface
05-17 11:26:30.542: ERROR/AndroidRuntime(14244): at com.bluediesel.shell.utils.BDWebViewClient.<init>(BDWebViewClient.java:15)
05-17 11:26:30.542: ERROR/AndroidRuntime(14244): at com.bluediesel.shell.view.BDWebView.<init>(BDWebView.java:56)
05-17 11:26:30.542: ERROR/AndroidRuntime(14244): at com.bluediesel.shell.view.BDWebView.<init>(BDWebView.java:42)
05-17 11:26:30.542: ERROR/AndroidRuntime(14244): ... 24 more
Si je commente la ligne _overlay.removeView(_pdfView);
il fonctionne très bien. C'est comme s'il ne savait pas que PdfView est une sous-classe de View. PdfView est dans une bibliothèque. Cela pourrait-il avoir quelque chose à voir avec ça?
Je n'ai aucune idée de ce qui s'est passé. Il m'a toujours donné cette erreur même après un nettoyage et une reconstruction, mais j'ai changé le numéro de version et ça a commencé à fonctionner! Je pense que c'est peut-être parce qu'Android fait une sorte de nettoyage sur l'appareil, mais je n'en ai aucune idée. De toute façon, je vais vous donner la coche pour intensifier et savoir plus sur ce truc que toute personne devrait! ;) – CaseyB
CaseyB: à partir de quelle version avez-vous changé? –