Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Compila y utiliza impulso para Android NDK R10e

¿Cómo puedo compilar y utilizar Boost para Android NDK? He probado todo lo que he encontrado en línea, desde Boost para Android hasta compilarlo yo mismo con el archivo bjam. Sin embargo, no lo logro. Cuando intento compilarlo con bjam, consigo el error siguiente:

error: toolset gcc initialization: error: version 'androidR10e' requested but 'g++-androidR10e' not found and version '4.2.1' of default 'g++' does not match error: initialized from /path/to/android-ndk-r10e/sources/boost/tools/build/v2/user-config.jam:86 

¿Alguien ha utilizado con éxito Boost con Android NDK R10e?

  • MediaPlayer.setDataSource () y prepare () no funciona - android
  • Conversión de formato de fecha Android
  • Bitmap byte-size después de la decodificación?
  • 'TAG' tiene acceso privado en 'android.support.v4.app.FragmentActivity'
  • Una forma de obtener captura doble toque en la pantalla de bloqueo de Android?
  • Cómo cargar datos de fragmentos sólo cuando se hace clic en su pestaña en PagerSlidingTabStrip
  • Y cuando puedo compilarlo, ¿cómo debo hacerlo para usarlo en mi proyecto de aplicación para Android?

  • Superposición de texto sobre la vista de imagen en android
  • Llamando a showAtLocation de popupwindow se está estrellando la aplicación
  • Obtener código de estado HTTP en Android WebView
  • Android: Transmitir datos de la cámara y escribirlos en el servidor
  • ¿Cómo construyes una pila posterior de Android cuando se inicia una actividad directamente desde una notificación?
  • ¿Hay una manera fácil de "desactivar el registro" antes de liberar su aplicación en el mercado?
  • 5 Solutions collect form web for “Compila y utiliza impulso para Android NDK R10e”

    Hemos logrado compilarlo para NDKr10d. Debe ser el mismo para NDKr10e. El project-config.bjam debe apuntar al compilador gcc desde el NDK. La nuestra se ve así:

     import option ; using gcc : arm : D:\\android\\ndk\\toolchains\\arm-linux-androideabi-4.9\\prebuilt\\windows-x86_64\\bin\\arm-linux-androideabi-g++.exe ; option.set keep-going : false ; 

    Luego compile con b2, diciendo caminos a android incluye:

     b2 --reconfigure <your options> toolset=gcc-arm include=<ndk folder>\sources\cxx-stl\gnu-libstdc++\4.9\include include=<ndk folder>\sources\cxx-stl\gnu-libstdc++\4.9\libs\<target platform>\include include=<ndk folder>\platforms\<android api version>\arch-arm\usr\include install --libdir=stage\lib\<target platform> 

    Estamos a punto de pasar a ndkr10e. ¿Podría decir si el impulso todavía funciona con él? 🙂

    La forma más sencilla sería utilizar CrystaX NDK , que contiene bibliotecas Boost ya construidas y listas para usar. Y aquí hay ejemplos de cómo usar Boost con CrystaX NDK: 1 , 2

    Siguiendo las instrucciones de impulso, pude construir un boost de 1.60 con NDKr10e en Ubuntu 12.04 (aunque sospecho que muy poco depende del sistema host). Aquí están mis notas:

    Obtener y descomprimir fuente fuente tarball (i utilizado 1.60): boost_1_60_0.tar.bz2

     moskewcz@maaya:/scratch/moskewcz/android/src$ ll total 74M drwx------ 10 moskewcz moskewcz 4.0K Mar 9 14:14 boost_1_60_0 -rw-rw-r-- 1 moskewcz moskewcz 74M Jan 5 11:15 boost_1_60_0.tar.bz2 

    Siga las instrucciones de impulso para comenzar en la sección Unix "Build Custom Binaries"

    Utilice una raíz fresca y vacía para instalar b2 ie / scratch / boost-build-root; Use usr como prefijo; De nuevo siguiendo las instrucciones de impulso:

     moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0/tools/build$ ./bootstrap.sh moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0/tools/build$ ./b2 install --prefix=/scratch/moskewcz/android/boost-build-root/usr 

    Poner b2 en el camino (de nuevo como por instrucciones)

     export PATH=/scratch/moskewcz/android/boost-build-root/usr/bin:$PATH 

    En algunos jamfile (no tenía ~ / user-config.jam, por lo que creé uno y lo usé, tal vez hay una mejor opción de jamfile para crear / editar) añadir algún código de atasco (?) Para definir una versión de gcc ) Apuntando a un g ++ de una cadena de herramientas independiente. Tenga en cuenta que se trata de una cadena de herramientas creada con el NDK de la manera normal después de las instrucciones de "crear una cadena de herramientas independiente". No estoy señalando a un g ++ dentro de la propia NDK (que puede o no puede funcionar, no lo sé):

     import option ; using gcc : arm_linux_android_4.9 : /scratch/android-stc/bin/aarch64-linux-android-g++ ; option.set keep-going : false ; 

    Ir a impulsar la raíz del proyecto y construir, en su mayoría según las instrucciones. –build-dir puede ser opcional? También añadió -j8 a hacer || construir

     moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0$ b2 -j8 --build-dir=bin.v2 toolset=gcc-arm_linux_android_4.9 stage 

    Tenga en cuenta que esto intenta construir libras estáticas y compartidas de forma predeterminada, pero la creación de librerías compartidas falla debido a que android no tiene librt.so – según mi investigación, la gente afirma que bajo android (algunos de?) La funcionalidad de librt.so Está dentro de libc.so – por lo que puede ser correcto simplemente eliminar -lrt de los pasos de enlace para construir libs compartidas para android. No lo intenté. ver:

    https://code.google.com/p/android/issues/detail?id=5730

    Building Boost para Android con error "no se puede encontrar -lrt"

    Sólo logré construir con 10d . Compilación cruzada de Linux-> Android con Boost para Android funcionó de inmediato con eso.

    Para descargar una ndk un poco obsoleta, ya que no todos los ndk son inmediatamente compatibles con Boost para Android , puede utilizar esta guía: ¿Dónde puedo encontrar versiones antiguas de Android NDK?

    Nota: También quería especificar la cadena de herramientas. Tuve que hacerlo en 2 lugares:

    1. En build-android.sh, justo después de la línea mencionada aquí arriba:

      TOOLCHAIN ​​= $ {TOOLCHAIN: -arm-linux-androideabi-4.9}

    2. En la línea de comandos

      Bash build-android.sh [ubicación ndk] –toolchain = arm-linux-androideabi-4.9

    De hecho, funcionó mejor cuando especificé exactamente qué componentes de impulso quería con --with-libraries=[comma separated list] .

    Si en vez de eso yo construyera todo, yo conseguiría:

    … falló la actualización de 38 destinos …

    … saltó 6 objetivos …

    … actualizado 10568 objetivos …

    ERROR: ¡No se ha podido crear impulso para Android!

    ¡Hecho!

    Aquí: http://silverglint.com/boost-for-android/ puede encontrar una forma sencilla e indolora de construir una versión moderna (eg 1.64.0) de boost para android. Funciona con clang y gcc.

    También se incluye una aplicación de ejemplo que muestra cómo usar los binarios de optimización así construidos.

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