Bagaimana cara memulai aplikasi menggunakan alat Android ADB?

Jawaban:

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

Atau Anda dapat menggunakan ini secara langsung:

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

Anda juga dapat menentukan tindakan yang akan difilter oleh filter niat Anda:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 
Cristian
sumber
23
Terima kasih banyak, saya telah membuatnya berfungsi shell di ~ / .bash_profile agar lebih cepat function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }dan penggunaannyaandroidrun com.example.test
AbdullahDiaa
3
adb shell amakan memberi Anda daftar opsi lain untuk diteruskan ke amperintah. Anda dapat mengetahui lebih lanjut di developer.android.com/tools/help/adb.html#am
Ehtesh Choudhury
1
@shurane Bagaimana saya bisa menemukan opsi -a?
ericyoung
21
apakah mungkin untuk menjalankan aktivitas default, alih-alih menjadi spesifik untuk aktivitas apa yang saya inginkan?
pengembang android
1
Saya memiliki masalah dalam menemukan aplikasi dan aktivitas. Saya menggunakan saluran pipa ini adb logcat | grep --line-buffered ActivityManager | grep --line-buffereduntuk mendaftar semua aplikasi yang ditampilkan.
Att Righ
299

Dimungkinkan untuk menjalankan aplikasi yang menentukan nama paket hanya menggunakan alat monyet dengan mengikuti pola ini:

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

Perintah digunakan untuk menjalankan aplikasi menggunakan alat monyet yang menghasilkan input acak untuk aplikasi. Bagian terakhir dari perintah adalah integer yang menentukan jumlah input acak yang dihasilkan untuk aplikasi. Dalam hal ini angkanya adalah 1, yang sebenarnya digunakan untuk meluncurkan aplikasi (klik ikon).

Michal
sumber
92
Peluncur adalah bawaan. Anda dapat menyederhanakan keadb shell monkey -p your.app.package.name 1
Androiderson
3
Apakah mungkin menggunakan nama file APK, bukan nama paket? Misalkan saya memiliki file APK, dan saya ingin dapat menginstal & menjalankannya, apakah mungkin?
pengembang android
1
Bagaimana jika saya mendapatkan kesalahan: tidak ada kegiatan yang ditemukan berjalan. batal ?
IgorGanapolsky
3
@IgorGanapolsky jika tidak ada kegiatan yang ditemukan, ini adalah aplikasi Layanan dan tidak memiliki Kegiatan sama sekali.
m3nda
1
@IgorGanapolsky jika itu adalah penggunaan layanan adb shell am startservice com.some.package.name/.YourServiceSubClassNamelihat di sini: stackoverflow.com/a/18703083/211292
ThomasW
123

Atau, Anda bisa menggunakan ini:

adb shell am start -n com.package.name/.ActivityName
Joilnen
sumber
76
apakah mungkin untuk melakukannya tanpa menentukan nama aktivitas, sehingga aktivitas utama default akan dimulai?
pengembang android
5
@androiddeveloper Lihat perintah monyet di bawah ini dari depodefi : tidak perlu menentukan nama aktivitas!
1111161171159459134
8
Bagaimana jika saya tidak tahu ActivityName ?
IgorGanapolsky
2
Jalankan ~ / android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apk, yang akan mencantumkan entri berikut: launchable-activity: name = 'com.company.android.package.YourLaunchableActivity'
JohnyTex
17
monkey -p com.package.name 1viaadb shell
Denys Vitali
60

pengguna linux / mac juga dapat membuat skrip untuk menjalankan apk dengan sesuatu seperti berikut:

buat file bernama "adb-run.sh" dengan 3 baris ini:

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

lalu "chmod + x adb-run.sh" untuk membuatnya dieksekusi.

sekarang Anda cukup:

adb-run.sh myapp.apk

Manfaatnya di sini adalah Anda tidak perlu tahu nama paket atau nama aktivitas yang dapat diluncurkan. Demikian pula, Anda dapat membuat "adb-uninstall.sh myapp.apk"

Catatan: Ini mengharuskan Anda memiliki aapt di jalur Anda. Anda dapat menemukannya di folder build tools baru di SDK.

dljava
sumber
untuk windows Anda dapat mencoba dengan cygwin (belum diuji)
dljava
3
Pos Anda membuat saya mencari di AWK. Saya melanjutkan dan membuat kembali skrip Anda. pastebin.com/X7X1SsFa
Kyle
2
Ini luar biasa. Mengapa ini bukan perintah adb standar yang kita tidak akan pernah tahu.
John Tyree
Anda tidak perlu memiliki aapt di jalur Anda (selama "android" adalah) jika Anda menetapkan PATH dalam skrip adb-run.sh, seperti ini: PATH = $ (dirname $ (yang android)) /. ./build-tools/20.0.0:$PATH
Steve Lemke
@dljava mengapa ini tidak berfungsi di play.google.com/store/apps/details?id=com.amaze.filemanager ?
WSS
21

