Dziękuję bardzo, wprowadziłem funkcję powłoki w ~ / .bash_profile, aby była znacznie szybsza function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }i jej użycieandroidrun com.example.test
czy możliwe jest uruchomienie domyślnego działania, zamiast być tak konkretnym, jakie działanie zamierzam rozpocząć?
programista Androida
1
Miałem problemy ze znalezieniem aplikacji i aktywności. Użyłem tej linii rur adb logcat | grep --line-buffered ActivityManager | grep --line-buffereddo wyświetlenia wszystkich wyświetlanych aplikacji.
Att Righ
299
Możliwe jest uruchomienie aplikacji określającej nazwę pakietu tylko za pomocą narzędzia małpującego , postępując według następującego wzoru:
Polecenie służy do uruchamiania aplikacji za pomocą małpiego narzędzia, które generuje losowe dane wejściowe dla aplikacji. Ostatnią częścią polecenia jest liczba całkowita, która określa liczbę generowanych losowych danych wejściowych dla aplikacji. W tym przypadku liczba to 1, która w rzeczywistości służy do uruchomienia aplikacji (kliknięcie ikony).
Launcher jest domyślny. Możesz uprościćadb shell monkey -p your.app.package.name 1
Androiderson
3
Czy można użyć nazwy pliku APK zamiast nazwy pakietu? Załóżmy, że mam plik APK i chcę go zainstalować i uruchomić, czy to możliwe?
programista Androida
1
Co się stanie, jeśli wystąpi błąd: nie znaleziono żadnych działań do uruchomienia. przerywasz ?
IgorGanapolsky
3
@IgorGanapolsky, jeśli nie znaleziono żadnych działań, jest to aplikacja Service i nie ma żadnej aktywności.
m3nda
1
@IgorGanapolsky, jeśli jest to usługa, adb shell am startservice com.some.package.name/.YourServiceSubClassNamepatrz tutaj: stackoverflow.com/a/18703083/211292
ThomasW
122
Lub możesz użyć tego:
adb shell am start -n com.package.name/.ActivityName
Twój post kazał mi spojrzeć na AWK. Poszedłem i odtworzyłem twój skrypt. pastebin.com/X7X1SsFa
Kyle
2
To jest wspaniałe. Dlaczego nie jest to standardowe polecenie adb, którego nigdy nie poznamy.
John Tyree
Nie będziesz musiał mieć aapt na swojej ścieżce (o ile „android” to), jeśli ustawisz ŚCIEŻKĘ w skrypcie adb-run.sh, tak jak poniżej: ŚCIEŻKA = $ (dirname $ (który android)) /. ./build-tools/20.0.0:$PATH
Po uruchomieniu aplikacji z adb shell am, to automatycznie dodaje FLAG_ACTIVITY_NEW_TASK flagę , która sprawia, że zmiany zachowań. Zobacz kod .
Na przykład, jeśli uruchomisz aktywność w Sklepie Play adb shell am, naciśnięcie przycisku „ Wstecz ” (sprzętowy przycisk Wstecz) nie spowoduje przeniesienia Twojej aplikacji, zamiast tego zajęłoby Ci poprzednią aktywność w Sklepie Play, jeśli taka była (Jeśli nie było zadania Sklep Play , to zajmie Ci aplikację). Dokumentacja FLAG_ACTIVITY_NEW_TASK mówi:
jeśli zadanie jest już uruchomione dla działania, które właśnie zaczynasz, nowe działanie nie zostanie uruchomione; zamiast tego bieżące zadanie zostanie po prostu przeniesione na przód ekranu w stanie, w jakim było ostatnio
To spowodowało, że spędziłem kilka godzin, aby dowiedzieć się, co poszło nie tak.
Pamiętaj więc, że adb shell amdodaj flagę FLAG_ACTIVITY_NEW_TASK .
Wypróbuj to, aby otworzyć aplikację do zdjęć na Androida i z określonym plikiem obrazu, który ma zostać otwarty jako parametr.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Będzie działał na najnowszym Androidzie, nie pojawi się wyskakujące okienko, aby wybrać aplikację do otwarcia, gdy podajesz konkretną aplikację, w której chcesz otworzyć obraz
Mam aplikację odtwarzacza, która może przesyłać strumieniowo wideo z adresu URL, jak mogę przekazać ten adres URL jako parametr i przesyłać strumieniowo z tego adresu? przypuśćmy, że URL z youtube?
Odpowiedzi:
Lub możesz użyć tego bezpośrednio:
Możesz również określić akcje, które mają być filtrowane według filtrów zamiarów:
źródło
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
i jej użycieandroidrun com.example.test
adb shell am
poda ci listę innych opcji do przekazania doam
polecenia. Możesz dowiedzieć się więcej na stronie developer.android.com/tools/help/adb.html#amadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
do wyświetlenia wszystkich wyświetlanych aplikacji.Możliwe jest uruchomienie aplikacji określającej nazwę pakietu tylko za pomocą narzędzia małpującego , postępując według następującego wzoru:
Polecenie służy do uruchamiania aplikacji za pomocą małpiego narzędzia, które generuje losowe dane wejściowe dla aplikacji. Ostatnią częścią polecenia jest liczba całkowita, która określa liczbę generowanych losowych danych wejściowych dla aplikacji. W tym przypadku liczba to 1, która w rzeczywistości służy do uruchomienia aplikacji (kliknięcie ikony).
źródło
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
patrz tutaj: stackoverflow.com/a/18703083/211292Lub możesz użyć tego:
źródło
monkey -p com.package.name 1
viaadb shell
Użytkownicy Linuksa / Mac mogą również utworzyć skrypt do uruchamiania apk z następującymi elementami:
utwórz plik o nazwie „adb-run.sh” z tymi 3 liniami:
następnie „chmod + x adb-run.sh”, aby uczynić go wykonywalnym.
teraz możesz po prostu:
adb-run.sh myapp.apk
Zaletą jest to, że nie musisz znać nazwy pakietu ani nazwy czynności uruchamialnej. Podobnie możesz utworzyć „adb-uninstall.sh myapp.apk”
Uwaga: Wymaga to posiadania aapt na swojej drodze. Można go znaleźć w nowym folderze narzędzi do kompilacji w zestawie SDK.
źródło
Chcę też wspomnieć o jeszcze jednej rzeczy.
Po uruchomieniu aplikacji z
adb shell am
, to automatycznie dodaje FLAG_ACTIVITY_NEW_TASK flagę , która sprawia, że zmiany zachowań. Zobacz kod .Na przykład, jeśli uruchomisz aktywność w Sklepie Play
adb shell am
, naciśnięcie przycisku „ Wstecz ” (sprzętowy przycisk Wstecz) nie spowoduje przeniesienia Twojej aplikacji, zamiast tego zajęłoby Ci poprzednią aktywność w Sklepie Play, jeśli taka była (Jeśli nie było zadania Sklep Play , to zajmie Ci aplikację). Dokumentacja FLAG_ACTIVITY_NEW_TASK mówi:To spowodowało, że spędziłem kilka godzin, aby dowiedzieć się, co poszło nie tak.
Pamiętaj więc, że
adb shell am
dodaj flagę FLAG_ACTIVITY_NEW_TASK .źródło
Równie dobrze możemy uruchomić aplikację, znając jej typ i zasilając ją danymi:
To polecenie wyświetla dostępne odtwarzacze wideo do odtwarzania pliku sample.3gp
źródło
Krok 1: Najpierw uzyskaj wszystkie nazwy pakietów aplikacji zainstalowanych na Twoim urządzeniu, używając:
adb shell pm list packages
Krok 2: Otrzymasz wszystkie nazwy pakietów, skopiuj ten, który chcesz zacząć używać adb.
Krok 3: Dodaj żądaną nazwę pakietu w poniższym poleceniu.
adb shell monkey -p 'your package name' -v 500
źródło
otwórz ~ / .bash_profile i dodaj te funkcje bash na końcu pliku
następnie otwórz folder projektu Androida
źródło
app-debug
robi?monkey --pct-syskeys 0
dla płyt rozwojowychBez tego argumentu aplikacja nie otworzy się na płycie programistycznej bez klawiszy / wyświetlacza:
i kończy się błędem:
Testowane na HiKey960, Android O AOSP.
Dowiedz się od: https://github.com/ARM-software/lisa/pull/408
Pytanie również: test małpy: jeśli system Android nie ma fizycznych kluczy, jakie parametry należy uwzględnić w poleceniu
źródło
Dawny:
Możesz użyć aplikacji APK-INFO, aby poznać listę działań aplikacji w odniesieniu do każdego pakietu aplikacji
źródło
Wypróbuj to, aby otworzyć aplikację do zdjęć na Androida i z określonym plikiem obrazu, który ma zostać otwarty jako parametr.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Będzie działał na najnowszym Androidzie, nie pojawi się wyskakujące okienko, aby wybrać aplikację do otwarcia, gdy podajesz konkretną aplikację, w której chcesz otworzyć obraz
źródło