2016-05-05 11 views
2

Ich kann LD_PRELOAD mit normalen nativen Apps wie z. ls:Wie benutzt man LD_PRELOAD mit dem Mediaserver von Android?

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

Nach einigem Suchen konnte ich auch mit Java-Anwendungen verwenden, indem eine solche Eigenschaft festlegen:

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

aber mich interessiert LD_PRELOAD mit Mediaserver Prozess. Das ist schwierig, weil es ständig im Hintergrund arbeitet. Wenn Sie es töten, wird es automatisch neu gestartet. Ich kann „zweite Instanz“ mit Start:

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

und es wird meine Bibliothek laden, obwohl „zweite Instanz“ nicht in irgendeiner Wiedergabe verwendet werden. Der Medienserver wird immer vom Original-Medienserver verwaltet. Also gibt es eine Möglichkeit, LD_PRELOAD mit dem Medienserver zu verwenden, ohne init.rc Dateien auf dem Gerät zu ändern?

Antwort

1

Es stellte sich heraus, dass es einen Weg gibt, das zu tun. Ich hatte folgende Dinge zu tun:

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 

Dann habe ich getötet Mediaserver, die (überraschend) nicht automatisch gestartet wurde, so hatte ich es auch von Hand zu starten:

adb shell 
/system/bin/mediaserver & 

es trotzdem ist möglich, das zu tun, also werde ich meine Antwort akzeptieren, wenn niemand etwas besseres hat.

Nur ein Warnung - wenn ich zum vorherigen Zustand mit zurückgekehrt:

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

und neu gestartet Gerät wurde Mediaserver noch nicht automatisch gestartet! Das ist also nicht etwas, was Sie auf einem Gerät tun möchten, das Ihnen wichtig ist, weil in diesem Zustand, wenn Sie mediaserver nicht manuell starten, der Bootvorgang nicht vom Gerät abgeschlossen wird. Obwohl dieses Phänomen passieren könnte, weil ich mit chown gespielt habe, mag es nicht mit der beschriebenen Prozedur zu tun haben, trotzdem wurden Sie gewarnt.