gpt4 book ai didi

android - VLC for Android 运行错误 - libvlcjni.so 问题

转载 作者:行者123 更新时间:2023-11-30 04:29:34 24 4
gpt4 key购买 nike

我已经按照页面说明在 Ubuntu 机器上成功构建了适用于 Android 的 VLC: 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”时,(我试过 Andorid 2.2 和 Android 2.3.3)程序在我运行后立即退出。

然后,我尝试在真机上运行它们(HTC Wildfire,Android 2.2)结果是一样的。 (并显示应用程序错误弹出窗口)

我用eclipse的DDMS LogCat查看有没有奇怪的信息;我发现:

10-25 15:16:27.007: I/ActivityManager(70): Starting activity: Intent { 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): Start proc org.videolan.vlc.android for activity org.videolan.vlc.android/.MainActivity: pid=3918 uid=10036 gids={3003} 10-25 15:16:27.807: D/dalvikvm(3918): GC_EXTERNAL_ALLOC freed 874 objects / 59912 bytes in 141ms 10-25 15:16:28.097: D/dalvikvm(3918): Trying to load lib /data/data/org.videolan.vlc.android/lib/libvlcjni.so 0x44f3eb48 10-25 15:16:28.167: D/dalvikvm(3918): Added shared lib /data/data/org.videolan.vlc.android/lib/libvlcjni.so 0x44f3eb48 10-25 15:16:28.167: V/VLC/LibVLC(3918): Initializing LibVLC 10-25 15:16:28.402: I/DEBUG(30): * ** * ** * ** * ** * ** * 10-25 15:16:28.402: I/DEBUG(30): Build fingerprint: '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): signal 4 (SIGILL), fault addr 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):

00 pc 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): code around pc: 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): code around 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): stack: 10-25 15:16:28.477: I/DEBUG(30): bebfa230 0027f3a4 [heap] 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): Process 3918 terminated by signal (4) 10-25 15:16:28.917: I/ActivityManager(70): Process org.videolan.vlc.android (pid 3918) has died. 10-25 15:16:28.927: I/UsageStats(70): Unexpected resume of com.android.launcher while already resumed in org.videolan.vlc.android

看起来主库“libvlcjni.so”无法加载;出现“SIGILL”错误!

可能是低级错误,我的.so文件包含机器码,不能在模拟器的CPU和我的手机上运行。

我是否必须更改构建/编译的任何设置?请帮助我,谢谢:)

最佳答案

SIGILL 表示您的二进制文件包含设备 CPU 不支持的指令。可能,你已经破坏了 CFLAGS。

尝试:

  1. 检查生成的 CFLAGS

    • extras/contrib/bootstrap(在文件的开头添加echo $CFLAGS 行以供检查)
    • extras/package/android/configure(在运行 last ./configure 之前添加 echo $CFLAGS)
  2. 检查是否真的选择了--disable-neon(在extras/package/android中)

  3. 在 extras/contrib 文件夹中运行 make clean 以清除旧库(此重要步骤)。

  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

关于android - VLC for Android 运行错误 - libvlcjni.so 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com