Construir vp8 en android

Estoy tratando de construir el códec vp8 para Android. Corrí el script configure.sh y el makefile para armv6 con sourcery g ++ que produjo con éxito libvpx.so. Después de eso escribí un envoltorio JNI y lo compilé con ndk-build con éxito. Cuando ejecuto esto en un teléfono inteligente de pan de jengibre tengo un UnsatisfiedLinkError "libpthread.so.0 no encontrado". ¿Cómo puedo deshacerme de este error?

Desde http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android con algunos ajustes de legibilidad.

  1. Cree la carpeta {project} / jni.

  2. Obtener enlaces JNI.

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

  3. Obtenga libvpx.

    Git clone https://chromium.googlesource.com/webm/libvpx

  4. Configurar libvpx para Android

    ./libvpx/configure –target = armv7-android-gcc –disable-examples –sdk-path = {ruta a NDK}

    --sdk-path DEBE ser absoluto.

  5. Obtener libwebm.

    Enlaces cd / JNI

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

  6. Obtener libogg.

    Descargue el código ogg desde http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    Extraer a enlaces / JNI.

  7. Necesitamos ejecutar configure para generar config_types.h.

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

  8. Obtener libvorbis

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

    Extraer a enlaces / JNI.

  9. Consiga libyuv

    Svn checkout http://libyuv.googlecode.com/svn/trunk/ libyuv-sólo lectura

  10. Cree {project} /jni/Application.mk con los datos siguientes:

     APP_ABI := armeabi-v7a APP_OPTIM := release APP_STL := gnustl_static APP_CPPFLAGS := -frtti 
  11. Cree {project} /jni/Android.mk con los datos siguientes:

     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-build

  13. Copie el código java.

    Cp -R enlaces / JNI / com / google ../src/com/

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

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

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

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

Puede deshabilitar pthreads si no los necesita realmente.

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

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.