Как сделать вставку встроенной библиотеки в Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как сделать вставку встроенной библиотеки в Android?

Сообщение Anonymous »

У меня есть общая библиотека, которая вставляет некоторые вызовы GLES (например, glClear).
Она отлично работает в Linux с простым LD_PRELOAD, но я не могу заставить его работать на Android.
Моя библиотека печатает в logcat при загрузке, поэтому я могу знать, загружена она или нет.
  • Код: Выделить всё

    LD_PRELOAD
    загружает библиотеку, но не выполняет вызовы gl — приложение по-прежнему вызывает функции из «исходной» системной библиотеки gl.
  • Пытался загрузить ее, изменяя различные части 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»