想用shell脚本(或服务启动)的方式,来实现开机自动运行指定的安卓APP,但是:
1、脚本一般都是以root权限运行程序的,
2、直接sudo以root身份运行会提示“当前用户为root,请使用普通用户登录并启动本软件!”,
3、登录root账号后用su username无法以其他用户的身份打开软件(好像是因为无法显示界面),
4、在普通用户下启动软件,软件启动的时候还要输入一次管理员密码(提示为“为了获取系统信息,需要使用管理员权限!”,然后要求输入管理员密码)。
这些都是实现shell自动化启动指定安卓APP的阻碍。
在这里想提3个问题:
1、不允许以root身份直接运行软件的考虑(或顾虑)是什么?
2、登录root账号后用su username以其他用户的身份打开软件,能否忽略不影响后台运行(如不能显示界面)的问题继续运行?
3、在普通用户下启动软件,能否自动跳过那个输入管理员密码提示,以及输入管理员密码的界面?(实测在直接指定启动安卓APP的时候,手工跳过这些步骤不影响APP的运行)
现在他们把一部分判断逻辑加密了。我现在的做法是用 `machinectl` 命令启动一个普通用户的 shell,然后执行正常的安装运行就好。需要注意的是 pkexec 在文本模式下可能会验证失败。我还没深入研究。。解决办法是新开一个终端用 `pkttyagent` 代理 xDroid 进程的验证
pkttyagent
提交评论 取消
请问新版本怎么在root下运行。
可以的,我已经成功在root下运行
把相关判断逻辑删掉就行了
已经临时解决root下不能运行的问题,软件的判断原理:id -u然后判断返回值是否为0,为0则拒绝运行,然后……看着办就行。暂时没搞懂不允许root下运行是出于什么考虑(顾虑),所以不敢保证强行在root下开启软件的稳定性和安全性,不建议应用,这里只做纯理论的讨论。
这是出于安全性考虑,Linux是多用户操作系统,保证每个用户独立使用