2012-09-26 3 views
8

뿌리깊은 장치에 비지 박스를 사용하여 백그라운드에서 APK를 설치할 수 있습니까 ???비지 박스를 사용하여 백그라운드에서 apk를 설치하십시오.

내가 그런 것을 볼 수 있지만, 그것은 당신이 당신의 비지 박스 바이너리에 대한 두 개의 경로를 사용 보인다

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"); 

답변

1

루트 셸에서 su -c pm install myapp.apk을 실행하는 경우 백그라운드 ('pm'참고) 부분에 설치할 수 있어야합니다. 이것은 busybox와는 아무런 관련이 없으며 어떤 쉘을 사용할 수 있으며 반드시 /data/app의 허가를 변경할 필요가 없습니다. 비지 박스를 사용하지 않고

+0

의 경로가 답변을 위해 U 감사하지만 난 당신의 대구 위에서 일을하려고 정확히 무엇 쉘 –

+1

에서하지 APK 프로그램 설치하려는 수정 확인 : 명령 ('install')과 매개 변수 ('xxx.apk')로 쉘 ('busybox')을 시작하십시오. 문제는'install' 명령이 없다는 것입니다.'pm install'을 사용해야합니다. 이 코드를 어디에서 복사 했습니까? 자신의 문서/readme를 읽고 그것이 실제로 무엇을하는지 이해하십시오. –

+0

아니요 busybox에 apk를 복사하고/data/app에만 넣고 장치를 다시 시작하면 설치 명령이 있습니다 –

2

작동하지 않습니다. 먼저 chmod/system/xbin에 있지만 그 다음에 system/bin에서 호출합니다. 올바른 경로를 사용했는지 확인하십시오. 그리고 chmod 777 /data/app 보이는 아주 나쁜.

+1

내가 비지 박스 –

3

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();