Desinfectante de direcciones de Android Studio usando build.gradle

Estoy tratando de construir (con clang) mi aplicación con el desinfectante de direcciones descrito aquí (https://github.com/google/sanitizers/wiki/AddressSanitizer, más precisamente aquí:https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroid), pero tengo problemas para comprender todo el proceso, especialmente el uso de gradle.

Parece que hay al menos 3 formas de habilitarlo:

1 °) Siguiendo el primer enlace, t dice que todo lo que tienes que hacer es hacer esto:

agregando-fsanitize=address a los cppFlags + opcional-fno-omit-frame-pointer

agregando-fsanitize=address a las banderas del enlazador (¿es necesario?)

2 °) siguiendo el segundo enlace, parece que tienes que hacer:

igual que el primerorootear un dispositivo y luego ejecutar asan_device_setup en él a través de adbAgrega unLD_PRELOAD=libclang_rt.asan-arm-android.so ¿algun lado? Supongo que debería ponerse en la parte de 'argumentos' del gradle externalNativeBuild? Pero, ¿dónde puede encontrar la aplicación esta biblioteca? ¿Tengo que vincularlo yo mismo? ¿O ya está en algún lugar del dispositivo?

3 °) También encontré una "nueva" forma de hacerlo, que no debería requerir acceso a las raíces (bueno, sí, pero es un error que se debe corregir en algún momento):

https://virtualrealitypop.com/oreo-ndk-secrets-7d075a9b084

Este método realmente hace lo que se hace en el primer y segundo punto, además ejecuta la aplicación al lanzar un script de shell que exporta algunos valores para que asan funcione.

En lo que respecta a mi investigación, estoy un poco confundido sobre cuál es el método adecuado para tener una aplicación totalmente desinfectada (con bibliotecas vinculadas estáticamente) que funcione en mi emulador rooteado.

Lo más lejos que he ido fue construir e iniciar la aplicación (usando 2 °), pero sin especificar el indicador LD_PRELOAD), pero la aplicación se bloquea con un desbordamiento de contenedor en alguna función eglMakeCurrent que ni siquiera es parte de mi código, y No tengo ninguna pila para ello:

02-19 16:26:21.553 28771-28789/com.mycompany.myapp I/zygote: Background concurrent copying GC freed 10159(1175KB) AllocSpace objects, 12(304KB) LOS objects, 50% free, 2MB/4MB, paused 144.861ms total 1.252s
[ 02-19 16:26:21.554 28771:28956 I/         ]
=================================================================
[ 02-19 16:26:21.554 28771:28956 I/         ]
[ 02-19 16:26:21.557 28771:28956 I/         ]
[ 02-19 16:26:21.563 28771:28956 I/         ]
==28771==ERROR: AddressSanitizer: container-overflow on address 0xa136e990 at pc 0xa49849e2 bp 0x82e60558 sp 0x82e60128
[ 02-19 16:26:21.563 28771:28956 I/         ]
[ 02-19 16:26:21.565 28771:28956 I/         ]
[ 02-19 16:26:21.566 28771:28956 I/         ]
WRITE of size 2 at 0xa136e990 thread T334 (GLThread 337)
[ 02-19 16:26:21.566 28771:28956 I/         ]

No estoy seguro de que sea un desbordamiento real porque no estoy seguro de que toda mi aplicación esté construida con desinfectante (he creado mi + todas mis estadísticas con ella, pero ¿es suficiente?), Yhttps://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow dice que si toda su aplicación no está construida con desinfectante, puede obtener falsos positivos.

Entonces mis preguntas son:

R °) ¿Alguien ha logrado construir una aplicación desinfectada con Android Studio?

B °) En caso afirmativo, ¿cuál es la forma correcta de hacerlo (es decir, la que será compatible)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta