2015-05-21 2 views
2

. Моя библиотека .so JNI заставляет приложение Android врезаться во время загрузки (вызов в System.loadLibrary) при запуске на x86 Android. На ARM он работает нормально.Обнаружение Android System.loadLibrary в libhoudini (переводчик ARM на x86)

Ошибка в logcat: houdini: [12251] Неподдерживаемая функция (ID: 0x20e00149).

Houdini - это переводчик ARM для x86, поэтому, возможно, я использую то, что не может быть переведено.

Очевидно, я могу изменить код моей .so library co, возможно, я могу изменить все проблемы, но как исследовать это? Как я могу узнать, какая часть моего кода вызывает проблему?

О, и кстати - какой-либо код от .so побежал во время загрузки? Может быть, некоторые переменные инициализаторы?

+0

Вы использовали какой-то код NEON? Некоторые наборы инструкций недоступны. –

ответ

0

немного поиска в Интернете показывают, что libhoundini является собственностью код (попросить поставщика для поддержки)

но да, как и все Java Native библиотеки,
было бы probebly иметь функцию OnLoad.
что-то вроде: JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
так, probebly это то, что вызывает проблему, потому что оно выполняется при загрузке библиотеки.

+0

Существует намного больше кода, который может быть выполнен во время загрузки SO-библиотеки - подумайте о .init_array, который обычно отвечает за инициализацию статических переменных. – fastman92

Смежные вопросы