Vielen Dank, ich habe es Shell-Funktion in ~ / .bash_profile gemacht, um viel schneller zu sein function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }und seine Verwendungandroidrun com.example.test
AbdullahDiaa
3
adb shell amgibt Ihnen eine Liste anderer Optionen, die Sie an den amBefehl übergeben können. Weitere
Informationen
1
@shurane Wie finde ich -a Option?
Ericyoung
21
Ist es möglich, die Standardaktivität auszuführen, anstatt so spezifisch zu sein, welche Aktivität ich starten möchte?
Android-Entwickler
1
Ich hatte Probleme, die Anwendung und Aktivität zu finden. Ich habe diese Pipeline verwendet, adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedum alle angezeigten Anwendungen aufzulisten.
Att Righ
299
Es ist möglich, eine Anwendung unter Angabe des Paketnamens nur mit dem Affen- Tool auszuführen, indem Sie diesem Muster folgen:
Mit dem Befehl wird die App mit dem Affen-Tool ausgeführt, das zufällige Eingaben für die Anwendung generiert. Der letzte Teil des Befehls ist eine Ganzzahl, die die Anzahl der generierten Zufallseingaben für die App angibt. In diesem Fall ist die Nummer 1, die tatsächlich zum Starten der App verwendet wird (Symbolklick).
Launcher ist Standard. Sie können vereinfachen, umadb shell monkey -p your.app.package.name 1
Androiderson
3
Ist es möglich, den APK-Dateinamen anstelle des Paketnamens zu verwenden? Angenommen, ich habe eine APK-Datei und möchte sie installieren und ausführen können. Ist dies möglich?
Android-Entwickler
1
Was passiert, wenn eine Fehlermeldung angezeigt wird? Es wurden keine Aktivitäten zum Ausführen gefunden. abbrechen ?
IgorGanapolsky
3
@IgorGanapolsky Wenn keine Aktivitäten gefunden wurden, handelt es sich um eine Service-App, die überhaupt keine Aktivität enthält.
m3nda
1
@IgorGanapolsky, wenn es sich um eine Dienstnutzung handelt, adb shell am startservice com.some.package.name/.YourServiceSubClassNamesiehe hier: stackoverflow.com/a/18703083/211292
ThomasW
122
Oder Sie könnten dies verwenden:
adb shell am start -n com.package.name/.ActivityName
Ist es möglich, dies ohne Angabe des Aktivitätsnamens zu tun, damit die Standardhauptaktivität gestartet wird?
Android-Entwickler
5
@androiddeveloper Siehe Affen Befehl unten aus depodefi : Sie brauchen keine Aktivität Namen angeben!
1111161171159459134
8
Was ist, wenn ich den Aktivitätsnamen nicht kenne ?
IgorGanapolsky
2
Führen Sie ~ / android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apk aus, in dem der folgende Eintrag aufgeführt ist: launchable-activity: name = 'com.company.android.package.YourLaunchableActivity'
JohnyTex
17
monkey -p com.package.name 1viaadb shell
Denys Vitali
60
Linux / Mac-Benutzer können auch ein Skript erstellen, um eine Apk mit den folgenden Funktionen auszuführen:
Erstellen Sie eine Datei mit dem Namen "adb-run.sh" mit diesen drei Zeilen:
dann "chmod + x adb-run.sh", um es ausführbar zu machen.
Jetzt können Sie einfach:
adb-run.sh myapp.apk
Der Vorteil hierbei ist, dass Sie den Paketnamen oder den Namen der startbaren Aktivität nicht kennen müssen. Ebenso können Sie "adb-uninstall.sh myapp.apk" erstellen.
Hinweis: Dies setzt voraus, dass Sie Aapt in Ihrem Pfad haben. Sie finden es im SDK unter dem Ordner "Neue Build-Tools".
für Windows können Sie mit Cygwin (ungetestet) versuchen
dljava
3
Ihr Beitrag hat mich dazu gebracht, AWK nachzuschlagen. Ich habe Ihr Skript neu erstellt. pastebin.com/X7X1SsFa
Kyle
2
Das ist fabelhaft. Warum dies kein Standard-ADB-Befehl ist, werden wir nie erfahren.
John Tyree
Sie müssen kein Aapt in Ihrem Pfad haben (solange "android" ist), wenn Sie den Pfad im Skript adb-run.sh wie folgt festlegen: PATH = $ (dirname $ (welcher Android)) /. ./build-tools/20.0.0:$PATH
Wenn Sie eine Anwendung starten adb shell am, wird automatisch das Flag FLAG_ACTIVITY_NEW_TASK hinzugefügt, wodurch sich das Verhalten ändert. Siehe den Code .
Zum Beispiel, wenn Sie die Play Store-Aktivität von starten adb shell am , wird durch Drücken der Schaltfläche " Zurück " (Hardware-Zurück-Schaltfläche) nicht Ihre App angezeigt, sondern die vorherige Play Store-Aktivität, wenn einige vorhanden waren (wenn keine Play Store-Aufgabe vorhanden war) , dann würde es dir deine App bringen). In der Dokumentation zu FLAG_ACTIVITY_NEW_TASK heißt es:
Wenn für die Aktivität, die Sie gerade starten, bereits eine Aufgabe ausgeführt wird, wird keine neue Aktivität gestartet. Stattdessen wird die aktuelle Aufgabe einfach mit dem Status, in dem sie zuletzt war, an die Vorderseite des Bildschirms gebracht
Dies veranlasste mich, einige Stunden damit zu verbringen, herauszufinden, was schief gelaufen ist.
Denken Sie also daran, dass adb shell amSie das Flag FLAG_ACTIVITY_NEW_TASK hinzufügen .
@TrevorSenior App-Debug ist der Titel der Apk-Datei, normalerweise im Debug-Modus trägt die generierte Apk-Datei den Titel "APPLICATION NAME-debug.apk"
AbdullahDiaa
7
monkey --pct-syskeys 0 für Entwicklungsboards
Ohne dieses Argument wird die App auf einem Entwicklungsboard ohne Schlüssel / Anzeige nicht geöffnet:
Versuchen Sie dies, um eine Android-Foto-App zu öffnen und eine bestimmte Bilddatei als Parameter zu öffnen.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Es funktioniert auf dem neuesten Android, es wird kein Popup angezeigt, um eine Anwendung zum Öffnen auszuwählen, da Sie eine bestimmte App angeben, mit der Sie Ihr Bild öffnen möchten
Ich habe eine Player-App, die ein Video von einer URL streamen kann. Wie kann ich diese URL als Parameter übergeben und von dieser URL streamen? Angenommen, eine URL von YouTube?
Antworten:
Oder Sie können dies direkt verwenden:
Sie können auch Aktionen angeben, die durch Ihre Absichtsfilter gefiltert werden sollen:
quelle
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
und seine Verwendungandroidrun com.example.test
adb shell am
gibt Ihnen eine Liste anderer Optionen, die Sie an denam
Befehl übergeben können. Weitereadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
um alle angezeigten Anwendungen aufzulisten.Es ist möglich, eine Anwendung unter Angabe des Paketnamens nur mit dem Affen- Tool auszuführen, indem Sie diesem Muster folgen:
Mit dem Befehl wird die App mit dem Affen-Tool ausgeführt, das zufällige Eingaben für die Anwendung generiert. Der letzte Teil des Befehls ist eine Ganzzahl, die die Anzahl der generierten Zufallseingaben für die App angibt. In diesem Fall ist die Nummer 1, die tatsächlich zum Starten der App verwendet wird (Symbolklick).
quelle
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
siehe hier: stackoverflow.com/a/18703083/211292Oder Sie könnten dies verwenden:
quelle
monkey -p com.package.name 1
viaadb shell
Linux / Mac-Benutzer können auch ein Skript erstellen, um eine Apk mit den folgenden Funktionen auszuführen:
Erstellen Sie eine Datei mit dem Namen "adb-run.sh" mit diesen drei Zeilen:
dann "chmod + x adb-run.sh", um es ausführbar zu machen.
Jetzt können Sie einfach:
adb-run.sh myapp.apk
Der Vorteil hierbei ist, dass Sie den Paketnamen oder den Namen der startbaren Aktivität nicht kennen müssen. Ebenso können Sie "adb-uninstall.sh myapp.apk" erstellen.
Hinweis: Dies setzt voraus, dass Sie Aapt in Ihrem Pfad haben. Sie finden es im SDK unter dem Ordner "Neue Build-Tools".
quelle
Ich möchte noch eine Sache erwähnen.
Wenn Sie eine Anwendung starten
adb shell am
, wird automatisch das Flag FLAG_ACTIVITY_NEW_TASK hinzugefügt, wodurch sich das Verhalten ändert. Siehe den Code .Zum Beispiel, wenn Sie die Play Store-Aktivität von starten
adb shell am
, wird durch Drücken der Schaltfläche " Zurück " (Hardware-Zurück-Schaltfläche) nicht Ihre App angezeigt, sondern die vorherige Play Store-Aktivität, wenn einige vorhanden waren (wenn keine Play Store-Aufgabe vorhanden war) , dann würde es dir deine App bringen). In der Dokumentation zu FLAG_ACTIVITY_NEW_TASK heißt es:Dies veranlasste mich, einige Stunden damit zu verbringen, herauszufinden, was schief gelaufen ist.
Denken Sie also daran, dass
adb shell am
Sie das Flag FLAG_ACTIVITY_NEW_TASK hinzufügen .quelle
Wir können eine Anwendung auch starten, indem wir den Anwendungstyp kennen und ihn mit Daten versorgen:
Dieser Befehl zeigt verfügbare Video-Player zum Abspielen der sample.3gp- Datei an
quelle
Schritt 1: Rufen Sie zuerst den gesamten Paketnamen der auf Ihrem Gerät installierten Apps ab, indem Sie Folgendes verwenden:
adb shell pm list packages
Schritt 2: Sie erhalten alle Paketnamen. Kopieren Sie den Namen, den Sie mit adb starten möchten.
Schritt 3: Fügen Sie im folgenden Befehl den gewünschten Paketnamen hinzu.
adb shell monkey -p 'your package name' -v 500
quelle
Öffnen Sie ~ / .bash_profile und fügen Sie diese Bash-Funktionen am Ende der Datei hinzu
Öffnen Sie dann den Android-Projektordner
quelle
app-debug
tut?monkey --pct-syskeys 0
für EntwicklungsboardsOhne dieses Argument wird die App auf einem Entwicklungsboard ohne Schlüssel / Anzeige nicht geöffnet:
und schlägt mit Fehler fehl:
Getestet auf HiKey960, Android O AOSP.
Gelernt von: https://github.com/ARM-software/lisa/pull/408
Ebenfalls gefragt unter: Affentest: Wenn das Android-System keine physischen Schlüssel hat, welche Parameter müssen in den Befehl aufgenommen werden
quelle
Ex:
Sie können die APK-INFO-Anwendung verwenden, um die Liste der App-Aktivitäten für jedes App-Paket zu kennen
quelle
Versuchen Sie dies, um eine Android-Foto-App zu öffnen und eine bestimmte Bilddatei als Parameter zu öffnen.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Es funktioniert auf dem neuesten Android, es wird kein Popup angezeigt, um eine Anwendung zum Öffnen auszuwählen, da Sie eine bestimmte App angeben, mit der Sie Ihr Bild öffnen möchten
quelle