Приложение Qt имеет массив используемых имен библиотек .so, где-то в ресурсах. При запуске он загружает все эти .so библиотеки (через loadLibrary()). Важное значение имеет порядок загрузки библиотек: функции не могут ссылочные функции, определенные в еще не загруженных библиотеках. Таким образом, реализация циклической зависимости сложна.
Из журналов я вижу, что некоторая функция в libszachy_android_1.so
(это правильное название это немного странно?) Вызывает srand(), который еще не был загружен; возможно, это упоминается позже в списке загрузки, но loadLibrary() не имеет представления о планируемом будущем. Итак, вы получите это.
Если ваш код работал вчера, вы, вероятно, внесли некоторые изменения. Если вы используете контроль версий, вы, вероятно, сможете сравнить сегодняшние и вчерашние версии и увидеть разницу. Возможно, вы вставили переднюю ссылку (в смысле списка загрузки). OTOH, иногда оба Eclipse и make не могут обнаружить, что источник изменился и сделали неправильные сборки (я это наблюдал, но не могу воспроизвести). Вы пытались удалить приложение с телефона? Вы пытались удалить все существующие .so файлы в каталогах сборки (rm *.so
)?
Возможно, один из ваших модулей .so сломан: иногда объект генерируется, несмотря на ошибки, и он может использоваться в последующих сборках (по крайней мере, так я могу объяснить сбои сборки).
Возможно, у вас нет памяти на устройстве, и .so не может быть распакован правильно.
Я предлагаю изучить каталог приложений с помощью adb shell
на корневом устройстве.
PS Вы опубликовали снимок экрана, который едва читается. Пожалуйста, замените его на соответствующую часть вывода adb logcat
(надеюсь, вы знаете, как его использовать, а если нет, первое, что нужно сделать, это узнать adb logcat
и adb shell
).
Поместите всю соответствующую информацию в свой вопрос, а не ссылку на нее. – Michael
Скриншоты текста ужасны для тех из нас, кто читает на мобильных устройствах :( –
Какова ваша целевая версия SDK и какая версия вашего телефона работает? –