2015-03-26 8 views
0

Я построил 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.

Вопросы:

  1. Почему он застрял там? Должен ли я ожидать чего-то читать из входного потока?
  2. Он просто не работает, даже если я удаляю readLines. Файловая система не перезагружается, и файл, очевидно, не копируется. Зачем?
  3. Есть ли способ избежать запроса superuser с просьбой предоставить разрешения? Мое приложение должно работать в бессистемной системе. Я не могу получить подтверждение от пользователя.
  4. Есть лучший способ сделать то, что мне нужно?

Спасибо

ответ

0

Там есть лучший способ сделать то, что мне нужно?

Копирование APK не устанавливает его. Используйте pm вместо cp.

Есть ли способ избежать приглашения суперпользователя с просьбой предоставить разрешения?

Это приложение до su, поэтому если вам нужно, чтобы он автоматически предоставлял разрешения, не спрашивая или не помня разрешения.

+0

Копирование apk в '/ system/app' работает! Вот как вы должны устанавливать системные приложения –

+0

О, извините, я не видел, чтобы это было/system/app – m0skit0

 Смежные вопросы

  • Нет связанных вопросов^_^