adb shell su -c ""

做启动时间自动化脚本的时候,尝尝遇到一些手机要用su提权的问题,但是使用os.system(command)来执行系统命令并不能达到预期的效果。

脚本如下:

 

# -*- coding: utf-8 -*-
import os
os.system("adb shell")
os.system("su")
os.system("am start -W -n com.android.lockscreen2345/.activity.HomeActivity")

 

 

运行结果如下:

 

 

从运行结果可以看到,脚本只是执行了adb shell,并没有执行su。因为每次执行os.system(command)的时候,都会还原到最初的环境,所以该脚本的命令不是顺序的,而是同一层级的。

因为adb shell后,进入的是android的系统,而android的系统又是linux的,所以可以使用linux的命令来完成该效果:

 

adb shell su -c "am start -W -n com.android.lockscreen2345/.activity.HomeActivity"


运行效果如下:

 

adb shell su -c

由图可以看到,该设备可以用su来获得系统级权限,使用该命令能顺利获得启动时间。

因此脚本只要改成这样就可以了:

 

# -*- coding: utf-8 -*-
import os
os.system("adb shell su -c 'am start -W -n com.android.lockscreen2345/.activity.HomeActivity'")

 

 

 

 

 

 

你可能感兴趣的:(adb)