ADB-tips en -trucs: opdrachten waarvan elke hoofdgebruiker op de hoogte moet zijn

Er is veel in de Android Debug Bridge waarvan u misschien nog niet op de hoogte bent. Klik hier voor enkele handige tips en trucs voor het gebruik van ADB!

Snelle koppelingen

  • Shell-toegang
  • Verbinding maken met meerdere apparaten
  • Bestanden overbrengen
  • Loggen
  • Lijst met geïnstalleerde apps via ADB
  • Apps installeren en verwijderen via ADB
  • APK's extraheren met ADB
  • Back-up maken en herstellen van applicatiegegevens
  • App-componenten vermelden
  • Lancering van activiteiten, diensten en uitzendingsontvangers
  • Bijna elke app in- en uitschakelen
  • Schermafbeeldingen maken
  • Overdracht van binaire gegevens tussen de pc en het Android-apparaat

Als je een Android-liefhebber bent die op de loer ligt in de modding-scene, of al een tijdje app-ontwikkelaar bent Vroeg of laat zul je een handige tool tegenkomen genaamd de Android Debug Bridge, of ADB voor kort. Het wordt veelvuldig gebruikt in Android Studio als hulpprogramma voor de opdrachtregel. Android-ontwikkelaars gebruiken het ook als een zelfstandige oplossing om apps handmatig te installeren en te testen Android-smartphones evenals geëmuleerde Android-apparaten.

Maar er is veel dat ADB kan doen, en het meeste ervan is niet alleen nuttig voor ontwikkelaars. Zelfs als u geen ontwikkelaar bent en dit artikel leest, is de kans groot dat u ADB waarschijnlijk een of twee keer hebt gebruikt om een app sideloaden of een toestemming aanpassen. Maar dat is niet het enige waarvoor ADB kan worden gebruikt. Blijf lezen voor enkele tips en trucs voor het gebruik van ADB waarvan u misschien nog niet wist.

U moet ADB actief hebben op uw computer. Bekijk zeker ons artikel over Hoe ADB te installeren als je hulp nodig hebt. Als u Windows gebruikt, moet u dit ook doen installeer de juiste OEM USB-stuurprogramma's voor uw Android-apparaat.

Shell-toegang

Als u ADB eerder hebt gebruikt, bent u er misschien aan gewend om opdrachten allemaal op één regel uit te voeren. Maar u kunt ADB ook gebruiken om een ​​terminalshell op uw apparaat te openen en opdrachten rechtstreeks uit te voeren. En het is gemakkelijk!

In uw terminal- of opdrachtpromptvenster:

adb shell

Je wordt dan begroet met een $ symbool waar u opdrachten rechtstreeks op uw apparaat kunt uitvoeren.

Verbinding maken met meerdere apparaten

ADB kan tegelijkertijd met meerdere apparaten communiceren. In dergelijke scenario's moet u echter het doelapparaat opgeven wanneer u ADB-opdrachten geeft.

Om dit te doen, moet u het serienummer van het doelapparaat weten. U kunt het serienummer verkrijgen door de opdracht devices te gebruiken:

adb devices

Gebruik nu de -s optie om het serienummer van het doelapparaat op te geven. Voorbeeld:

adb -s <serialnumber> shell

Bestanden overbrengen

Voor liefhebbers van de opdrachtregel biedt ADB een zeer eenvoudige manier om bestanden van en naar uw Android-apparaat over te brengen. Gebruik gewoon de pull opdracht om bestanden en mappen van het apparaat en de push opdracht om bestanden en mappen naar het apparaat te kopiëren:

Als u een bestand of map met de submappen naar het Android-apparaat wilt kopiëren:

adb push local_path device_path
  • Voorbeeld: adb push D:\image.png /sdcard

Met de volgende opdracht kopieert u een bestand of map met de submappen van het Android-apparaat naar de host-pc:

adb pull device_path local_path
  • Voorbeeld: adb pull /sdcard/backup_April.tar D:\Backup

Loggen

Android Studio biedt de Logcat-venster, dat het in realtime weergeven van logboeken van uw apparaat ondersteunt. Het is echter niet bepaald nuttig voor batchverwerking. Gelukkig worden Android-apparaten geleverd met de logcat-opdracht die beschikbaar is via ADB en die kan worden gebruikt om systeem- en applicatielogboekberichten te dumpen en op het scherm af te drukken.

