Android: how to mount filesystem in RW from within my APK? (rooted, of course)

帅比萌擦擦* 提交于 2019-11-30 07:01:17

问题


I'm trying to write an app that copies something to the /system partition at run time. I've already implemented the ability to run terminal commands as root by requesting SU permissions. I can run a lot of commands successfully (after granting the permission request with SuperUser). However, when I try to remount /system as read/write, nothing happens. I don't get an error or a crash, and the command seems to go through just fine, but the partition stays as read-only. Here's the command I'm running (Droid X): mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system, and it works just fine if I run the same command from Terminal. And here's my code to execute root commands from within my app:

String cmd = "mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system";
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(cmd + "\n");          
os.writeBytes("exit\n");  
os.flush();

And then I have some code that checks the stdout and stderr streamd to see what happened. Can anyone give me an idea why this doesn't work?


回答1:


I figured it out -- the command was actually successful, but it appears that the RW status only applies to the session in which it was applied. So that after one set of commands was executed under SU, the next set of commands gets the /system in RO state. All I had to do was add the command to copy the files before exiting the SU session.



来源:https://stackoverflow.com/questions/5481395/android-how-to-mount-filesystem-in-rw-from-within-my-apk-rooted-of-course

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!