установить apk в фоновом режиме с помощью busybox

могу ли я установить apk в фоновом режиме с помощью busybox на корневом устройстве ???

я вижу что-то подобное, но это не работает

process install;
CommandCapture command = new CommandCapture(0, "chmod 777 /data/app");
RootTools.getShell(true).add(command).waitForFinish(); 
CommandCapture command2 = new CommandCapture(0, "chmod 777 /system/xbin/busybox");
RootTools.getShell(true).add(command2).waitForFinish();
install = Runtime.getRuntime().exec("/system/xbin/busybox install " + Environment.getExternalStorageDirectory() + "/Download/" + "xxx.apk /data/app/xxx.apk");

person Omar Abdan    schedule 26.09.2012    source источник


Ответы (3)


Если вы запустите su -c pm install myapp.apk в корневой оболочке, вы сможете установить в фоновом режиме (обратите внимание на «pm»). Это не имеет ничего общего с busybox, вы можете использовать любую оболочку, и вам, конечно же, не нужно менять разрешение /data/app.

person Nikolay Elenkov    schedule 27.09.2012
comment
спасибо за ваш ответ, но я хочу установить apk программно, а не из оболочки - person Omar Abdan; 27.09.2012
comment
Это именно то, что пытается сделать ваш код выше: запустить оболочку (busybox) с командой (install) и параметром (xxx.apk). Проблема в том, что такой команды install нет, нужно использовать pm install. Откуда вы скопировали этот код? Прочитайте их документы/readme, чтобы понять, что он на самом деле делает. - person Nikolay Elenkov; 27.09.2012
comment
нет, в busybox есть команда установки, которая просто копирует apk и помещает его только в /data/app, и когда вы перезагружаете устройство, начинается установка - person Omar Abdan; 27.09.2012
comment
Копирование do /data/app — это не то же самое, что установка. Не уверен, что именно делает команда busybox, но используйте команду pm, если вы действительно хотите ее установить. В любом случае, в чем именно заключается ваша проблема? Как это "не работает"? Рассмотрите возможность пересмотра исходного вопроса и предоставления более подробной информации. - person Nikolay Elenkov; 27.09.2012
comment
Спасибо, @Nikolay, я получил это с помощью pm install - person Omar Abdan; 27.09.2012

без использования Busybox

install = Runtime.getRuntime().exec("su");   
DataOutputStream os = new DataOutputStream(install.getOutputStream());  
os.writeBytes("pm install "+APKFile.apk+"\n");  
os.writeBytes("exit\n"); 
os.flush();
install.waitFor();
person Omar Abdan    schedule 27.09.2012

Похоже, вы используете два пути для двоичного файла busybox. Сначала вы chmod делаете это в /system/xbin, а затем вызываете его из system/bin. Убедитесь, что вы используете правильный путь. И chmod 777 /data/app выглядит ОЧЕНЬ ПЛОХО.

person Marcin Orlowski    schedule 26.09.2012