휴대 전화에서 앱을 설치하라는 명령?


14

전화기에 SSH 연결하고 APK를 다운로드하여 원격으로 설치하고 싶습니다. 전화로 명령을 내릴 수 있습니까?

EG :

wget localhost/file.apk 
android_install file.apk

실수로 SD 카드와 그 안에있는 모든 것을 지웠으므로 설치를 자동화해야합니다. :(


답변:


12

adb 쉘 또는 터미널 에뮬레이터 (및 대부분 SSH를 통해)에서 pm유틸리티를 사용하여 앱을 설치할 수 있습니다. 명령은 다음과 같습니다.

오후 설치 ​​/sdcard/app1.apk

다음은 스위치입니다 pm.

usage: pm [list|path|install|uninstall]
       pm list packages [-f] [-d] [-e] [-u] [FILTER]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
       pm list instrumentation [-f] [TARGET-PACKAGE]
       pm list features
       pm list libraries
       pm path PACKAGE
       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
       pm uninstall [-k] PACKAGE
       pm clear PACKAGE
       pm enable PACKAGE_OR_COMPONENT
       pm disable PACKAGE_OR_COMPONENT
       pm setInstallLocation [0/auto] [1/internal] [2/external]

The list packages command prints all packages, optionally only
those whose package name contains the text in FILTER.  Options:
  -f: see their associated file.
  -d: filter to include disbled packages.
  -e: filter to include enabled packages.
  -u: also include uninstalled packages.

The list permission-groups command prints all known
permission groups.

The list permissions command prints all known
permissions, optionally only those in GROUP.  Options:
  -g: organize by group.
  -f: print all information.
  -s: short summary.
  -d: only list dangerous permissions.
  -u: list only the permissions users will see.

The list instrumentation command prints all instrumentations,
or only those that target a specified package.  Options:
  -f: see their associated file.

The list features command prints all features of the system.

The path command prints the path to the .apk of a package.

The install command installs a package to the system.  Options:
  -l: install the package with FORWARD_LOCK.
  -r: reinstall an exisiting app, keeping its data.
  -t: allow test .apks to be installed.
  -i: specify the installer package name.
  -s: install package on sdcard.
  -f: install package on internal flash.

The uninstall command removes a package from the system. Options:
  -k: keep the data and cache directories around.
after the package removal.

The clear command deletes all data associated with a package.

The enable and disable commands change the enabled state of
a given package or component (written as "package/class").

The getInstallLocation command gets the current install location
  0 [auto]: Let system decide the best location
  1 [internal]: Install on internal device storage
  2 [external]: Install on external media

The setInstallLocation command changes the default install location
  0 [auto]: Let system decide the best location
  1 [internal]: Install on internal device storage
  2 [external]: Install on external media

예를 들어 앱을 외부 저장소 (Froyo / Gingerbread 스타일)에 직접 설치하도록 할 수 있습니다.

PS wgetCM7의 BusyBox를 통해 유틸리티를 사용할 수 있어야합니다. 그렇지 않은 경우 언제든지 Android 마켓을 통해 설치할 수 있습니다 .


이것이 바로 내가 찾는 것입니다. pm에 존재 /system/bin/pm하지만 불행히도 SSH를 통해 (루트조차도) 아무것도하지 않습니다. pm명령을 실행하면 출력이 생성되지 않습니다. 내가 잘못하고있는 것이 있습니까? 그것은 어떤 이유로 SSH를 통해서가 아니라 터미널 에뮬레이터에서 작동합니다 :(
Naftuli Kay

CM6의 PM에서 루트로 PM 작업을 수행했습니다. 그 이상은 확실하지 않습니다.
Broam

1
ADB 쉘보다 SSH를 선호하는 이유는 무엇입니까?
Chahk

1
@ Chahk : adbUSB 케이블을 통해서만 작동합니까? 그리고 SSH는 무선 네트워크를 통해 이루어질 수 있습니다. 또한 ssh어디에나 있지만 adb설치해야합니다.
imz-Ivan Zakharyaschev

오류 : java.lang.SecurityException : 권한 거부 : pm에서 runInstallCreate 명령이 사용자 -1로 실행을 요청하지만 사용자 11에서 호출 중입니다. 이 android.permission.INTERACT_ACROSS_USERS_FULL 필요

6

sdk (또는 적어도 adb)가 설치되어 있고 디버깅 모드로 PC에 휴대 전화를 연결하는 것이 좋습니다. 그런 다음 앱을 통과하고 adb를 통해 설치하는 스크립트를 작성하십시오 (예 :) adb install x:\path\to\app1.apk.


이 작업을 수행 할 수있는 기본 유틸리티가 전화에 없습니까?
Naftuli Kay

1
아니요. 대부분의 앱은 .apk 파일을 / data / app로 복사하기 만합니다. 모든 APK를 복사 한 다음 재부팅 할 수 있습니다 (루트가 필요하지만 cyanogenmod 태그에서 루팅되었다고 가정합니다).
onik

이제 이것이 SSH를 통해 할 수있는 일입니다.cp * /data/app && reboot
Naftuli Kay

1
cp 명령은 재고 Android (예 : 비 사용자 정의 ROM)에서 사용할 수 없으므로 Cyanogen을 사용하지 않는 경우 cat명령을 사용해야합니다 .
Lie Ryan

2
실제로 전화에는 그러한 명령이 있습니다. adb 쉘, 터미널 에뮬레이터 및 SSH를 통해 실행되는 pm install /sdcard/app1.apk것과 동일한 작업을 수행합니다 adb install. pm더 많은 옵션 에 대한 결과를 살펴보십시오 . 앱이 외부 저장소 (Gingerbread 스타일)에 직접 설치되도록하는 스위치도 있습니다.
Chahk

2

나는 같은 방법을 사용하고 있으며 SSH는 훌륭합니다! 그러나 안드로이드에 SSH를 넣을 때 sh와 다른 쉘을 얻는 것처럼 보이므로 명령 앞에 sh를 넣으면 작동합니다.

예를 들면 다음과 같습니다. sh /system/bin/pm install app1.apk

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.