คำสั่งให้ติดตั้งแอพจากโทรศัพท์หรือไม่


14

ฉันต้องการ SSH ลงในโทรศัพท์ของฉันดาวน์โหลด APK และติดตั้งจากระยะไกล มีคำสั่งในโทรศัพท์ที่จะอนุญาตให้ฉันทำสิ่งนี้หรือไม่?

เช่น:

wget localhost/file.apk 
android_install file.apk

จำเป็นต้องทำการติดตั้งโดยอัตโนมัติเนื่องจากฉันเพิ่งเช็ดการ์ด SD ของฉันโดยไม่ได้ตั้งใจและทุกอย่างในนั้น :(


คำตอบ:


12

ใน adb เชลล์หรือเทอร์มินัลอีมูเลเตอร์ (และมีแนวโน้มมากกว่า SSH) คุณสามารถใช้pmยูทิลิตี้เพื่อติดตั้งแอพ คำสั่งคือ:

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 wgetยูทิลิตี้ควรจะพร้อมใช้งานผ่าน BusyBox บน CM7 ถ้าไม่คุณสามารถติดตั้งผ่านทางAndroid Marketได้ตลอดเวลา


นี่คือสิ่งที่ฉันกำลังมองหา pmมีอยู่ที่/system/bin/pmแต่น่าเสียดายที่ SSH (แม้ในขณะที่รูท) จะไม่ทำอะไรเลย การรันpmคำสั่งใด ๆจะไม่สร้างเอาต์พุต มีบางอย่างที่ฉันทำผิดหรือเปล่า? มันจะทำงานใน terminal emulator เพียงไม่เกิน SSH ด้วยเหตุผลบางอย่าง :(
Naftuli Kay

ฉันมี PM ทำงานเป็นหลักจาก adb ใน CM6; เกินกว่าที่ฉันไม่แน่ใจ
Broam

1
ฉันขอถามเหตุผลที่คุณชอบ SSH มากกว่าเชลล์ ADB ได้ไหม
Chahk

1
@Chahk: adbใช้งานได้ผ่านสาย USB เท่านั้นใช่มั้ย และ SSH สามารถผ่านเครือข่ายไร้สาย ยังsshมีทุกที่ แต่adbจะต้องติดตั้ง
imz - Ivan Zakharyaschev

ข้อผิดพลาด: java.lang.SecurityException: การปฏิเสธสิทธิ์: runInstallCreate จากคำสั่ง pm ขอให้เรียกใช้ในฐานะผู้ใช้ -1 แต่โทรจากผู้ใช้ 11; นี้ต้อง android.permission.INTERACT_ACROSS_USERS_FULL

6

ฉันขอแนะนำให้คุณเสียบโทรศัพท์เข้ากับพีซีที่ติดตั้ง sdk (หรืออย่างน้อย adb) และอยู่ในโหมดแก้ไขข้อบกพร่อง หลังจากนี้เขียนสคริปต์ที่ต้องผ่านปพลิเคชันของคุณและติดตั้งพวกเขาผ่าน adb adb install x:\path\to\app1.apkเช่น


ไม่มียูทิลิตี้ดั้งเดิมในโทรศัพท์ให้ทำเช่นนี้?
Naftuli Kay

1
ไม่เพราะแอพส่วนใหญ่เพียงคัดลอกไฟล์. apk ไปยัง / data / app คุณสามารถลองคัดลอก apks ของคุณที่นั่นแล้วรีบูตเครื่อง (โปรดทราบว่านี่ต้องใช้รูท แต่ฉันสันนิษฐานจากแท็ก cyanogenmod ที่คุณรูทแล้ว)
onik

ตอนนี้ว่าเป็นสิ่งที่ฉันสามารถทำได้ผ่าน SSH,cp * /data/app && reboot
Naftuli เคย์

1
โปรดทราบว่าคำสั่ง cp ไม่พร้อมใช้งานในสต็อก Android (เช่น ROM ที่ไม่ใช่แบบกำหนดเอง) ดังนั้นหากคุณไม่ได้ใช้ Cyanogen คุณอาจต้อง (ab) ใช้catคำสั่ง
S '

2
ที่จริงแล้วในโทรศัพท์มีคำสั่งดังกล่าว pm install /sdcard/app1.apkจะทำสิ่งเดียวกันกับadb installและสามารถดำเนินการใน adb shell, terminal emulator, และมีแนวโน้มมากที่สุดเหนือ SSH ดูผลลัพธ์ของpmตัวเลือกเพิ่มเติม มีแม้กระทั่งสวิตช์ที่บังคับให้แอปติดตั้งโดยตรงกับที่จัดเก็บข้อมูลภายนอก (สไตล์ Gingerbread)
Chahk

2

ฉันใช้วิธีเดียวกันและใช่ SSH ยอดเยี่ยม! แต่ดูเหมือนว่าเมื่อคุณ SSH กับ Android จะได้รับเปลือกที่แตกต่างจากดวลดังนั้นถ้าคุณใส่ดู่หน้าคำสั่งมันควรจะทำงานได้

นี่คือตัวอย่าง: sh /system/bin/pm install app1.apk

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.