2011-10-03 38 views
6

我正在嘗試構建適用於Android的vp8編解碼器。我用sourcery g ++運行了configure.sh腳本和armv6的makefile,併成功生成了libvpx.so。之後,我寫了一個JNI包裝器,並用ndk-build編譯成功。當我在薑餅智能手機上運行時,我得到一個UnsatisfiedLinkError「libpthread.so.0 not found」。我怎樣才能擺脫這個錯誤?在Android上構建vp8

回答

9

http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android與可讀性一些調整避免了所有這些問題。

  1. 創建{project}/jni文件夾。

  2. 獲取JNI綁定。

    混帳克隆https://chromium.googlesource.com/webm/bindings

  3. 獲取libvpx。

    GIT中克隆https://chromium.googlesource.com/webm/libvpx

  4. 配置libvpx爲Android

    ./libvpx/configure --target = ARMv7的-機器人-GCC --disable-例子--sdk路徑= {NDK的路徑}

    --sdk-path必須是絕對的。

  5. 獲取libwebm。

    CD綁定/ JNI

    混帳克隆https://chromium.googlesource.com/webm/libwebm

  6. 獲取libogg。

    下載OGG代碼http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    提取到綁定/ JNI。

  7. 我們需要運行configure來生成config_types.h。

    CD libogg-1.3.0 & &的./configure & & CD ..

  8. 獲取libvorbis

    下載Vorbis格式代碼http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

    提取到綁定/ JNI。

  9. 獲取libyuv

    svn籤http://libyuv.googlecode.com/svn/trunk/ libyuv-只讀

  10. 創建(項目)/jni/Application.mk與下面的數據:

    APP_ABI := armeabi-v7a 
    APP_OPTIM := release 
    APP_STL := gnustl_static 
    APP_CPPFLAGS := -frtti 
    
  11. 用數據創建{project} /jni/Android.mk w:

    WORKING_DIR := $(call my-dir) 
    BINDINGS_DIR := $(WORKING_DIR)/bindings/JNI 
    include $(BINDINGS_DIR)/Android.mk 
    
  12. 構建JNI代碼。

    {路徑NDK}/NDK-建立

  13. 複製的Java代碼。

    CP -R綁定/ JNI/COM /谷歌../src/com/

  14. 添加代碼以測試該綁定。

    int[] major = new int[2]; 
    int[] minor = new int[2]; 
    int[] build = new int[2]; 
    int[] revision = new int[2]; 
    MkvMuxer.getVersion(major, minor, build, revision); 
    String outStr = "libwebm:" + 
           Integer.toString(major[0]) + "." + 
           Integer.toString(minor[0]) + "." + 
           Integer.toString(build[0]) + "." + 
           Integer.toString(revision[0]); 
    System.out.println(outStr); 
    
  15. 運行該應用程序。您應該看到libwebm版本輸出。

  16. 根據需要調整。 VP8包裝位於com.google.libvpx命名空間中。

+0

太棒了!但是 - 當我做下面的事時,我總是在配置過程中出錯。它不能實例化編譯器。以下是日誌: 無法調用編譯器:/Users/yosef/Desktop/adt/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc --sysroot =/Users/yosef/Desktop/adt/ndk/sources/android/libportable/arch-arm -I/Users/yosef/Desktop/adt/ndk/sources/android/cpufeatures -mtune = cortex-a8 -O3 -fPIC - W ..你知道可能是什麼原因嗎? – Nativ

+0

回購已被移動到其他地方。請更新回購鏈接以獲取新的根目錄 - https://chromium.googlesource.com/ – Shrish