Android ADB araçlarını kullanarak bir uygulama nasıl başlatılır?


Yanıtlar:


630
adb shell
am start -n com.package.name/com.package.name.ActivityName

Veya bunu doğrudan kullanabilirsiniz:

adb shell am start -n com.package.name/com.package.name.ActivityName

Amaç filtreleriniz tarafından filtrelenecek eylemleri de belirtebilirsiniz:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

23
Çok teşekkür ederim, ~ / .bash_profile içinde kabuk fonksiyonunu çok daha hızlı yaptım function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }ve kullanımıandroidrun com.example.test
AbdullahDiaa

3
adb shell amamkomuta geçmeniz için size diğer seçeneklerin bir listesini verecektir . Daha fazla
bilgiyi

1
@shurane -a seçeneğini nasıl bulabilirim?
ericyoung

21
hangi aktiviteyi başlatmayı düşündüğüm kadar spesifik olmak yerine, varsayılan aktiviteyi çalıştırmak mümkün müdür?
android geliştirici

1
Uygulamayı ve faaliyeti bulmada sorunlar yaşadım. adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedGörüntülenen tüm uygulamaları listelemek için bu boru hattını kullandım .
Att Righ

299

Paket adını belirten uygulamayı sadece maymun aracını kullanarak şu kalıbı takip ederek çalıştırmak mümkündür :

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

Komut, uygulamayı rasgele girdi üreten maymun aracını kullanarak çalıştırmak için kullanılır. Komutun son kısmı, uygulama için oluşturulan rastgele giriş sayısını belirten tamsayıdır. Bu durumda sayı 1'dir ve aslında uygulamayı başlatmak için kullanılır (simge tıklaması).


92
Başlatıcı varsayılan değerdir. Basitleştirebilirsinizadb shell monkey -p your.app.package.name 1
Androiderson

3
Paket adı yerine APK dosya adını kullanmak mümkün mü? Bir APK dosyam olduğunu varsayalım ve yükleyip çalıştırabilmek istiyorum, mümkün mü?
android geliştirici

1
Bir hata alırsam ne: çalıştırılacak etkinlik bulunamadı. iptal ediliyor mu?
IgorGanapolsky

3
@IgorGanapolsky hiçbir etkinlik bulunmadıysa, bir Hizmet uygulamasıdır ve hiç Etkinliği yoktur.
m3nda

1
@IgorGanapolsky bir hizmet kullanımı ise adb shell am startservice com.some.package.name/.YourServiceSubClassNameburaya bakın: stackoverflow.com/a/18703083/211292
ThomasW

123

Veya bunu kullanabilirsiniz:

adb shell am start -n com.package.name/.ActivityName

76
varsayılan ana etkinliğin başlayabilmesi için etkinlik adını belirtmeden bunu yapmak mümkün mü?
android geliştirici

5
@androiddeveloper Bkz maymun aşağıda komutu depodefi : gerek etkinlik adını belirtmek için!
1111161171159459134

8
EtkinlikAdını bilmiyorsam ne olur ?
IgorGanapolsky

2
Aşağıdaki girişi listeleyen ~ / android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apk komutunu çalıştırın: launchable-activity: name = 'com.company.android.package.YourLaunchableActivity'
JohnyTex

17
monkey -p com.package.name 1viaadb shell
Denys Vitali

60

linux / mac kullanıcıları, aşağıdaki gibi bir şeyle bir apk çalıştırmak için bir komut dosyası da oluşturabilir:

şu 3 satırla "adb-run.sh" adlı bir dosya oluşturun:

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act

daha sonra yürütülebilir kılmak için "chmod + x adb-run.sh".

şimdi şunları yapabilirsiniz:

adb-run.sh myapp.apk

Buradaki avantaj, paket adını veya yüklenebilir etkinlik adını bilmenize gerek olmamasıdır. Benzer şekilde, "adb-uninstall.sh myapp.apk" oluşturabilirsiniz.

Not: Bu, yolunuzda bir aapt olmasını gerektirir. SDK'daki yeni oluşturma araçları klasörü altında bulabilirsiniz.


windows için cygwin (denenmemiş) ile deneyebilirsiniz
dljava

3
Gönderin beni AWK aramamı sağladı. Devam ettim ve senaryonuzu yeniden oluşturdum. pastebin.com/X7X1SsFa
Kyle

2
Bu harika. Bu neden asla bilemeyeceğimiz standart bir adb komutu değil.
John Tyree

