ADB-tips en -trucs: opdrachten die elke hoofdgebruiker zou moeten kennen

click fraud protection

Er is veel aan de Android Debug Bridge dat u misschien niet weet. Klik hier voor enkele handige tips en trucs voor het gebruik van ADB!

Snelle links

  • Shell-toegang
  • Verbinding maken met meerdere apparaten
  • Bestanden overzetten
  • Loggen
  • Geïnstalleerde apps weergeven via ADB
  • Apps installeren en verwijderen via ADB
  • APK's extraheren met ADB
  • Back-up en herstel van toepassingsgegevens
  • Lijst met app-componenten
  • Lancering van activiteiten, diensten en ontvangers van uitzendingen
  • Vrijwel elke app uitschakelen en inschakelen
  • Schermafbeeldingen vastleggen
  • Overdracht van binaire gegevens tussen de pc en het Android-apparaat

Als je een Android-enthousiasteling bent geweest die op de loer ligt in de modding-scene, of een app-ontwikkelaar voor enige tijd tijd, vroeg of laat, stuit je op een handige tool genaamd de Android Debug Bridge, of ADB voor kort. Het wordt veel gebruikt in Android Studio als een begeleidend 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 is niet alleen nuttig voor ontwikkelaars. Zelfs als u geen ontwikkelaar bent en dit artikel aan het lezen bent, is de kans groot dat u ADB waarschijnlijk een of twee keer hebt gebruikt om een app sideloaden of pas een machtiging aan. Maar dat is niet alles waarvoor ADB kan worden gebruikt. Blijf lezen voor enkele tips en trucs voor het gebruik van ADB waarvan u misschien nog niet op de hoogte was.

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

Shell-toegang

Als je ADB eerder hebt gebruikt, ben je misschien 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 direct opdrachten uit te voeren. En het is gemakkelijk!

In uw terminal- of opdrachtpromptvenster:

adb-schaal

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. U moet echter het doelapparaat opgeven wanneer u in dergelijke scenario's 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-apparaten

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

adb -s <serieelnummer> schelp

Bestanden overzetten

Voor liefhebbers van de opdrachtregel biedt ADB een zeer gemakkelijke manier om bestanden van en naar uw Android-apparaat over te zetten. Gebruik gewoon de trekken opdracht om bestanden en mappen van het apparaat en de duw opdracht om bestanden en mappen naar het apparaat te kopiëren:

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

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

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

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

Loggen

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

De basissyntaxis is als volgt:

adb logcat

Om meer te weten, bekijk onze tutorial op hoe u systeemlogcats, kernellogboeken en dmesg op Android neemt.

Paas eieren

Google biedt twee handige paaseieren met betrekking tot het logcat-commando.

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

Geïnstalleerde apps weergeven via ADB

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

adb shell pm lijst pakketjes

Hiermee wordt een lijst geretourneerd met de pakketnamen van de geïnstalleerde apps, met elk op een eigen regel voorafgegaan door pakket:.

Opties

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

  • -F bevat het pad naar de basis-APK voor elke app, samen met de pakketnaam.
  • -A zal ervoor zorgen dat alle bekende niet-APEX-pakketten worden geretourneerd.
  • -D zorgt ervoor dat de opdracht alleen uitgeschakelde pakketten retourneert.
  • -e zorgt ervoor 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 de naam van het installatiepakket voor elk pakket.
  • -U bevat de pakket-UID voor elk pakket.
  • -u bevat 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 veel voorkomend gebruik van ADB, maar het is toch het vermelden waard. U kunt onder andere ook gebruik maken van ADB om 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:

bijvoeglijk naamwoordinstalleren-Rietsapk.apk

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

Opties

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

  • De -R optie stelt ADB in staat om over een bestaande app te installeren (d.w.z. update). Op Android Pie en later hoeft u deze optie niet op te geven.
  • De -R optie, voor Android Pie en later zal de installatie mislukken als de app al is geïnstalleerd.
  • De -i Met deze optie kunt u een naam voor het installatiepakket opgeven. Dit is wat wordt geretourneerd als Android wil weten wat de APK heeft geïnstalleerd.
  • De -T optie staat een APK toe met android: testAlleen="waar" in zijn te installeren manifest.
  • De -D Met deze optie kan de opgegeven APK worden gedowngraded naar een reeds geïnstalleerde app. Dit werkt alleen als beide versies van de app kunnen worden opgespoord.
  • De -G optie voor Android Marshmallow en verleent later automatisch alle runtimerechten 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 app-bundel installeert, kunt u ADB's gebruiken installatie-meerdere En installatie-multi-pakket functies.

