2011-10-30 19 views
1

我已經成功地構建VLC Android的Ubuntu的機器上通過網頁的說明: http://wiki.videolan.org/AndroidCompileVLC對於Android的運行錯誤 - libvlcjni.so問題

PS:我已經設置 「出口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) 程序在I 跑。

然後,我試着在真正的手機上運行它們(HTC Wildfire,Android 2.2) 結果是一樣的。 (和應用程序錯誤彈出顯示)

我使用eclipse的DDMS LogCat來檢查是否有任何奇怪的消息;我發現:

10-25 15:16:27.007:I/ActivityManager(70):啓動活動:意向{ ACT = android.intent.action.MAIN貓= [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已釋放874 objects/59912 bytes in 141ms 10-25 15:16:28.097:D/dalvikvm(3918): 試圖加載庫文件 /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):

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 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): 代碼大約在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: 01 (30):00000050 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 [堆] 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上運行。

我是否必須更改任何建築/編譯設置? 請幫助我,謝謝:)

回答

1

SIGILL表示您的二進制文件包含設備CPU不支持的指令。可能你已經打破了CFLAGS。

嘗試:

  1. 檢查引起

    • 演員/的contrib /引導CFLAGS
    • 演員/包/安卓/配置(在辦理登機手續的文件添加echo $CFLAGS線) (在運行最後的./configure之前添加echo $CFLAGS
  2. 檢查--disable-neon真的選擇(在extras /包/安卓)

  3. 在清理舊圖書館演員/的contrib文件夾運行make clean(這重要的一步)。

  4. 重建的contrib & & libvlc

  5. 檢查VLC /安卓/不含* _neon。一個圖書館

  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