Пример аварийного сбоя в Android NDK - PullRequest
0 голосов
/ 29 июля 2011

Я собрал пример нативного аудио и загрузил его на свой Galaxy Tab 10.1, но он не работает. Похоже, что он собирается начать (то есть имя окна появляется в верхней части), но затем сильно падает. Я надеюсь, что кто-то может иметь представление о том, почему? Возможно, это проблема с поддержкой звука на вкладке, или ...?

Я также пытался создать свое собственное очень простое нативное действие с помощью "android_native_app_glue", и оно тоже вылетало - даже если я не делаю вызовов OpenSL. Фактически, все, что мне нужно сделать, это добавить -lOpenSLES к моему LOCAL_LDLIBS, чтобы вызвать аварийное завершение запуска. Когда я удаляю этот флаг компоновщика, никакого сбоя. Очень странно и заставляет меня думать, что во вкладке чего-то не хватает в отношении поддержки родного звука?

Спасибо, ALF

1 Ответ

0 голосов
/ 01 августа 2011

На самом деле все, что мне нужно сделать, это добавить -lOpenSLES в мой LOCAL_LDLIBS, чтобы вызвать аварийное завершение запуска.Когда я удаляю этот флаг компоновщика, никакого сбоя.Очень странно и заставляет меня думать, что во вкладке чего-то не хватает в отношении поддержки встроенного звука?

Ваш logcat, похоже, указывает на то, что загрузка /data/data/com.example.native_activity/lib/libnative-activity.so не работает.Без возможности продублировать проблему для проверки сообщений об ошибках, которые могут возникнуть, это может быть связано с тем, что компоновщик среды выполнения не может найти системную библиотеку, на которую ссылаются, для загрузки, или это может быть запутанный отчет о невозможности найти libnative-Само действие.so, или неразрешенный символ в lib, или что-то еще.

Если бы у вас было другое устройство для тестирования, это был бы очевидный путь.

Также тестирование скомпилированного приложенияот кого-то другого, кто, как известно, использовал нативное аудио.

Если ни один из них не возможен, вы, вероятно, могли бы использовать readelf или objdump (особенно версию Android где-то в установке ndk) или даже строки или grep, чтобы найти именасистемные библиотеки, необходимые для вашего libnative-activity.so, а затем проверьте, действительно ли они присутствуют на вашем устройстве.

...