VLC for Android 运行错误 - libvlcjni.so 问题
我已经按照页面的说明在 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): 启动活动:意图 { 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 对象 / 141 毫秒内 59912 字节 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:我/调试(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/调试(30):r4 002fbc18 r5 0027f2a8 r6 82e7379c r7 00286ea8 10-25 15:16:28.402:我/调试(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/调试(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):电脑周围的代码:10-25 15:16:28.477: I/调试(30):8236c04c e1a00005 e1a01007 ebfffcf5 e2504000 10-25 15:16:28.477:我/调试(30):8236c05c 0a00004f e35a0000 1a000025 e5943018 10-25 15:16:28.477: I/调试(30): 8236c06c e6ef0073 e3500010 0a000031 e1a00005 10-25 15:16:28.477: I/调试(30): 8236c07c e28da038 e1a01004 ebfffed4 e1a0000a 10-25 15:16:28.477: I/调试(30): 8236c08c e5941014 e1a0e00f e591f004 e1c420d8 10-25 15:16:28.477:我/调试(30): lr 周围的代码:10-25 15:16:28.477: I/DEBUG(30): 00000020 ffffffff ffffffff ffffffff ffffffff 10-25 15:16:28.477: I/调试(30): 00000030 ffffffff ffffffff ffffffff ffffffff 10-25 15:16:28.477:我/调试(30): 00000040 ffffffff ffffffff ffffffff ffffffff 10-25 15:16:28.477: 我/调试(30):00000050 ffffffff ffffffff ffffffff ffffffff 10-25 15:16:28.477:我/调试(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文件包含机器代码无法在模拟器和我的手机的CPU上运行,这可能是低级错误。
我是否必须更改构建/编译的任何设置? 请帮助我,谢谢:)
I have successfully built VLC for Android on Ubuntu machine by instructions of the page:
http://wiki.videolan.org/AndroidCompile
PS: I have set "export NO_NEON=1"
Environment: Ubuntu 11.10 32-bit, Java JDK 6u29 32-bit, Android SDK R14, Android NDK R6B
But when I tried to run "VLC-debug.apk" or "VLC-debug-unaligned.apk" on emulator,
(I tried Andorid 2.2 and Android 2.3.3)
The program quits immediately after I run.
Then, I tried to run them on real phone (HTC Wildfire, with Android 2.2)
The result is same. (and a application error popup shows)
I used DDMS LogCat of eclipse to check if any strange messages; I found:
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
It looks like the main library "libvlcjni.so" can not be loaded; There is a "SIGILL" error!
It may be low-level error that my .so file contains machine code can't be run on the CPU of emulator and my phone .
Do I have to change any settings of building/compiling?
Please help me, thanks :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SIGILL 表示您的二进制文件包含设备 CPU 不支持的指令。可能您已经破坏了 CFLAGS。
尝试:
检查生成的 CFLAGS
echo $CFLAGS
行进行检查)echo $CFLAGS
)检查
--disable-neon
是否确实被选中(在 extras/package/android 中)在 extras/contrib 文件夹中运行
make clean
以清除旧库(这一重要步骤) .重建贡献&& libvlc
检查vlc/android/是否不包含*_neon.a库
删除vlc-android/jni/libvlcjni.h并重建apk
我认为,这
应该可以在大多数设备上安全使用。
如果问题再次发生,请尝试使用
-g
CFLAGS 重新编译并运行 ndk-gdb:SIGILL means that your binary contains instructions which are not supported by device CPU. Probably, you have broken CFLAGS.
Try:
Check resulting CFLAGS in
echo $CFLAGS
line at the of the file for check)echo $CFLAGS
before running last ./configure)Check if
--disable-neon
is really selected (in extras/package/android)Run
make clean
in extras/contrib folder for clearing old libraries (this important step).Rebuild contrib && libvlc
Check if vlc/android/ contains no *_neon.a libraries
Remove vlc-android/jni/libvlcjni.h and rebuild apk
I think, that
should be safely used on most devices.
If problem will happen again, try to recompile with
-g
CFLAGS and run ndk-gdb: