Як запустити програму за допомогою інструментів ADB для android?


Відповіді:


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

Або ви можете використовувати це безпосередньо:

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

Ви також можете вказати дії, які потрібно фільтрувати, за допомогою ваших фільтрів намірів:

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

23
Дуже дякую, я зробив функцію оболонки в ~ / .bash_profile набагато швидшою function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }і її використанняandroidrun com.example.test
AbdullahDiaa

3
adb shell amдасть вам список інших варіантів для переходу до amкоманди. Детальніше ви можете дізнатися на сайті developer.android.com/tools/help/adb.html#am
Ехтеш Чудхурі

1
@shurane Як знайти варіант -a?
ericyoung

21
чи можна запускати активність за замовчуванням, замість того, щоб бути настільки конкретним, з якої діяльності я маю намір її почати?
андроїд розробник

1
У мене виникли проблеми з пошуком програми та активності. Я використовував цю трубопровід, adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedщоб перелічити всі програми, які відображалися.
Att Righ

299

Можна запустити додаток із зазначенням імені пакета лише за допомогою інструменту мавпи , дотримуючись цього шаблону:

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

Команда використовується для запуску програми за допомогою інструменту мавпи, який генерує випадковий вхід для програми. Остання частина команди - ціле число, яке визначає кількість генерованого випадкового введення для програми. У цьому випадку число дорівнює 1, яке фактично використовується для запуску програми (клацання піктограми).


91
Запуск за замовчуванням. Можна спростити доadb shell monkey -p your.app.package.name 1
Androiderson

3
Чи можливо використовувати ім’я файлу APK замість імені пакета? Припустимо, у мене є файл APK, і я хочу мати змогу його встановити та запустити, чи це можливо?
андроїд розробник

1
Що робити, якщо я отримую помилку: не знайдено жодної діяльності, яку потрібно виконати. аборт ?
ІгорГанапольський

3
@IgorGanapolsky, якщо ніяких дій не знайдено, це додаток Сервісу та не має жодної активності.
м3нда

1
@IgorGanapolsky якщо це використання послуг adb shell am startservice com.some.package.name/.YourServiceSubClassNameдивіться тут: stackoverflow.com/a/18703083/211292
ThomasW

122

Або ви можете скористатися цим:

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

75
чи можна це зробити без вказівки назви діяльності, щоб запустити основну діяльність за замовчуванням?
андроїд розробник

5
@androiddeveloper Дивіться команду мавпи нижче від depodefi : не потрібно вказувати ім’я діяльності!
1111161171159459134

8
Що робити, якщо я не знаю імені Activity ?
ІгорГанапольський

2
Запустіть ~ / android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apk, у якому буде вказано наступний запис: запуск-активність: name = 'com.company.android.package.YourLaunchableActivity'
JohnyTex

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

60

Користувачі linux / mac також можуть створити сценарій для запуску apk із чимось подібним:

створіть файл під назвою "adb-run.sh" з цими 3 рядками:

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

потім "chmod + x adb-run.sh", щоб зробити його виконуваним.

тепер ви можете просто:

adb-run.sh myapp.apk

Перевага тут полягає в тому, що вам не потрібно знати назву пакета або назву запущеної активності. Так само ви можете створити "adb-uninstall.sh myapp.apk"

Примітка. Це вимагає, щоб ви пройшли шлях. Ви можете знайти його в новій папці інструментів побудови в SDK.


для Windows ви можете спробувати з cygwin (неперевірений)
dljava

3
Ваш пост змусив мене шукати AWK. Я пішов і перетворив ваш сценарій. pastebin.com/X7X1SsFa
Кайл

2
Це казково. Чому це не стандартна команда adb, яку ми ніколи не дізнаємось.
Джон Тайрі

Вам не потрібно буде мати aapt у своєму шляху (якщо "android"), якщо ви встановите PATH в сценарії adb-run.sh, наприклад так: PATH = $ (dirname $ (який android)) /. ./build-tools/20.0.0:$PATH
Стів Лемке

@dljava, чому це не працює на play.google.com/store/apps/details?id=com.amaze.filemanager ?
WSS

21

Також хочу згадати ще одне.

Коли ви запускаєте програму adb shell am, вона автоматично додає прапор FLAG_ACTIVITY_NEW_TASK який змінює поведінку. Дивіться код .

Наприклад, якщо ви запустили діяльність в Play Store з adb shell am, натискання кнопки " Назад " (кнопка повернення апарату) не спричинить вам ваше додаток, натомість це займе попередню активність Play Store, якщо вона була такою (Якщо не було завдання Play Play Store) , тоді це займе у вас додаток). Документація FLAG_ACTIVITY_NEW_TASK говорить:

якщо завдання вже виконується для тієї діяльності, яку ви зараз починаєте, нова активність не буде запущена; натомість поточне завдання буде просто виведене на передню частину екрана із станом, в якому він був останній

Це змусило мене витратити кілька годин, щоб з’ясувати, що пішло не так.

Тож майте на увазі, що adb shell am додайте прапор FLAG_ACTIVITY_NEW_TASK .


1
Також варто згадати, що немає ніякого способу очистити зазначений прапор, який дратує
Кедар Паранджапе

16

Ми також можемо запустити програму, дізнавшись тип програми та подаючи її даними:

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

Ця команда відображає доступні відеоплеєри для відтворення файлу sample.3gp


15

Крок 1. Спершу отримайте все ім'я пакета програм, встановлених на пристрої, використовуючи:

adb shell pm list packages

Крок 2: Ви отримаєте всі назви пакету, скопіюйте той, який ви хочете почати використовувати adb.

Крок 3: Додайте бажане ім'я пакета в команду нижче.

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

Наприклад:
adb shell monkey -p com.estrongs.android.pop -v 500 для запуску програми Explorer.


11
Це запустить вашу програму і надішле на неї 500 псевдовипадкових подій. Тому використовуйте "1", щоб замінити "500" краще.
Лін

14

відкрийте ~ / .bash_profile і додайте ці функції bash до кінця файлу

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

потім відкрийте папку проектів Android

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

2
Чи можете ви пояснити, що app-debugробить?
JayQuerie.com

3
@TrevorSenior app-debug - це назва файлу apk, зазвичай в режимі налагодження сформований файл apk має назву "APPLICATION NAME-debug.apk"
AbdullahDiaa

7

monkey --pct-syskeys 0 для дощок розвитку

Без цього аргументу додаток не відкриється на платі розробки без клавіш / дисплея:

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

і виходить з помилки:

SYS_KEYS has no physical keys but with factor 2.0%

Тестовано на HiKey960, Android O AOSP.

Довідався з: https://github.com/ARM-software/lisa/pull/408

Також запитують у: тест мавпи: Якщо система Android не має фізичних ключів, то які параметри потрібно включити в команду


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

Наприклад:

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

Ви можете скористатися програмою APK-INFO, щоб знати список дій у додатках стосовно кожного пакету додатків


0

Спробуйте це, щоб відкрити додаток для фотографій Android та з певним файлом зображення, який відкриється як параметр.

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

Він буде працювати на останньому Android, не з’явиться спливаюче вікно, щоб вибрати програму, яку потрібно відкрити, оскільки ви надаєте конкретну програму, для якої ви хочете відкрити своє зображення


У мене є програвач програвача, який здатний передавати відео з URL-адреси, як я можу передати цей URL-адресу як параметр і потік із цього URL-адреси? припустимо URL-адресу з YouTube?
Вішну
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.