Я построил system app
, работающий по rooted/customized
версии AOSP Android
.Android superuser
Возможно, мне нужно загрузить новую версию моего приложения с моего личного сайта и заменить его на Android-систему новым.
Это должно быть сделано автоматически самим приложением, а не вручную с помощью команды adb.
ЧТО Я ПРОБОВАЛИ
Допустим, я уже получил свой APK скачать в fpath
.
С помощью следующего фрагмента я пытаюсь переустановить папку /system/
с разрешением read/write
, а затем переместить обновленный apk в эту папку.
try {
String line;
Process p = Runtime.getRuntime().exec("su");
// open input/output facilities
OutputStreamWriter osw = new OutputStreamWriter(p.getOutputStream());
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
// output the command
osw.write("mount -o rw,remount /system");
osw.flush();
// read the response
while ((line = in.readLine()) != null) {
Log.i("UPDATE", "output mount rw " + line);
}
// output the command
osw.write("cp " + fpath + " /system/app/myapp.apk");
osw.flush();
// read the response
while ((line = in.readLine()) != null) {
Log.i("UPDATE", "output cp " + line);
}
// output the command
osw.write("mount -o ro,remount system");
osw.flush();
// read the response
while ((line = in.readLine()) != null) {
Log.i("UPDATE", "output mount ro " + line);
}
} catch (Exception e) {
Log.e("UPDATE", "error in executing shell commands: " + e.getMessage());
}
Этот фрагмент застревает в первой readLine сразу после команды mount.
Вопросы:
- Почему он застрял там? Должен ли я ожидать чего-то читать из входного потока?
- Он просто не работает, даже если я удаляю readLines. Файловая система не перезагружается, и файл, очевидно, не копируется. Зачем?
- Есть ли способ избежать запроса
superuser
с просьбой предоставить разрешения? Мое приложение должно работать в бессистемной системе. Я не могу получить подтверждение от пользователя. - Есть лучший способ сделать то, что мне нужно?
Спасибо
Копирование apk в '/ system/app' работает! Вот как вы должны устанавливать системные приложения –
О, извините, я не видел, чтобы это было/system/app – m0skit0