Telefondan uygulama yükleme komutu?


14

Telefonuma SSH eklemek, APK indirmek ve uzaktan yüklemek istiyorum. Telefonda bunu yapmama izin verecek bir komut var mı?

ÖRNEĞİN:

wget localhost/file.apk 
android_install file.apk

SD kartımı ve üzerindeki her şeyi yanlışlıkla sildiğim için bir yüklemeyi otomatikleştirmem gerekiyor. :(


Yanıtlar:


12

Adb kabuğu veya terminal öykünücüsünde (ve büyük olasılıkla SSH üzerinden), pmuygulamaları yüklemek için yardımcı programı kullanabilirsiniz . Komut:

pm install /sdcard/app1.apk

Aşağıdakilerin anahtarları şunlardır 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

Örneğin, uygulamayı doğrudan harici depolama birimine (Froyo / Gingerbread stili) yüklemeye zorlayabilirsiniz.

PS Yardımcı wgetprogram CM7'deki BusyBox üzerinden kullanılabilir olmalıdır. Değilse, her zaman Android Market üzerinden yükleyebilirsiniz .


Tam da aradığım şey bu. pmvar /system/bin/pmama maalesef SSH (kök olarak bile) üzerinde hiçbir şey yapmıyor. Herhangi bir pmkomutu çalıştırmak çıktı üretmez. Yanlış yaptığım bir şey var mı? Terminal emülatöründe çalışıyor, sadece bir sebepten ötürü SSH'nin üzerinde değil :(
Naftuli Kay

CM6'da adb'den root olarak çalıştım; bunun ötesinde emin değilim.
Broam

1
ADB kabuğu yerine SSH'yi tercih etme nedeninizi sorabilir miyim?
Chahk

1
@Chahk: adbsadece USB kablosu ile çalışıyor, değil mi? Ve SSH kablosuz bir ağ üzerinden olabilir. Ayrıca, sshher yerde var, ancak adbyüklenmesi gerekiyor.
imz - Ivan Zakharyaschev

Hata: java.lang.SecurityException: İzin Reddi: pm komutundan runInstallCreate, kullanıcı -1 olarak çalışmasını ister, ancak 11 numaralı kullanıcıdan çağırır; bu android.permission.INTERACT_ACROSS_USERS_FULL gerektirir

6

Telefonunuzu sdk (veya en azından adb) kurulu ve hata ayıklama modunda bir bilgisayara bağlamanızı öneririm. Bundan sonra, uygulamalarınızdan geçen ve adb yoluyla yükleyen bir komut dosyası yazın, örn adb install x:\path\to\app1.apk.


Telefonda bunu yapacak yerel bir yardımcı program yok mu?
Naftuli Kay

1
Hayır, çünkü çoğu uygulama .apk dosyalarını / data / app dizinine kopyalar. Tüm apks'lerinizi oraya kopyalamayı ve sonra yeniden başlatmayı deneyebilirsiniz (bunun kök olması gerektiğini unutmayın, ancak köklendirdiğiniz cyanogenmod etiketinden varsayıyorum).
onik

Şimdi bu SSH üzerinde yapabileceğim bir şey,cp * /data/app && reboot
Naftuli Kay

1
cp komutunun stok Android'de (yani özel olmayan ROM'da) mevcut olmadığını unutmayın, bu nedenle Cyanogen kullanmıyorsanız catkomutu (ab) kullanmanız gerekebilir .
Lie Ryan

2
Aslında, telefonda böyle bir komut var. pm install /sdcard/app1.apkaynı şeyi yapacağım adb installve adb kabuk, terminal emülatörü idam edilebilir ve büyük olasılıkla SSH üzerinde. pmDaha fazla seçenek için çıktısına bir göz atın . Uygulamayı doğrudan harici depolama birimine (Gingerbread tarzı) yüklemeye zorlamak için bir anahtar bile vardır.
Chahk

2

Aynı yöntemi kullanıyorum ve evet SSH harika! Ancak Android'e SSH yaptığınızda, sh'den farklı bir kabuk alır, bu yüzden sh komutunun önüne koyarsanız çalışmalıdır.

İşte bir örnek: sh /system/bin/pm install app1.apk

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.