我试图通过在调用之前引入一个bash脚本来向app_process
添加一些简单的东西,如下所示:
app_process :
#!/system/bin/sh
ENV=env_data /system/bin/app_process.orig $*
但是,在通过 adb :
推送所需文件后adb push app_process system/bin
adb push app_process.orig system/bin
使用shell stop / start或使用修改后的system.img运行模拟器命令,模拟器将无法再次正常启动。它进入一些启动失败循环,出现以下错误:
E/BandwidthController( 4244): runIptablesCmd(): failed /system/bin/iptables -A bw_INPUT -i lo --jump RETURN res=768
E/BandwidthController( 4244): runIptablesCmd(): failed /system/bin/ip6tables -A bw_INPUT -i lo --jump RETURN res=768
E/Netd ( 4244): Unable to bind netlink socket: No such file or directory
E/Netd ( 4244): Unable to open quota2 logging socket
D/MDnsDS ( 4244): MDnsSdListener::Hander starting up
D/MDnsDS ( 4244): MDnsSdListener starting to monitor
D/MDnsDS ( 4244): Going to poll with pollCount 1
我打电话app_process
的方式是否正确?
答案 0 :(得分:1)
我认为init无法在没有指定可执行文件的情况下运行脚本。
app_process由init进程通过读取其脚本/init.rc启动。
init.rc中Android的默认命令:
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
您可能需要将其更改为:
service zygote /system/bin/sh /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
这将让init通过调用shell运行脚本。
但是如果你想修改init.rc,你需要重新包装ramdisk.img& boot.img并刷它。