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
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:
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).
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
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.
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
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 ammenambahkan bendera FLAG_ACTIVITY_NEW_TASK .
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
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?
Jawaban:
Atau Anda dapat menggunakan ini secara langsung:
Anda juga dapat menentukan tindakan yang akan difilter oleh filter niat Anda:
sumber
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
dan penggunaannyaandroidrun com.example.test
adb shell am
akan memberi Anda daftar opsi lain untuk diteruskan keam
perintah. Anda dapat mengetahui lebih lanjut di developer.android.com/tools/help/adb.html#amadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
untuk mendaftar semua aplikasi yang ditampilkan.Dimungkinkan untuk menjalankan aplikasi yang menentukan nama paket hanya menggunakan alat monyet dengan mengikuti pola ini:
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).
sumber
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
lihat di sini: stackoverflow.com/a/18703083/211292Atau, Anda bisa menggunakan ini:
sumber
monkey -p com.package.name 1
viaadb shell
pengguna linux / mac juga dapat membuat skrip untuk menjalankan apk dengan sesuatu seperti berikut:
buat file bernama "adb-run.sh" dengan 3 baris ini:
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.
sumber
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: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
Kita juga dapat memulai suatu aplikasi dengan mengetahui tipe aplikasi dan mengisinya dengan data:
Perintah ini menampilkan Pemutar Video yang tersedia untuk memutar file sample.3gp
sumber
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
sumber
buka ~ / .bash_profile dan tambahkan fungsi bash ini di akhir file
kemudian buka folder proyek Android
sumber
app-debug
?monkey --pct-syskeys 0
untuk papan pengembanganTanpa argumen ini, aplikasi tidak akan terbuka di papan pengembangan tanpa kunci / tampilan:
dan gagal dengan kesalahan:
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
sumber
Ex:
Anda dapat menggunakan aplikasi APK-INFO untuk mengetahui daftar Kegiatan Aplikasi sehubungan dengan setiap Paket Aplikasi
sumber
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
sumber