Android — ошибка проверки

#android #verifyerror

#Android #ошибка проверки

Вопрос:

это ошибка, которую я получаю в консоли разработчика Android от сотен моих пользователей.

Я потратил целый день, пытаясь исправить проблему в коде, и потребовалось 9 выпусков, и я все еще получаю эти сообщения об ошибках. У моего приложения около 5 тысяч загрузок в день, и примерно на 10% устройств оно выходит из строя. Из-за этого рейтинг моего приложения снизился с 4.7 до 3.0 всего за один день.

Я буквально не могу этого понять.

Я собираюсь позволить кому-то удаленно подключиться к моему компьютеру и заплатить за просмотр.

В любом случае, короче говоря. Прошлой ночью я внес обновление в код и удалил рекламу Google из своего приложения. Добавлено немного кода и выпущено приложение для Android Market. Этим утром у меня было 200 сообщений об ошибках. Приложение выходит из строя на многих устройствах.

Я перешел к отчетам об ошибках, и это то, что получает большинство людей:

 java.lang.VerifyError: a.xml.a$Searching
at a.xml.a.startTalkingActivity(a.java:849)
at a.xml.a.onActivityResult(a.java:1053)
at android.app.Activity.dispatchActivityResult(Activity.java:3890)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
at android.app.ActivityThread.access$2800(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
  

Я вернул рекламу, но ошибка продолжает приходить. Я удалил добавленный мной код, ошибка все еще присутствует, и я получаю все больше сердитых отзывов с жалобами на сбой при нажатии кнопки.

Я схожу с ума здесь, я был бы признателен за любую помощь с этим. Я не могу понять, что означает эта ошибка.

Комментарии:

1. В принципе, класс a.xml.a$Searching не может быть «проверен». Что-то в классе не так, хотя вы не имеете большого представления о том, что это может быть. (Почти так же неприятно, как «ошибка NoClassDefFoundError».) Скорее всего, существует несоответствие между вашим классом и другим классом в файле jar на устройстве, с точки зрения типов при вызове метода и т.д. Это происходит, когда версия jar изменяется несовместимым образом (что, к сожалению, не редкость). Вы можете получить некоторую подсказку, если распределите сбои по марке телефона, типу и версии Android — возможно, сбой произошел из-за марки или версии.

2. Используете ли вы ProGuard для запутывания вашего исходного кода? попробуйте создать приложение, не запутывая свой код.

3. Извините, как мне это сделать? И действительно ли я хочу выпускать код моего приложения без искажений?

4. Я не просил вас публиковать это, если вы используете ProGuard / obfuscating, попробуйте build без обфускации и протестируйте его, чтобы увидеть, действительно ли это вызвано обфускацией.

5. Хорошо, извините, возможно, я не объяснил, что я не могу воспроизвести это на своих собственных устройствах Android, сбой происходит из-за небольшой группы моих пользователей. Около 10% из них, и у меня такое ощущение, что это 2.2 Android и ниже, но я не могу быть уверен, потому что Google не дает мне эту статистику.

Ответ №1:

Похоже, у вас есть Searching внутренний класс a.xml.a class. Этот Searching внутренний класс ссылается на что-то, чего не существует на устройствах пользователей, даже если оно существовало в вашей целевой сборке.

Вы можете временно отказаться от своей цели сборки, чтобы она совпадала с вашей minSdkVersion (если ее там еще нет), и посмотреть, появится ли что-нибудь в этом классе.

Помимо этого, попытайтесь найти общие характеристики устройств, на которых происходит сбой приложения (например, версию ОС).

Комментарии:

1. Это так крайне расстраивает,… Я потратил весь день и до сих пор понятия не имею, что это может быть и как именно подойти к этой проблеме.

2. @jjj: Вы могли бы начать, следуя инструкциям во втором абзаце моего ответа. Или попробуйте запустить свое приложение в старых эмуляторах, чтобы посмотреть, сможете ли вы воспроизвести проблему (должна возникнуть при первой попытке обращения к a.xml.a ). Или вставьте исходный код в Searching в свой ответ, чтобы другие могли его просмотреть.

3. Исходный код для поиска содержит около 2000 строк. Но может ли это иметь какое-то отношение к моей собственной машине? Я не вижу ничего, что я сделал в коде. Обновление Java? Какое-то обновление или изменение Eclipse?

4. @jjj: «Но может ли это иметь какое-то отношение к моей собственной машине?» — нет. «Я не вижу ничего из того, что я сделал в коде». — затем используйте свою систему контроля версий, чтобы выполнить откат к заведомо исправной версии кода.

5. Я обнаружил, что эта проблема каким-то образом связана с предыдущей версией Android версии 2.3. Я выпустил свое приложение с этим ограничением, и я больше не получаю ошибок. Это не решение, но привет…

Ответ №2:

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

Я смог решить проблему, дважды проверив путь сборки проекта. Я всегда получаю сообщение об ошибке, когда забываю экспортировать внешние библиотеки. Надеюсь, это кому-то поможет 🙂

Ответ №3:

Я исправил проблему, пришлось сократить класс на более мелкие фрагменты, он был слишком длинным.

Комментарии:

1. Затем вы должны пометить это сообщение как правильный ответ (зеленая галочка). Может быть, вы могли бы также предоставить некоторые подробности о вашем решении.

Ответ №4:

У меня возникла та же проблема после обновления Android ADT и Java. Попробуйте выполнить следующие действия:

  1. Удалите ссылки на ваши внешние библиотеки в вашем проекте Android.
  2. Переместите все ваши внешние библиотеки (включая библиотеки рекламы Google) в папку libs внутри вашего проекта Android.
  3. Повторно свяжите свои библиотеки, которые теперь существуют в каталоге Project libs.