2014-11-28 2 views
0

Я недавно пытался сделать некоторые очень просто приложение в Qt, а вчера он использовал, чтобы правильно работать как на рабочем столе и Android (используя андроид NDK, я знаю, что это не хорошо сделать приложения для Android в C++, но я просто хочу попробовать).Qt Android NDK - приложение падает

Сегодня, из ниоткуда, выход приложения говорит STH так: error image

Единственное, что я нашел очищал кэш приложения и данные, перезагрузить телефон, восстановление, п одна из этих вещей работал

+0

Поместите всю соответствующую информацию в свой вопрос, а не ссылку на нее. – Michael

+0

Скриншоты текста ужасны для тех из нас, кто читает на мобильных устройствах :( –

+0

Какова ваша целевая версия SDK и какая версия вашего телефона работает? –

ответ

1

Приложение 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).