Juga, saya ingin menyebutkan satu hal lagi.

Saat Anda memulai aplikasi adb shell am, itu secara otomatis menambahkan bendera FLAG_ACTIVITY_NEW_TASK yang membuat perubahan perilaku. Lihat kodenya .

Misalnya, jika Anda memulai aktivitas Play Store dari adb shell am, menekan tombol ' Kembali ' (tombol kembali perangkat keras) tidak akan membawa Anda aplikasi Anda, sebaliknya itu akan membawa Anda aktivitas Play Store sebelumnya jika ada beberapa (Jika tidak ada tugas Play Store , maka itu akan membawa Anda aplikasi Anda). Dokumentasi FLAG_ACTIVITY_NEW_TASK mengatakan:

jika tugas sudah berjalan untuk aktivitas yang Anda mulai sekarang, maka aktivitas baru tidak akan dimulai; sebagai gantinya, tugas saat ini hanya akan dibawa ke depan layar dengan status terakhir

Ini menyebabkan saya menghabiskan beberapa jam untuk mencari tahu apa yang salah.

Jadi, perlu diingat bahwa adb shell am menambahkan bendera FLAG_ACTIVITY_NEW_TASK .

김준호
sumber
1
Juga, perlu disebutkan bahwa tidak ada cara untuk membersihkan bendera yang menyebalkan
Kedar Paranjape
16

Kita juga dapat memulai suatu aplikasi dengan mengetahui tipe aplikasi dan mengisinya dengan data:

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

Perintah ini menampilkan Pemutar Video yang tersedia untuk memutar file sample.3gp

Anvesh Yalamarthy
sumber
15

Langkah 1: Pertama-tama dapatkan semua nama paket aplikasi yang diinstal di Perangkat Anda, dengan menggunakan:

adb shell pm list packages

Langkah 2: Anda akan mendapatkan semua nama paket, salin yang ingin Anda mulai gunakan adb.

Langkah 3: Tambahkan nama paket yang Anda inginkan dalam perintah di bawah ini.

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

Sebagai Contoh:
adb shell monkey -p com.estrongs.android.pop -v 500 untuk memulai Es explorer.

Tushar Pandey
sumber
11
Ini akan meluncurkan aplikasi Anda dan mengirim 500 peristiwa pseudo-acak ke sana. Jadi gunakan '1' untuk mengganti '500' lebih baik.
Lyn
14

buka ~ / .bash_profile dan tambahkan fungsi bash ini di akhir file

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

kemudian buka folder proyek Android

androidinstall app-debug && androidrun com.example.app MainActivity
AbdullahDiaa
sumber
2
Bisakah Anda menjelaskan apa app-debug?
JayQuerie.com
3
@TrevorSenior app-debug adalah judul file apk, biasanya dalam mode debug file apk yang dihasilkan berjudul "APLIKASI NAMA-debug.apk"
AbdullahDiaa
7

monkey --pct-syskeys 0 untuk papan pengembangan

Tanpa argumen ini, aplikasi tidak akan terbuka di papan pengembangan tanpa kunci / tampilan:

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

dan gagal dengan kesalahan:

SYS_KEYS has no physical keys but with factor 2.0%

Diuji pada HiKey960, Android O AOSP.

Belajar dari: https://github.com/ARM-software/lisa/pull/408

Juga ditanyakan di: uji monyet: Jika sistem Android tidak memiliki kunci fisik, parameter apa yang perlu dimasukkan dalam perintah

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
2
adb shell am start -n '<appPackageName>/.<appActitivityName>

Ex:

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

Anda dapat menggunakan aplikasi APK-INFO untuk mengetahui daftar Kegiatan Aplikasi sehubungan dengan setiap Paket Aplikasi

ImSaleem
sumber
0

Coba ini, untuk membuka aplikasi foto android & dengan file gambar tertentu untuk dibuka sebagai parameter.

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

Ini akan bekerja pada android terbaru, tidak akan muncul pop-up untuk memilih aplikasi yang akan dibuka karena Anda memberikan aplikasi spesifik yang ingin Anda buka gambarnya dengan

Varun Sharma
sumber
Saya memiliki aplikasi pemutar, yang dapat melakukan streaming video dari url, bagaimana saya bisa meneruskan url ini sebagai parameter dan streaming dari url itu? misalkan url dari youtube?
Wisnu