Als al je APK's voor één app zijn, gebruik dan installatie-meerdere:

bijvoeglijk naamwoordinstallatie-meerdereapk1.apkapk2.apk ...

Gebruik anders installatie-multi-pakket:

bijvoeglijk naamwoordinstallatie-multi-pakketapp1.apkapp2.apk ...

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

Een app verwijderen

Om te verwijderen met behulp van ADB, hebt 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 hebt, is het verwijderen zo eenvoudig als:

adb verwijderen <verpakkingsnaam>

U kunt met deze opdracht over het algemeen geen systeem- of vooraf geïnstalleerde apps verwijderen. U kunt ze echter mogelijk uitschakelen met ADB. Bekijk de sectie Vrijwel elke app uitschakelen en inschakelen voor details.

APK's extraheren met ADB

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

Een app extraheren met ADB is vrij eenvoudig. Eerst wil je de pakketnaam vinden van de app die je 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 lijst met alle geïnstalleerde apps, selecteer degene die je wilt en scrol omlaag totdat je de pakketnaam of app vindt ID KAART.

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

adb shell pm-pad <verpakkingsnaam>

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 /pad/naar/apk.apk

Back-up en herstel van toepassingsgegevens

Hoewel Google nog moet komen met een iOS-achtige back-upmethode met één klik, kunt u ADB gebruiken om een ​​back-up te maken van geïnstalleerde apps en deze samen met hun gegevens te herstellen. De functionaliteit is echter verre van perfect, en dat heeft Google al gedaan markeerde de functie als verouderd.

Maak een back-up

Een back-up maken van een enkele applicatie, met zijn APK:

bijvoeglijk naamwoord back-up -apk <pakketnaam> -f pakketnaam_backup.ab

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

bijvoeglijk naamwoord back-up -F alle -alle -apk -geen systeem

Aangezien 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 for Linux) kan dit voor u doen:

voor APP in $(adb shell pm lijst pakketten -3)
Doen
APP=$( echo${APP} | sed "s/^pakket://")
adb-back-up -f ${APP}.back-up ${APP}
klaar

Herstellen

Eerst moet u de opgeslagen APK installeren;

bijvoeglijk naamwoord installeren <pakketnaam>.apk

Vervolgens kunt u de gegevens herstellen:

bijvoeglijk naamwoordherstellenpakketnaam_backup.ab

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

Lijst met app-componenten

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

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

adb shell-dumpsys pakket

Er wordt een hele hoop tekst geretourneerd.

  • Scroll tot je de Activiteitsoplossertabel titel om de activiteiten te zien.
  • Kijk onder Ontvanger Resolver Tabel voor uitzendontvangers.
  • Controleer de Service Resolver-tabel voor Diensten.
  • Enzovoort.

Elk onderdeel toont de actie die nodig is om het te starten, de naam van het onderdeel en mogelijk wat extra informatie.

Als u op een eenvoudigere manier activiteiten, services en ontvangers wilt zien, kunt u ook de Root Activity Launcher-app van XDA Recognized Developer gebruiken Zacharee1. Het toont je die componenten voor elke app, samen met een heleboel andere handige functies.

Root Activity LauncherOntwikkelaar: Zakaria Wander

Prijs: 0,99.

Downloaden

Lancering van activiteiten, diensten en ontvangers van uitzendingen

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 Intent-extra's specificeren.

Om componenten te starten, hebt u de componentnaam nodig van wat u wilt starten. Je kunt zien hoe je dat kunt krijgen van de Lijst met app-componenten sectie.

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

ben begin -a <actie> -N <bestanddeel>

De opdrachtsyntaxis voor het starten van een service ziet er ongeveer zo uit:

ben startservice -a <actie> -N <bestanddeel>

De opdrachtsyntaxis voor het melden van een BroadcastReceiver is ongeveer als volgt:

ben uitgezonden -a <actie> -N <bestanddeel>

