安装应用程序包装器脚本wrap.sh

时间:2017-07-05 20:36:59

标签: android android-ndk apk android-package-managers

Android提供了一种非常强大的方法来控制应用程序进程启动 - 它被称为wrapper script。它是一个名为wrap.sh的简单shell脚本,应放在app installation lib/目录中(如果有的话,包含本机库):

#!/system/bin/sh
my_wrapper_cmd $@

如果应用程序有这样的脚本,系统将不会分叉zygote来为应用程序创建托管进程。相反,一旦用户尝试启动应用程序 - 系统会使用单独的JVM将该脚本调用到start全新的app_process。如果你是非常有用的,例如想要在Valgrind下启动应用程序或做一些LD_PRELOAD。 (它仅适用于可调试的APK,但现在无关紧要)

目前,我可以制作包含libs/<my_device_abi>/wrap.sh的APK。感谢snippet。但安装完成后,我在设备的wrap.sh文件夹中看不到lib/

sailfish:/ $ run-as com.example.sergik.ndksample                             
sailfish:/data/data/com.example.sergik.ndksample $ ls -l lib/
total 40
-rwxr-xr-x 1 system system 13832 1979-11-30 00:00 libnative-lib.so

只有打包的.so个库。同时APK包含该脚本。很明显,包经理已经跳过了它。

问题是:有没有人知道如何将我的脚本放到设备上或强制包管理器尊重它?

P.S。设备未植根,尝试通过wrap.sh推送run-as将无效,因为lib/归系统所有,应用程序没有权限在那里写一些内容。

0 个答案:

没有答案