Она отлично работает в Linux с простым LD_PRELOAD, но я не могу заставить его работать на Android.
Моя библиотека печатает в logcat при загрузке, поэтому я могу знать, загружена она или нет.
- загружает библиотеку, но не выполняет вызовы gl — приложение по-прежнему вызывает функции из «исходной» системной библиотеки gl.
Код: Выделить всё
LD_PRELOAD - Пытался загрузить ее, изменяя различные части AOSP (14), например, вызовите dlopen перед загрузкой любых других библиотек gl в frameworks/native/opengl/libs/EGL/egl.cpp:egl_init_drivers. Он загружается, но интерпозиция снова не работает.
Код: Выделить всё
nm -D libgl.so | grep glClear
00000000001ecdb0 T glClear
00000000001ed5c0 T glClearColor
- Моя библиотека находится в /data/local/tmp/ и не включена ни в одно приложение.
- SELinux установлен в разрешительный режим.
- Я могу изменить любую часть исходного кода AOSP.
- Я не могу заменить системные библиотеки GL, так как Мне нужно «переопределить» лишь несколько функций и только для нескольких приложений.
Подробнее здесь: https://stackoverflow.com/questions/786 ... in-android
Мобильная версия