Ошибка запуска VLC для Android - libvlcjni.so Проблемы - PullRequest
1 голос
/ 30 октября 2011

Я успешно построил VLC для Android на машине с Ubuntu, следуя инструкциям на странице: http://wiki.videolan.org/AndroidCompile

PS: я установил "export NO_NEON = 1"

Среда: Ubuntu 11.10 32-разрядная, Java JDK 6u29 32-разрядная, Android SDK R14, Android NDK R6B

Но когда я попытался запустить "VLC-debug.apk" или "VLC-debug-unaligned.apk" на эмуляторе, (Пробовал андорид 2.2 и андроид 2.3.3) Программа закрывается сразу после запуска.

Затем я попытался запустить их на реальном телефоне (HTC Wildfire, с Android 2.2) Результат тот же. (и всплывающее окно с ошибкой приложения показывает)

Я использовал DDMS LogCat из Eclipse, чтобы проверить наличие каких-либо странных сообщений; Я нашел:

10-25 15: 16: 27.007: I / ActivityManager (70): начало деятельности: намерение { act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = org.videolan.vlc.android / .MainActivity} 10-25 15: 16: 27.067: I / ActivityManager (70): запустить процесс org.videolan.vlc.android для активности org.videolan.vlc.android/.MainActivity: pid = 3918 uid = 10036 gids = {3003} 10-25 15: 16: 27.807: D / dalvikvm (3918): GC_EXTERNAL_ALLOC освобожден 874 объекты / 59912 байт в 141ms 10-25 15: 16: 28.097: D / dalvikvm (3918): Попытка загрузить lib /data/data/org.videolan.vlc.android/lib/libvlcjni.so 0x44f3eb48 10-25 15: 16: 28.167: D / dalvikvm (3918): добавлена ​​общая библиотека /data/data/org.videolan.vlc.android/lib/libvlcjni.so 0x44f3eb48 10-25 15: 16: 28.167: V / VLC / LibVLC (3918): инициализация LibVLC 10-25 15: 16: 28.402: I / DEBUG (30): * ** * ** * ** * ** * ** * 10-25 15: 16: 28.402: I / DEBUG (30): создание отпечатка пальца: 'generic / sdk /generic/:2.2/FRF91/43546:eng/test-keys' 10-25 15: 16: 28.402: I / DEBUG (30): pid: 3918, tid: 3918 >>> org.videolan.vlc.android <<< 10-25 15: 16: 28.402: I / DEBUG (30): сигнал 4 (SIGILL), адрес ошибки 8236c06c 10-25 15: 16: 28.402: I / DEBUG (30): r0 002fbc18 r1 002fbc80 r2 00000000 r3 00000040 10-25 15: 16: 28.402: I / DEBUG (30): r4 002fbc18 r5 0027f2a8 r6 82e7379c r7 00286ea8 10-25 15: 16: 28.402: I / DEBUG (30): r8 00001630 r9 bebfa71c 10 00000040 fp 0027f280 10-25 15: 16: 28.402: I / DEBUG (30): ip 00000020 sp bebfa270 lr 00000040 pc 8236c06c cpsr 60000010 10-25 15: 16: 28.467: I / DEBUG (30): </p>

00 шт. 8236c06c /data/data/org.videolan.vlc.android/lib/libvlcjni.so 10-25 15: 16: 28.477: I / DEBUG (30): # 01 lr 00000040 10-25

15: 16: 28.477: I / DEBUG (30): код около ПК: 10-25 15: 16: 28.477: I / DEBUG (30): 8236c04c e1a00005 e1a01007 ebfffcf5 e2504000 10-25 15: 16: 28.477: I / DEBUG (30): 8236c05c 0a00004f e35a0000 1a000025 e5943018 10-25 15: 16: 28.477: I / DEBUG (30): 8236c06c e6ef0073 e3500010 0a000031 e1a00005 10-25 15: 16: 28.477: I / DEBUG (30): 8236c07c e28da038 e1a01004 ebfffed4 e1a0000a 10-25 15: 16: 28.477: I / DEBUG (30): 8236c08c e5941014 e1a0e00f e591f004 e1c420d8 10-25 15: 16: 28.477: I / DEBUG (30): код около lr: 10-25 15: 16: 28.477: I / DEBUG (30): 00000020 ffffffff ffffffff ffffffff ffffffff 10-25 15: 16: 28.477: I / DEBUG (30): 00000030 ffffffff ffffffff ffffffff ffffffff 10-25 15: 16: 28.477: I / DEBUG (30): 00000040 ffffffff ffffffff ffffffff ffffffff 10-25 15: 16: 28.477: I / DEBUG (30): 00000050 ffffffff ffffffff ffffffff ffffffff 10-25 15: 16: 28.477: I / DEBUG (30): 00000060 ffffffff ffffffff ffffffff ffffffff 10-25 15: 16: 28.477: I / DEBUG (30): стек: 10-25 15: 16: 28.477: I / DEBUG (30): bebfa230 0027f3a4 [куча] 10-25 15: 16: 28.477: I / DEBUG (30): bebfa234 8236bb94 /data/data/org.videolan.vlc.android/lib/libvlcjni.so .................................................. ......................................... 10-25 15: 16: 28.917: D / Zygote (32): процесс 3918 завершен по сигналу (4) 10-25 15: 16: 28.917: I / ActivityManager (70): процесс org.videolan.vlc.android (pid 3918) умер. 10-25 15: 16: 28.927: I / UsageStats (70): Неожиданное возобновление com.android.launcher в то время какуже возобновлено в org.videolan.vlc.android

Похоже, основная библиотека " libvlcjni.so " не может быть загружена; Ошибка " SIGILL "!

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

Нужно ли менять какие-либо настройки сборки / компиляции? Пожалуйста, помогите мне, спасибо:)

1 Ответ

1 голос
/ 07 ноября 2011

SIGILL означает, что ваш двоичный файл содержит инструкции, которые не поддерживаются ЦП устройства. Возможно, вы сломали CFLAGS.

Попытка:

  1. Проверить результат CFLAGS в

    • extras / contrib / bootstrap (добавьте строку echo $CFLAGS в файл для проверки)
    • extras / package / android / configure (добавьте echo $CFLAGS перед запуском последней ./configure)
  2. Проверьте, действительно ли выбран --disable-neon (в дополнениях / пакете / андроиде)

  3. Запустите make clean в папке extras / contrib для очистки старых библиотек (это важный шаг).

  4. Перестройка contrib && libvlc

  5. Проверьте, не содержит ли vlc / android / библиотек * _neon.a

  6. Удалите vlc-android / jni / libvlcjni.h и пересоберите apk

Я думаю, что

CFLAGS="-march=armv6j -mtune=arm1136j-s -mfloat-abi=softfp"

следует безопасно использовать на большинстве устройств.

Если проблема повторится, попробуйте перекомпилировать с -g CFLAGS и запустите ndk-gdb:

cd vlc-android && $(ANDROID_NDK)/ndk-gdb --start --force --awk=gawk --verbose
...