Обновление 8/7/2013: Проблема решена сейчас, но причина ошибки была совершенно неожиданной, все обычные подозреваемые в таких ошибках были устранены с самого начала, и я узнал что-то новое. См. Мой ответ ниже.
Я довольно отчаянный здесь. У Android-приложения есть родная библиотека, откуда я вызываю метод. Никаких проблем во всех тестируемых системах, и программа не была в Google Play без каких-либо проблемных отчетов, используемых тысячами пользователей. Теперь, по-видимому, новый ROM - Android версии 4.2.2 - для телефона HTC One отсутствует. Пользователи утверждают, что это официальная сборка, обновленная форма официального канала. Когда они пытаются запустить мое приложение, он падает, а трассировка стека говорит:
java.lang.UnsatisfiedLinkError: собственный метод не найден...
и имя метода, о котором я знаю, существует и отлично работает некоторое время назад на том же устройстве, когда у них установлен Android 4.1. Я тестирую его под Android 4.2.2 в эмуляторах (не имею этого конкретного устройства), и проблем нет. Кроме того, пользователи попытались удалить и переустановить приложение с тем же результатом. Даже отправка им частной сборки без защиты ProGuard/Dexguard не помогает.
Что еще может вызвать java.lang.UnsatisfiedLinkError на Android? Или я должен предположить, что это HTC ROM просто глючит??? У кого-нибудь еще были подобные проблемы на HTC One с Android 4.2.2?
Редактировать 7/24/2013
В комментариях ниже другой разработчик предполагает, что система может иметь проблемы с поиском моей родной библиотеки. Я экспериментировал с эмулятором Genimotion 4.2.2, полностью удалив из него собственный файл библиотеки. Сообщение об ошибке отличается в этой ситуации, получено:
W/System.err: вызвано: java.lang.UnsatisfiedLinkError: не удалось загрузить cld из загрузчика dalvik.system.PathClassLoader [dexPath =/data/app/com.hyperionics.avar-2.apk, libra ryPath =/data/app-lib/com.hyperionics.avar-2]: findLibrary возвращается null
Пока в сообщениях трассировки стека я получил от пользователей HTC One с Android 4.2.2, я вижу это сообщение об ошибке:
Вызвано: java.lang.UnsatisfiedLinkError: собственный метод не найден: com.hyperionics.avar.CldWrapper.detectLangNative: (Ljava/lang/String;) [Ljava/lang/String;
Мне кажется, что система находит файл libcld.so по мере необходимости, но не находит способ, который ему там нужен. Зачем??? Я знаю, что метод существует, экспортируется по мере необходимости, и все остальные устройства и системы, также находящиеся под управлением Android 4.2.2, находят это. Только HTC One с 4.2.2 не работает...
Обновление 7/25/2013
Начну щедрость за 50 реп. очков, поскольку у меня нет HTC One и я застрял. Примите ответ, который указывает на способ решения проблемы - и отвечающий будет проверять мой код. чтобы показать, что это работает - или доказывает, что это действительно ошибка в недавнем ПЗУ Android 4.2.2 для HTC One. Это приложение https://play.google.com/store/apps/details?id=com.hyperionics.avar
Обновление 7/31/2013
В последний день щедрости и до сих пор нет ответов, нет предложений... До сих пор все такие сообщения об ошибках, которые я получаю из Европы, сообщили, что бренд "htc_europe" или "vodafone_fr". Возможно, ошибка локализована только в Европе (Франция + Германия)... Если есть кто-то там, где HTC One и Android обновлены до 4.2.2, мне будет интересно, если ошибка произойдёт в других странах или с другими провайдерами.
Грег