系统img修改的Android启动循环

时间:2014-06-11 23:54:05

标签: android bash

我试图通过在调用之前引入一个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的方式是否正确?

1 个答案:

答案 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并刷它。