我根植了解锁的Galaxy S3(SGH-T999)
现在,我正在尝试adb root从Windows 命令提示符运行,但是,我收到adbd cannot run as root in production builds错误.所以,我检查的第一件事是我的手机是否真的扎根了?
所以我尝试了以下方法:
打开命令提示符
$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时adb root,我会收到adbd cannot run …
我正在编写一个Android应用程序,需要在运行时将文件复制到"/ system"分区.我有运行"su"的命令,可以成功请求SuperUser权限并以root身份运行命令.但我不知道如何在多个设备上使这个应用程序通用,因为mount命令可能会有所不同,具体取决于/ system实际安装的位置.这是最常用的命令:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Run Code Online (Sandbox Code Playgroud)
但是我知道mtdblock3在某些设备上可能会有所不同(对于那个问题,我想yaffs2也是如此).所以,我的问题是:是否有适用于所有手机的通用命令?或者有没有办法在运行时找出正确的参数是什么?
有关信息
adb remount
Run Code Online (Sandbox Code Playgroud)
回报 "remount failed: Operation not permitted"
adb shell 'su -c mount -o rw,remount /system'
Run Code Online (Sandbox Code Playgroud)
回报 unknown option -- o
我的设备扎根了.
我试图将/ system重新安装为rw文件系统,以便将一些文件推送到/ system/framework.它是运行Android 6.0 x86映像的Android模拟器.
$ mount
...
/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0
...
Run Code Online (Sandbox Code Playgroud)
然后我做
su
mount -o rw,remount /system
mount
...
/dev/block/vda /system ext4 rw,seclabel,relatime,data=ordered 0 0
...
Run Code Online (Sandbox Code Playgroud)
这时候我觉得我很好.然后我在主持人做:
adb push test.jar /system/framework/
Run Code Online (Sandbox Code Playgroud)
不过我看到了:
failed to copy 'test.jar' to '/system/framework/test.jar': Read-only file system
Run Code Online (Sandbox Code Playgroud)
然后我回到adb:
mount
...
/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0
...
Run Code Online (Sandbox Code Playgroud)
它又回到了ro.
当我试图再次重新安装时,它甚至不让我这次做:
mount: Read-only file system
255|root@generic_x86:/ #
Run Code Online (Sandbox Code Playgroud)
那我在哪里做错了?谢谢!
___编辑_____
通过adb root命令以root身份重新启动adbd解决了我的问题.
我尝试了stackoverflow和在线中可用的所有命令和建议,但没有一个起作用
还有很多,但对我没有用
我收到以下错误-以下命令均无效。
$adb root
$adb disable-verity
Run Code Online (Sandbox Code Playgroud)
对于
$adb remount
remount of / failed: Permission denied
remount failed
Run Code Online (Sandbox Code Playgroud)
所以然后我尝试了不同的命令
$ adb shell mount -o rw,remount /system
mount: '/system' not in /proc/mounts
$ adb shell mount -o rw,remount /
'/dev/root' is read-only
$ adb shell mount -o rw,remount -t /dev/block/stl12 system
mount: 'system' not in /proc/mounts
$ adb shell "su 0 mount -o rw,remount /system"
mount: '/system' not in /proc/mounts
$ adb shell
$ su
# mount -o rw,remount …Run Code Online (Sandbox Code Playgroud) 我需要在root设备上运行一些需要更高权限的命令.比如说,chmod 777或者访问一个权限文件--w-------(如果权限--w-----w-意味着应用程序正在作为其他组运行,则可以使用).
一些额外的细节:
1)su从java 使用:
从这篇文章中,我尝试su在java中使用如下:
Process su = null;
try {
su = Runtime.getRuntime().exec("su");
su.getOutputStream().write("chmod 777 file\n".getBytes());
su.getOutputStream().write("exit\n".getBytes());
su.waitFor();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (su != null) {
su.destroy();
}
}
Run Code Online (Sandbox Code Playgroud)
没有抛出错误,但这没有任何作用.
2)setWritable()从java 使用:
boolean ret = file.setWritable(true, false);
Run Code Online (Sandbox Code Playgroud)
在这里,ret = false表明它失败了.
3)使用RootTools库:
Command cmd=new Command(0,"chmod 202 /sys/class/gpio/export");
try {
RootShell.getShell(true).add(cmd); …Run Code Online (Sandbox Code Playgroud) 有可能以某种方式使用我的应用程序以编程方式设置动态壁纸吗?
我正在开发一个应用程序,她的目的是选择设备上的一些已安装的动态壁纸,并将其设置为动态壁纸.此操作需要通过我的应用程序完成.
在我研究的过程中,我找到了一些答案,这可以通过植根Android设备来实现吗?
有人可以帮我解决这个问题吗?
基本上,想法是在脚本中添加模式解锁,在计算机上运行,通过adb连接到手机.所以,像adb shell输入事件.模式是已知的,没有黑客攻击.
所以我有一个本地Sqlite文件,我试图推送到我的Rooted Android(Nexus 7 2013)设备.我已经证实是植根通过捆绑adb shell,su并看到了#显示,而不是$
我试图运行以下命令:
adb push D:\tfs\MyApp\MyDatabase.db3 /data/data/MyApp/files/MyDatabase.db3
Run Code Online (Sandbox Code Playgroud)
但我一直在努力
无法复制... MyApp .. to ... MyApp ...:权限被拒绝
我已经搜索了互联网,在这里和这里找到了答案,并提出了以下建议:
adb shell su -c "mount -o rw,remount /data"
adb shell su -c "chmod 777 /data"
Run Code Online (Sandbox Code Playgroud)
但即使在运行上述两个命令并运行我的Push命令之后,我仍然会被拒绝权限.
我究竟做错了什么?