2011-10-03 8 views
6

Estoy tratando de compilar el códec vp8 para Android. Ejecuté la secuencia de comandos configure.sh y makefile para armv6 con sourcery g ++ que produjo exitosamente libvpx.so. Después de eso, escribí un contenedor JNI y lo compilé con ndk-build con éxito. Cuando ejecuto esto en un teléfono inteligente Gingerbread, recibí un UnsatisfiedLinkError "libpthread.so.0 no encontrado". ¿Cómo puedo deshacerme de este error?compilación vp8 en android

Respuesta

0

Esto a veces puede ser un problema con el SONAME en una biblioteca compartida, eche un vistazo a este artículo.

http://groups.google.com/group/android-ndk/browse_thread/thread/fd484da512650359

Se puede desactivar pthreads si no lo hace realmente los necesita.

Iv'e tuvo problemas con los archivos .so en el pasado y han evitado todos estos problemas mediante el uso de .a bibliotecas estáticas en lugar de .so bibliotecas compartidas

9

De http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android con algunos ajustes para facilitar la lectura.

  1. Crear {proyecto}/jni carpeta.

  2. Obtiene enlaces JNI.

    git clone https://chromium.googlesource.com/webm/bindings

  3. Get libvpx.

    clon git https://chromium.googlesource.com/webm/libvpx

  4. Configurar libvpx para Android

    ./libvpx/configure --target = ARMv7-android-gcc --disable-ejemplos --sdk-path = {path to NDK}

    --sdk-path DEBE ser absoluta.

  5. Obtenga libwebm.

    cd fijaciones/JNI

    git clone https://chromium.googlesource.com/webm/libwebm

  6. Get libogg.

    Descargar código OGG a partir de http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    Extraer para fijaciones/JNI.

  7. Necesitamos ejecutar configure para generar config_types.h.

    cd libogg-1.3.0 ./configure & & & & cd ..

  8. Get libvorbis

    Descargar el código de Vorbis http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

    Extraer para fijaciones/JNI.

  9. Get libyuv

    svn checkout

  10. Crear proyecto {} /jni/Application.mk http://libyuv.googlecode.com/svn/trunk/ única libyuv-lectura con los datos siguientes:

    APP_ABI := armeabi-v7a 
    APP_OPTIM := release 
    APP_STL := gnustl_static 
    APP_CPPFLAGS := -frtti 
    
  11. Crear {proyecto} /jni/Android.mk con los datos belo w:

    WORKING_DIR := $(call my-dir) 
    BINDINGS_DIR := $(WORKING_DIR)/bindings/JNI 
    include $(BINDINGS_DIR)/Android.mk 
    
  12. Genere el código JNI.

    {ruta a NDK}/NDK-construir

  13. Copia el código java.

    cp -R fijaciones/JNI/com/google ../src/com/

  14. Añadir un código para probar los enlaces.

    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. Ejecuta la aplicación. Debería ver la salida de la versión libwebm.

  16. Modifique según sea necesario. Los contenedores de VP8 se encuentran en el espacio de nombres com.google.libvpx.

+0

¡respuesta fantástica! pero, cuando hago lo siguiente, siempre obtengo un error durante la configuración. No puede crear una instancia del compilador. Aquí está el registro: No es posible invocar el compilador: /Users/yosef/Desktop/adt/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc --sysroot =/usuarios/Yosef/escritorio/adt/NDK/fuentes/android/libportable/arch-brazo -I/Usuarios/Yosef/escritorio/adt/NDK/fuentes/android/cpufeatures -mtune = cortex-A8 -O3 -fPIC - W .. ¿Sabes cuál podría ser la razón? – Nativ

+0

los repos se han movido a otro lado. Actualice los enlaces de repositorio para obtener desde la nueva raíz - https://chromium.googlesource.com/ – Shrish

Cuestiones relacionadas