De basissyntaxis is als volgt:

adb logcat

Voor meer informatie, bekijk onze tutorial op hoe u systeemlogcats, kernellogs en dmesg op Android kunt gebruiken.

Paas eieren

Google biedt twee handige paaseieren gerelateerd aan de logcat-opdracht.

  1. De eerste is lolcat, een knipoog naar de LOLcat-meme. Het geeft dezelfde uitvoer als het reguliere logcat-commando.
    adb lolcat
  2. De tweede is longcat, wat gelijk is aan het logcat -v long commando. Het toont alle metadatavelden en afzonderlijke berichten met een lege regel.
    adb longcat

Lijst met geïnstalleerde apps via ADB

Om de geïnstalleerde apps op uw apparaat te bekijken, kunt u de volgende opdracht gebruiken:

adb shell pm list packages

Hierdoor wordt een lijst met de pakketnamen van de geïnstalleerde apps geretourneerd, waarbij elke app op een eigen regel wordt voorafgegaan door package:.

Opties

Er zijn ook enkele opties die u kunt gebruiken om specifiekere lijsten op te halen.

  • -F bevat voor elke app het pad naar de basis-APK, samen met de pakketnaam.
  • -A zal ervoor zorgen dat alle bekende niet-APEX-pakketten worden geretourneerd.
  • -D zal ervoor zorgen dat de opdracht alleen uitgeschakelde pakketten retourneert.
  • -e zal ervoor zorgen dat de opdracht alleen ingeschakelde pakketten retourneert.
  • -S zorgt ervoor dat de opdracht alleen systeempakketten retourneert.
  • -3 zorgt ervoor dat de opdracht alleen pakketten van derden retourneert.
  • -i bevat voor elk pakket de naam van het installatiepakket.
  • -U bevat de pakket-UID voor elk pakket.
  • -u omvat niet-geïnstalleerde pakketten.
  • --show-versiecode bevat de versiecode voor elk pakket.
  • --alleen apex retourneert alleen APEX-pakketten.
  • --uid toont alleen pakketten met de opgegeven UID.
  • --gebruiker toont alleen pakketten die bij het opgegeven gebruikers-ID horen.

Apps installeren en verwijderen via ADB

Dit is een relatief algemeen gebruik van ADB, maar het is toch het vermelden waard. U kunt onder andere ook gebruik maken van ADB Android-apps installeren en verwijderen naar uw Android-apparaat.

Een APK installeren

Als u een APK op uw computer heeft, kunt u deze als volgt op uw apparaat installeren:

adbinstall-rsomeapk.apk

Vergeet niet te vervangen someapk.apk met het volledige pad naar de APK die u wilt installeren.

Opties

Er zijn een aantal opties voor het installeren van APK's via ADB.

  • De -R Met deze optie kan ADB over een bestaande app worden geïnstalleerd (d.w.z. update). Op Android Pie en hoger hoeft u deze optie niet op te geven.
  • De -R optie, voor Android Pie en hoger zal de installatie mislukken als de app al is geïnstalleerd.
  • De -i Met deze optie kunt u de naam van een installatiepakket opgeven. Dit wordt geretourneerd als Android wil weten waardoor de APK is geïnstalleerd.
  • De -T optie staat een APK toe met Android: testOnly = "waar" in het manifest dat moet worden geïnstalleerd.
  • De -D Met deze optie kan de opgegeven APK een downgrade zijn naar een reeds geïnstalleerde app. Dit werkt alleen als in beide versies van de app fouten kunnen worden opgespoord.
  • De -G optie voor Android Marshmallow en verleent later automatisch alle runtime-rechten aan de geïnstalleerde app.

Dat zijn ze niet allemaal. Als u een volledige lijst wilt, kunt u de ingebouwde documentatie bekijken.

Meerdere APK's en bundels

Als u een aantal APK's in één keer wilt installeren, hetzij vanuit meerdere apps, hetzij omdat u een appbundel installeert, kunt u ADB's gebruiken install-multiple En install-multi-package functies.

Als al uw APK's voor één app zijn, gebruikt u install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

Anders gebruiken install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

De opties voor deze opdrachten zijn vergelijkbaar met install, maar met enkele beperkingen. Bekijk de ingebouwde documentatie van ADB waarvoor opties beschikbaar zijn.

