Mylib.so tiene reubicaciones de texto. Esto es perder la memoria y es un riesgo de seguridad. Por favor, arregla

Mi aplicación de Android (usando la biblioteca nativa) imprime esta advertencia en Android 4.4:

Linker mylib.so tiene reubicaciones de texto. Esto es perder la memoria y es un riesgo de seguridad. Por favor, arregla.

¿Tienes una idea de lo que es y cómo arreglarlo? Gracias,

Esto parecería ser el resultado de dos errores ndk-gcc mencionados en https://code.google.com/p/android/issues/detail?id=23203

Y declaró allí que se han fijado como de ndk-r8c.

Parece que la verificación de bibliotecas con el problema se ha agregado recientemente.

Nota: no edite esta publicación para ocultar la URL del enlace. Es explícito porque el destino es lo que lo hace autoritario.

Nota adicional Cambiar las versiones de NDK es sólo una corrección cuando la advertencia se debe al código de su aplicación. No tendrá ningún efecto si la advertencia está en su lugar en un componente del sistema como libdvm, que sólo puede solucionarse mediante una actualización del sistema.

Necesitas hacer que el código en tu biblioteca sea independiente … agrega -fpic o -fPIC a tu LOCALC_FLAGS en tu Android.mk y también debes asegurarte de que no estás enlazando con ninguna biblioteca estática o compartida que contenga relocalizaciones de texto sí mismos. Si lo hacen y puede volver a compilarlos, utilice una de las banderas mencionadas anteriormente.

En resumen, es necesario compilar su biblioteca con uno de los -fpic o -fPIC , donde PIC es una abreviatura de Position Independent Code .

La respuesta más larga es que yourlib.so se ha compilado de una manera que no se ajusta al estándar de Google Android para un archivo ELF, donde esta entrada de Dynamic Array Tag es inesperada. En el mejor de los casos, la biblioteca seguirá ejecutándose, pero sigue siendo un error y la futura versión de AOS probablemente no permitirá que se ejecute.

DT_TEXTREL 0x16 (22)

Para comprobar lo que hay en su biblioteca utilice algo a lo largo de la línea de:

 # readelf --wide -S yourlib.so There are 37 section headers, starting at offset 0x40: Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 0000000000000000 002400 068f80 00 AX 0 0 16 [ 2] .rodata PROGBITS 0000000000000000 06b380 05ad00 00 WA 0 0 32 ... [16] .rela.text RELA 0000000000000000 26b8e8 023040 18 14 1 8 ... [36] .rela.debug_frame RELA 0000000000000000 25a608 0112e0 18 14 27 8 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) 

Por favor vea mi extensa respuesta sobre el tema, para más detalles de la DT entry . Para obtener más detalles sobre cómo escribir bibliotecas dinámicas adecuadas, esto es una lectura obligatoria .

Tengo el mismo error con mi aplicación. La aplicación utiliza un daemon nativo que utiliza una biblioteca nativa que no implementa todas las funciones en su archivo de encabezado. Cuando agregué las implementaciones necesarias a la biblioteca nativa, todo funcionó.

No sé si usted tiene exactamente el mismo problema, pero sólo probablemente significa que su lado nativo tiene un cierto desajuste.

  • Pruebe a grabar vídeo utilizando la shell de adb screenrecord Android 4.4
  • Recortar al seleccionar de Galería en Android 4.4
  • ¿Cómo se puede utilizar ViewPropertyAnimator para establecer Width a un valor específico
  • ¿Cómo hacer que una aplicación no sea descargada por los usuarios de Android KitKat?
  • Control de volumen del cliente manos libres Bluetooth
  • No se puede encontrar la imagen del sistema en Emulator en Android Studio con API de Google
  • Cómo crear una aplicación para Android que se puede ejecutar en la API 19 (4.4 Kitkat), pero todavía tiene la apariencia de la API 21 (5.0 Lollipop)?
  • Android 4.4 KitKat - ¿Cómo puedo evitar el nuevo selector de archivos?
  • Establecer el modo de pantalla completa inmersiva de Android en el manifiesto
  • ¿Cuál es la diferencia entre Dalvik VM y ART Runtime?
  • ¿Cómo determina Android si una aplicación tiene "Uso de batería alta" en "Solicitudes de ubicación recientes"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.