Adb-run.sh komut dosyasında PATH ayarını yaparsanız, yolunuzda ("android" olduğu sürece) aapt olması gerekmez: PATH = $ (dirname $ (hangi android)) /. ./build-tools/20.0.0:$PATH
Steve Lemke


21

Ayrıca bir şeyden daha bahsetmek istiyorum.

Bir uygulamayı başlattığınızda adb shell am, otomatik olarak davranış değişikliği yapan FLAG_ACTIVITY_NEW_TASK bayrağı ekler . Bkz kodu .

Örneğin, Play Store etkinliğini şuradan başlatırsanız adb shell am, ' Geri ' düğmesine (donanım geri düğmesi) basmak uygulamanızı almaz, bunun yerine bazılarınız varsa önceki Play Store etkinliğini alır (Play Store görevi yoksa , o zaman uygulamanızı alır). FLAG_ACTIVITY_NEW_TASK belgeleri şöyle diyor:

şu anda başlattığınız etkinlik için bir görev zaten çalışıyorsa, yeni bir etkinlik başlatılmaz; bunun yerine, mevcut görev ekranın ön tarafına son haliyle getirilir.

Bu, neyin yanlış gittiğini bulmak için birkaç saatimi harcamama neden oldu.

Bu nedenle, adb shell am FLAG_ACTIVITY_NEW_TASK bayrağını eklediğinizi unutmayın .


1
Ayrıca, rahatsız edici olan söz konusu bayrağı temizlemenin bir yolu olmadığını belirtmeye değer
Kedar Paranjape

16

Uygulama türünü bilerek ve verilerle besleyerek bir uygulama başlatabiliriz:

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

Bu komut, sample.3gp dosyasını oynatmak için mevcut Video Oynatıcıları görüntüler


15

Adım 1: İlk olarak, Cihazınızda yüklü uygulamaların tüm paket adını kullanarak şunu kullanın:

adb shell pm list packages

Adım 2: Tüm paket adlarını alacaksınız, adb'yi kullanmaya başlamak istediğinizi kopyalayın .

Adım 3: Aşağıdaki komutta istediğiniz paket adını ekleyin.

adb shell monkey -p 'your package name' -v 500

Örneğin:
adb shell monkey -p com.estrongs.android.pop -v 500 Es gezginini başlatmak için.


11
Bu, uygulamanızı başlatır ve 500 sahte rasgele olay gönderir. Bu yüzden '500'ü değiştirmek için' 1'i kullanın.
Lyn

14

~ / .bash_profile dosyasını açın ve bu bash işlevlerini dosyanın sonuna ekleyin

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

ardından Android proje klasörünü açın

androidinstall app-debug && androidrun com.example.app MainActivity

2
Ne yaptığını açıklayabilir misin app-debug?
JayQuerie.com

3
@TrevorSenior app-debug apk dosyasının başlığıdır, genellikle hata ayıklama modunda oluşturulan apk dosyası "APPLICATION NAME-debug.apk"
AbdullahDiaa

7

monkey --pct-syskeys 0 geliştirme panoları için

Bu argüman olmadan, uygulama anahtarlar / ekran olmadan bir geliştirme kartında açılmaz:

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

ve hata ile başarısız olur:

SYS_KEYS has no physical keys but with factor 2.0%

HiKey960, Android O AOSP üzerinde test edildi.

Öğrenilen: https://github.com/ARM-software/lisa/pull/408

Ayrıca sordu: maymun testi: Android sisteminde fiziksel tuşlar yoksa, komuta dahil edilmesi gereken parametreler nelerdir


2
adb shell am start -n '<appPackageName>/.<appActitivityName>

Ör:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

APK-INFO uygulamasını, her bir Uygulama Paketi ile ilgili Uygulama Etkinlikleri listesini bilmek için kullanabilirsiniz


0

Bir android fotoğraf uygulaması açmak ve parametre olarak açmak için belirli görüntü dosyası ile bunu deneyin.

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

En son android üzerinde çalışacak, görüntüyü açmak istediğiniz belirli bir uygulamayı verdiğinizde açmak için bir uygulama seçmek için hiçbir pop-up gelmeyecek


URL'den bir video akışı yapabilen bir oyuncu uygulamam var, bu URL'yi bir parametre olarak nasıl iletebilirim ve bu url'den akış yapabilirim? youtube'dan bir url varsayalım?
Vishnu
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.