Не работает корневое приложение Android: невозможно удалить файл из терминала или Java
Я работаю над простым корневым приложением для очистки браузера localstore и, возможно, позже добавлю другие функции, которые невозможны со встроенными приложениями. Я использую roottools, кажется, что root работает, но он не удалит каталог должным образом:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
RootTools.debugMode = true;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.buttonClearBrowser).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (RootTools.isAccessGiven()) {
RootTools.remount("/data/data/com.android.browser/app_databases/", "RW");
Command command = new Command(0,"rm -rf /data/data/com.android.browser/app_databases/") {
@Override
public void output(int arg0, String arg1) {
System.out.println(arg1);
}
};
try {
RootTools.getShell(true).add(command).waitForFinish();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Это должно очистить локальное хранилище HTML5 в Android (которое нельзя удалить из приложения браузера). Однако это только дает сообщение об ошибке:
11-05 21:40:06.650: D/RootTools v2.4(22778): Remounting /data as rw
11-05 21:40:06.650: I/RootTools v2.4(22778): [nodev, relatime, nosuid, rw] AND rw
11-05 21:40:06.650: D/RootTools v2.4(22778): [nodev, relatime, nosuid, rw]
11-05 21:40:06.650: D/RootTools v2.4(22778): Using Existing Root Shell!
11-05 21:40:06.650: D/RootTools v2.4(22778): Sending command(s): rm -rf /data/data/com.android.browser/app_databases/
11-05 21:40:06.660: I/System.out(22778): rm failed for -rf, Read-only file system
11-05 21:40:06.660: D/RootTools v2.4(22778): Command 0finished.
Я получаю ту же ошибку на оболочке adb, кстати:
$ su
su
# rm -rf /data/data/com.android.browser/app_databases/http_m.bing.com_0
rm -rf /data/data/com.android.browser/app_databases/http_m.bing.com_0
rm failed for -rf, Read-only file system
/ данные не должны быть только для чтения, так как именно там находятся настройки приложения. Что-то не так с телефоном? Это Android 2.2.2, если это имеет значение. По иронии судьбы, я могу просматривать и удалять файлы с Ghost Commander в режиме root.
2 ответа
Я считаю вариант -f
не принимается rm
Команда в Android.
Чтобы подтвердить это, попробуйте из командной строки эту же команду без -f
:
rm -r /data/data/com.android.browser/app_databases/http_m.bing.com_0
С уважением.
Как указано выше, вам не нужно перемонтировать /data
, он уже смонтирован rw
, Как правило, при монтировании / перемонтировании необходимо указать путь к точке монтирования в качестве параметра: /system
, /data/
, /mnt/sdcard
и т.д. Даем полный путь /data/data/com.foobar.app/files/foobaz.txt
выдаст ошибку при передаче mount
команда.
Есть, конечно, вопрос, почему /data
кажется ro
, Вы делали что-то особенное перед запуском этого кода?