2016-05-05 3 views
2

Я могу использовать LD_PRELOAD с обычными родными приложениями, например, лсКак использовать LD_PRELOAD с помощью медиа-браузера Android?

LD_PRELOAD=/path/to/my/library.so ls 

После некоторых поисков я также был в состоянии использовать его с ява приложениями, установив такое свойство:

adb shell setprop wrap.com.some.app LD_PRELOAD=/path/to/my/library.so 

Однако я заинтересован в использовании LD_PRELOAD с MediaServer процесса. Это сложно, потому что он постоянно работает в фоновом режиме. Если вы его убьете, он будет запущен снова автоматически. Я могу начать «второй экземпляр» с:

LD_PRELOAD=/path/to/my/library.so /system/bin/mediaserver 

и она будет загружать свою библиотеку, хотя «второй экземпляр» не будет использоваться в любом воспроизведении. Всегда оригинальный медиасервер будет работать с медиа-операциями. Так можно ли использовать LD_PRELOAD с mediaserver без изменения файлов init.rc на устройстве?

ответ

1

Оказалось, что есть способ сделать это. я должен был сделать следующие вещи:

adb root 
adb remount 
adb pull /system/bin/mediaserver 
echo "LD_PRELOAD=/path/to/my/library.so /system/bin/mediaserver_orig" > mediaserver 
adb shell mv /system/bin/mediaserver /system/bin/mediaserver_orig 
adb push mediaserver /system/bin/mediaserver 

Тогда я убил Mediaserver, который (удивительно) не запускается автоматически, поэтому я должен был начать его вручную:

adb shell 
/system/bin/mediaserver & 

В любом случае это это можно сделать, поэтому я приму свой ответ, если у кого-то нет ничего лучше.

Только один предупреждение - когда я вернулся в прежнее состояние с:

adb shell mv /system/bin/mediaserver_orig /system/bin/mediaserver 

и перезагрузил устройство, MediaServer еще не началась автоматически! Таким образом, это не то, что вы хотели бы сделать на устройстве, о котором вы заботитесь, потому что в таком состоянии, если вы не запускаете mediaserver вручную, загрузка не будет завершена устройством. Хотя это явление могло произойти, потому что я играл с chown, так что это может быть не связано с описанной процедурой, так или иначе вы были предупреждены.

 Смежные вопросы

  • Нет связанных вопросов^_^