In de meeste gevallen hoeft u voor Activiteiten en Services geen actie expliciet op te geven. U hebt het meestal alleen nodig als het onderdeel een ander dan gebruikt android.intent.actie. VOORNAAMST.

Bovenop de basissyntaxis kunt u als volgt meer gegevens specificeren om door te geven. Over het algemeen moeten alle gegevenswaarden tussen dubbele aanhalingstekens worden geplaatst.

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

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

Vrijwel elke app uitschakelen en inschakelen

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 helpen ze uit te schakelen.

Zorg er eerst voor dat u de pakketnaam krijgt van de app die u wilt uitschakelen. Probeer dan deze commando's. Als een 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 opheffen
  • pm uninstall -k --user 0
    • Gebruik om opnieuw in te schakelen pm installatie-bestaand
      • Deze verwijdert de applicatie effectief uit uw gebruikersprofiel. Terwijl de opdracht om opnieuw in te schakelen zou moeten werken, er is geen garantie dat het zal lukken. 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 carrier- en OEM-bloatware te verwijderen zonder root-toegang.

Schermafbeeldingen vastleggen

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

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

adb shell schermafbeelding /sdcard/screenshot.png

Evenzo, als u een dynamische schermafbeelding wilt maken, doet u het volgende:

adb shell schermopname /sdcard/opname.mp4

Zoals je zou verwachten, is de screencap-tool vrij eenvoudig, terwijl de screenrecord-tool verschillende parameters biedt. De opties voor de laatste zijn als volgt:

  • --formaat WIDTHxHEIGHT
    • Stel de resolutie van het videobestand in (bijv. "1280x720"). Standaard probeert het de resolutie van het hoofdscherm van het doelapparaat te gebruiken (indien ondersteund), en valt terug naar 1280x720 als dat niet het geval is.
  • --bitsnelheid SNELHEID
    • Stel de videobitsnelheid in bits per seconde in. De waarde kan worden gespecificeerd als bits of megabits, b.v. '4000000' is gelijk aan '4M'.
  • --bug report
    • U kunt extra informatie toevoegen, zoals een tijdstempel-overlay, wat handig kan zijn om bugs te illustreren.
  • --tijdslimiet TIJD
    • Stel de maximale opnametijd in seconden in. Standaard / maximum is 180.
  • --display-id ID
    • Geef de fysieke weergave-ID op om op te nemen. De standaard is ingesteld op het primaire beeldscherm. Zie "dumpsys SurfaceFlinger --display-id" voor geldige display-ID's.
  • -- uitgebreid
    • Toon uitgebreide informatie over de opnamesessie.

U kunt de mogelijkheden van de ingebouwde schermopnamehulpprogramma's van Android verder uitbreiden door 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 maken, maar graag een gestroomlijnde doorvoer van binaire gegevens tussen de host-pc en het doel-Android-apparaat wilt opnemen, kunt u gebruik maken van de uitvoerend En exec-uit commando's.

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

De eerste helpt je om een ​​commando op Android uit te voeren en de ongefilterde console-invoer als parameter in te voeren, terwijl de de tweede doet precies het tegenovergestelde, d.w.z. voer een opdracht uit op Android en leg de ongefilterde binaire uitvoer vast door het host-besturingssysteem.

Voorbeeld:

bijvoeglijk naamwoord exec-uit "screencap -p" > "D:\screenshot.png"

Dit zal gebruik maken van de schermafbeelding opdracht van Android om een ​​screenshot van het scherm van de telefoon te maken, maar slaat deze direct op als screenshot.png in de D:-partitie van de host-pc (mits er Windows op draait). Aan de andere kant,

bijvoeglijk naamwoord exec-in"cd /sdcard && tar -xf -" < "D:\back-up.tar"

Hiermee wordt de inhoud van het bestand backup.tar uitgepakt 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 dan alleen wat hierboven staat. De opdrachten in dit artikel zijn slechts een handig startpunt. Voor meer geavanceerd gebruik, bekijk commando's zoals cmd-l om verschillende services te zien waarmee u mogelijk kunt communiceren en ls -l /systeem/bin om de verschillende uitvoerbare opdrachten te bekijken die beschikbaar zijn in uw Android-ROM.

Bekijk voor andere Android-trips en -tikken 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.