Een app verwijderen

Als u de installatie wilt ongedaan maken met ADB, heeft u de pakketnaam nodig van de app die u wilt verwijderen. Bekijk de sectie voor Lijst met geïnstalleerde apps als je dat nog niet hebt gedaan.

Zodra u de pakketnaam kent, is het verwijderen zo eenvoudig als:

adb uninstall <packagename>

Met deze opdracht kunt u doorgaans geen systeemapps of vooraf geïnstalleerde apps verwijderen. Mogelijk kunt u ze echter uitschakelen met ADB. Bekijk de sectie Bijna elke app in- en uitschakelen voor details.

APK's extraheren met ADB

Er zijn tal van redenen waarom u de APK('s) voor een app wilt extraheren. Misschien wilt u er een back-up van maken voor toekomstig gebruik, of misschien is het niet langer online beschikbaar en wilt u het naar een ander apparaat overbrengen.

Een app extraheren met ADB is vrij eenvoudig. Eerst moet u de pakketnaam vinden van de app die u wilt uitpakken. Er zijn meerdere manieren om dit te doen, maar de eenvoudigste is meestal om de app Instellingen van uw apparaat te gebruiken om de instellingen te bekijken lijst met alle geïnstalleerde apps, selecteer degene die u wilt en scrol omlaag totdat u de pakketnaam of app vindt ID KAART.

Zodra u de pakketnaam hebt, voert u de volgende opdracht uit:

adb shell pm path <packagename>

Deze opdracht retourneert het pad van alle APK's voor die pakketnaam.

U kunt vervolgens de volgende opdracht gebruiken om elke APK naar uw computer te halen:

adb pull /path/to/apk.apk

Back-up maken en herstellen van applicatiegegevens

Hoewel Google nog geen iOS-achtige back-upmethode met één klik heeft bedacht, kun je ADB gebruiken om een ​​back-up te maken van geïnstalleerde apps en om ze samen met hun gegevens te herstellen. De functionaliteit is echter verre van perfect, en Google heeft dat al gedaan heeft de functie als verouderd gemarkeerd.

Maak een back-up

Om een ​​back-up te maken van één applicatie, met zijn APK:

adb backup -apk <packagename> -f package_name_backup.ab

Als u een back-up van alle app-gegevens in één keer wilt maken:

adb backup -f all -all -apk -nosystem

Omdat de herstelmodule geen individueel app-specifiek herstel kan uitvoeren, is het beter om pakketspecifieke back-ups te maken. Het volgende opdrachtfragment (compatibel met Linux/macOS en Windows Subsystem voor Linux) kan dit voor u doen:

for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done

Herstellen

Eerst moet u de opgeslagen APK installeren;

adb install <packagename>.apk

Vervolgens kunt u de gegevens herstellen:

adbrestorepackage_name_backup.ab

Nogmaals: de back-up- en herstelfunctionaliteiten van ADB hebben meerdere voorbehouden, inclusief variabele resultaten afhankelijk van het ROM

App-componenten vermelden

De componenten van een app zijn zaken als de activiteiten, BroadcastReceivers, Services, enzovoort. Soms is het handig om de namen van deze componenten in een specifieke app te weten, vooral als je verborgen activiteiten wilt starten of een uitzending met specifieke gegevens wilt versturen.

Helaas heeft ADB geen erg duidelijke manier om de componenten van een app op te sommen. Maar het is mogelijk. Voer de volgende opdracht uit:

adb shell dumpsys package

Er wordt een hele hoop tekst geretourneerd.

  • Blader totdat u de Activiteitsoplossertabel titel om de activiteiten te zien.
  • Kijk onder Ontvanger-resolvertabel voor BroadcastReceivers.
  • Controleer de Service Resolver-tabel voor Diensten.
  • Enzovoort.

Bij elk onderdeel wordt de actie weergegeven die nodig is om het te starten, de naam van het onderdeel en mogelijk wat extra informatie.

Als u een eenvoudigere manier wilt om activiteiten, services en ontvangers te bekijken, kunt u ook de Root Activity Launcher-app van XDA Recognized Developer gebruiken Zachare1. Het toont u die componenten voor elke app, samen met een aantal andere handige functies.

Root-activiteitstarterOntwikkelaar: Zakaria Wander

Prijs: 0,99.

Downloaden

Lancering van activiteiten, diensten en uitzendingsontvangers

ADB kan ook worden gebruikt om activiteiten te starten, services te starten en BroadcastReceivers op de hoogte te stellen. U kunt indien nodig zelfs gegevens-URI's en intentie-extra's opgeven.

Om componenten te starten, hebt u de componentnaam nodig van wat u wilt starten. Hoe je dat kunt doen, kun je zien in de App-componenten vermelden sectie.

De opdrachtsyntaxis voor het starten van een activiteit is ongeveer als volgt:

am start -a <action> -n <component>

De opdrachtsyntaxis voor het starten van een service is ongeveer als volgt:

am startservice -a <action> -n <component>

De syntaxis van de opdracht voor het melden van een BroadcastReceiver is ongeveer als volgt:

am broadcast -a <action> -n <component>

In de meeste gevallen hoeft u voor Activiteiten en Services geen expliciete actie op te geven. Meestal heb je het alleen nodig als het onderdeel een ander dan android.intent.actie. VOORNAAMST.

Naast de basissyntaxis kunt u als volgt meer gegevens opgeven die moeten worden doorgegeven. Over het algemeen moeten alle gegevenswaarden tussen dubbele aanhalingstekens staan.

  • -D Hiermee kunt u een gegevens-URI opgeven.
  • -e of --es Hiermee kunt u een extra String opgeven.
  • --esn Hiermee kunt u een null String extra opgeven.
  • --z wordt gebruikt om een ​​booleaanse extra op te geven.
  • --ei wordt gebruikt om een ​​geheel getal extra op te geven.
  • --el is voor het opgeven van een lange extra.
  • --ef passeert een vlotter extra.
  • --EU geeft een URI extra door.
  • --ecn kan worden gebruikt om een ​​componentnaam extra op te geven.
  • --eia ,,... zal de waarden doorgeven als een geheel getal [] extra.
  • --eiel ,,... geeft de waarden door als een lijst.
  • Dezelfde array- en lijstargumenten werken ook voor longs, floats en Strings. Vervang gewoon de i met de juiste letter.
  • -F Hiermee kunt u een vlag opgeven.

Er zijn nog meer gedragsopties die u kunt gebruiken, dus bekijk de ingebouwde documentatie voor meer informatie.

Bijna elke app in- en uitschakelen

Systeem-apps in Android kunnen niet worden verwijderd, en helaas kunnen veel ervan ook niet worden uitgeschakeld via Instellingen. Hoewel ADB u niet toestaat ze te verwijderen, kan het u wel helpen ze uit te schakelen.

Zorg er eerst voor dat u de pakketnaam ophaalt van de app die u wilt uitschakelen. Probeer dan deze opdrachten. Als er één mislukt, probeer dan de volgende optie.

  • pm uitschakelen
    • Gebruik om opnieuw in te schakelen pm inschakelen
  • pm uitschakelen-gebruiker --gebruiker 0
    • Gebruik om opnieuw in te schakelen pm inschakelen
  • pm verbergen
    • Gebruik om opnieuw in te schakelen pm zichtbaar
  • pm opschorten
    • Gebruik om opnieuw in te schakelen pm opschorten
  • pm verwijder -k --gebruiker 0
    • Gebruik om opnieuw in te schakelen pm installeren-bestaand
      • Deze verwijdert effectief de applicatie uit uw gebruikersprofiel. Terwijl de opdracht om opnieuw in te schakelen zou moeten werken, er is geen garantie dat dit zal gebeuren. Mogelijk moet u de fabrieksinstellingen herstellen om de app te herstellen.
      • Als u meerdere gebruikersprofielen op uw apparaat gebruikt, zorg er dan voor dat u 0 in de bovenstaande opdrachten vervangt door de daadwerkelijke gebruikers-ID die u heeft.

Voor meer informatie, bekijk onze tutorial op hoe u carrier- en OEM-bloatware verwijdert zonder root-toegang.

Schermafbeeldingen maken

De meeste Android-ROM's bieden twee handige shell-hulpprogramma's - screencap en screenrecord - voor het maken van respectievelijk schermafbeeldingen en het opnemen van schermactiviteiten. U kunt ze rechtstreeks vanuit de ADB-shell bellen om een ​​statisch screenshot of een videofragment van uw telefoonscherm te maken en dit rechtstreeks op de interne opslag van het apparaat op te slaan.

De syntaxis voor het maken van een screenshot is vrij eenvoudig:

adb shell screencap /sdcard/screenshot.png

Op dezelfde manier, als je een dynamische schermafdruk wilt maken, doe dan het volgende:

adb shell screenrecord /sdcard/recording.mp4

Zoals je zou verwachten is de screencap-tool vrij eenvoudig, terwijl het screenrecord-hulpprogramma verschillende parameters biedt. Voor dit laatste zijn de mogelijkheden als volgt:

  • --grootte BREEDTExHOOGTE
    • Stel de resolutie van het videobestand in (bijvoorbeeld "1280x720"). Standaard probeert het de hoofdschermresolutie van het doelapparaat te gebruiken (indien ondersteund), en valt terug naar 1280x720 als dat niet het geval is.
  • --bitsnelheid RATE
    • Stel de videobitsnelheid in bits per seconde in. De waarde kan worden gespecificeerd als bits of megabits, b.v. '4000000' komt overeen met '4M'.
  • --bug report
    • U kunt aanvullende informatie toevoegen, zoals een tijdstempeloverlay, wat handig kan zijn om bugs te illustreren.
  • --tijdslimiet TIJD
    • Stel de maximale opnametijd in, in seconden. Standaard / maximum is 180.
  • --display-id-ID
    • Geef de fysieke weergave-ID op die u wilt opnemen. De standaardinstelling is ingesteld op het primaire beeldscherm. Zie "dumpsys SurfaceFlinger --display-id" voor geldige weergave-ID's.
  • --uitgebreid
    • Toon diepgaande informatie over de opnamesessie.

U kunt de mogelijkheden van de ingebouwde hulpprogramma's voor schermopnamen van Android verder uitbreiden met scrcpy. Het is een open source-oplossing voor schermspiegeling, die gebruikmaakt van de kracht van ADB.

Overdracht van binaire gegevens tussen de pc en het Android-apparaat

Als u geen volwaardige ADB-shell wilt voortbrengen, maar graag een gestroomlijnde doorvoer van binaire gegevens tussen de host-pc en het doel-Android-apparaat wilt integreren, kunt u gebruik maken van de exec-in En exec-out opdrachten.

Ondanks hun langdurig bestaan, zijn de opdrachten exec-in en exec-out nog steeds niet gedocumenteerd. Ze kunnen leiden tot bestandsbeschadiging vanwege de manier waarop verschillende shells met invoer en uitvoer omgaan. Voorzichtig gebruiken.

De eerste helpt je een opdracht uit te voeren op Android en de ongefilterde console-invoer als parameter in te voeren, terwijl de de tweede doet precies het tegenovergestelde, dat wil zeggen: voer een opdracht uit op Android en leg de ongefilterde binaire uitvoer vast door het host-besturingssysteem.

Voorbeeld:

adb exec-out "screencap -p" > "D:\screenshot.png"

Hierbij wordt gebruik gemaakt van de screencap opdracht van Android om een ​​screenshot te maken van het scherm van de telefoon, maar slaat deze direct op als screenshot.png in de D:-partitie van de host-pc (op voorwaarde dat Windows wordt uitgevoerd). Aan de andere kant,

adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"

Hierdoor wordt de inhoud uitgepakt van het backup.tar-bestand dat is opgeslagen in de D:-partitie van de host-pc (met Windows) in de hoofdmap van de interne opslag van het Android-apparaat.


ADB is een ongelooflijk krachtig hulpmiddel, en het kan zoveel meer doen dan alleen wat hierboven staat. De opdrachten in dit artikel zijn slechts een handig startpunt. Voor meer geavanceerd gebruik, bekijk opdrachten zoals cmd -l om verschillende services te zien waarmee u mogelijk kunt communiceren en ls -l /systeem/bin om de verschillende uitvoerbare opdrachten te zien die beschikbaar zijn in uw Android-ROM.

Voor andere Android-trips en -tekens, bekijk onze handleidingen op hoe u uw Android-smartphone kunt rooten, hoe TWRP-herstel te installeren, En hoe u een aangepast ROM op uw Android-apparaat installeert.