ADB-vinkkejä ja temppuja: komennot, jotka jokaisen tehokäyttäjän tulisi tietää

Android Debug Bridgessä on monia asioita, joista et ehkä tiedä. Napsauta tästä saadaksesi hyödyllisiä vinkkejä ja temppuja ADB: n käyttöön!

Pikalinkit

  • Shell pääsy
  • Yhdistäminen useisiin laitteisiin
  • Tiedostojen siirtäminen
  • Kirjaaminen
  • Asennettujen sovellusten luettelointi ADB: n kautta
  • Sovellusten asentaminen ja asennuksen poistaminen ADB: n kautta
  • APK: iden purkaminen ADB: n avulla
  • Sovellustietojen varmuuskopiointi ja palautus
  • Sovelluksen komponenttien luettelointi
  • Toimien, palvelujen ja lähetysvastaanottimien käynnistäminen
  • Lähes minkä tahansa sovelluksen poistaminen ja käyttöönotto
  • Kuvakaappausten ottaminen
  • Binääritietojen siirto tietokoneen ja Android-laitteen välillä

Jos olet ollut Android-harrastaja, joka piilee modaamisessa, tai sovellusten kehittäjä minkä tahansa ajan Aikanaan ennemmin tai myöhemmin törmäät siistiin työkaluun nimeltä Android Debug Bridge tai ADB for lyhyt. Sitä käytetään laajasti Android Studiossa komentorivin apuohjelmana. Android-kehittäjät käyttävät sitä myös itsenäisenä ratkaisuna sovellusten manuaaliseen asentamiseen ja testaamiseen

Android-älypuhelimet sekä emuloidut Android-laitteet.

Mutta ADB voi tehdä paljon, ja suurin osa niistä ei ole hyödyllistä vain kehittäjille. Vaikka et olisikaan kehittäjä ja luet tätä artikkelia, olet todennäköisesti käyttänyt ADB: tä kerran tai kahdesti lataa sovellus sivulta tai muokkaa lupaa. Mutta se ei ole kaikki, mihin ADB: tä voidaan käyttää. Jatka lukemista saadaksesi vinkkejä ja temppuja ADB: n käyttöön, joista et ehkä ole tiennyt.

ADB: n on oltava käytössä tietokoneellasi. Muista tutustua artikkeliimme aiheesta miten ADB asennetaan jos tarvitset apua. Jos käytät Windowsia, sinun on myös tehtävä se asenna sopivat OEM-USB-ohjaimet Android-laitteellesi.

Shell pääsy

Jos olet käyttänyt ADB: tä aiemmin, saatat olla tottunut suorittamaan komentoja yhdellä rivillä. Mutta voit myös käyttää ADB: tä avataksesi päätteen kuoren laitteessasi ja suorittaaksesi komentoja suoraan. Ja se on helppoa!

Pääte- tai komentokehoteikkunassa:

adb shell

Sitten sinua tervehditään a $ symboli, jolla voit suorittaa komentoja suoraan laitteellasi.

Yhdistäminen useisiin laitteisiin

ADB voi kommunikoida useiden laitteiden kanssa samanaikaisesti. Sinun on kuitenkin määritettävä kohdelaite, kun annat ADB-komentoja tällaisissa skenaarioissa.

Tätä varten sinun on tiedettävä kohdelaitteen sarjanumero. Voit saada sarjan käyttämällä devices-komentoa:

adb devices

Käytä nyt -s vaihtoehto määrittää kohdelaitteen sarjanumero. Esimerkki:

adb -s <serialnumber> shell

Tiedostojen siirtäminen

Komentoriviharrastajille ADB tarjoaa erittäin helpon tavan siirtää tiedostoja Android-laitteellesi ja sieltä pois. Käytä vain pull -komento kopioidaksesi tiedostoja ja hakemistoja laitteesta ja push komento kopioida tiedostoja ja hakemistoja laitteeseen:

Jos haluat kopioida tiedoston tai hakemiston alihakemistoineen Android-laitteeseen:

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

Seuraava komento kopioi tiedoston tai hakemiston alihakemistoineen Android-laitteesta isäntätietokoneeseen:

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

Kirjaaminen

Android Studio tarjoaa Logcat-ikkuna, joka tukee laitteesi lokien näyttämistä reaaliajassa. Se ei kuitenkaan ole erityisen hyödyllinen eräkäsittelyssä. Onneksi Android-laitteiden mukana toimitetaan ADB: n kautta saatavilla oleva logcat-komento, jonka avulla voidaan tyhjentää järjestelmä- ja sovelluslokiviestit ja tulostaa ne näytölle.

Perussyntaksi on seuraava:

adb logcat

Jos haluat tietää lisää, katso opetusohjelmamme aiheesta kuinka ottaa järjestelmälokit, ytimen lokit ja dmesg Androidissa.

pääsiäismunia

Google tarjoaa kaksi hienoa pääsiäismunaa, jotka liittyvät logcat-komentoon.

  1. Ensimmäinen on lolcat, nyökkäys LOLcat meemi. Se antaa saman tulosteen kuin tavallinen logcat-komento.
    adb lolcat
  2. Toinen on longcat, joka vastaa logcat -v long -komentoa. Se näyttää kaikki metatietokentät ja erilliset viestit tyhjällä rivillä.
    adb longcat

Asennettujen sovellusten luettelointi ADB: n kautta

Nähdäksesi laitteellesi asennetut sovellukset, voit käyttää seuraavaa komentoa:

adb shell pm list packages

Tämä palauttaa luettelon asennettujen sovellusten pakettien nimistä, joista jokainen on omalla rivillään lisättynä package:.

Vaihtoehdot

On myös joitain vaihtoehtoja, joiden avulla voit hakea tarkempia luetteloita.

  • -f sisältää polun kunkin sovelluksen perus-APK: hen ja sen paketin nimen.
  • -a varmistaa, että kaikki tunnetut muut kuin APEX-paketit palautetaan.
  • -d aiheuttaa sen, että komento palauttaa vain käytöstä poistetut paketit.
  • -e aiheuttaa sen, että komento palauttaa vain käytössä olevat paketit.
  • -s aiheuttaa sen, että komento palauttaa vain järjestelmäpaketit.
  • -3 aiheuttaa sen, että komento palauttaa vain kolmannen osapuolen paketteja.
  • -i sisältää asennuspaketin nimen jokaiselle paketille.
  • -U sisältää paketin UID: n jokaiselle paketille.
  • -u sisältää asentamattomat paketit.
  • --näytä-versiokoodi sisältää kunkin paketin versiokoodin.
  • --vain huipulla palauttaa vain APEX-paketit.
  • --uid näyttää vain paketit, joissa on annettu UID.
  • --käyttäjä näyttää vain paketit, jotka kuuluvat annettuun käyttäjätunnukseen.

Sovellusten asentaminen ja asennuksen poistaminen ADB: n kautta

Tämä on suhteellisen yleinen ADB: n käyttö, mutta se on kuitenkin mainitsemisen arvoinen. Muun muassa voit myös käyttää ADB: tä asenna ja poista Android-sovelluksia Android-laitteellesi.

APK: n asentaminen

Jos tietokoneellasi on APK, voit asentaa sen laitteellesi seuraavilla tavoilla:

adbinstall-rsomeapk.apk

Muista vaihtaa someapk.apk APK: n koko polku, jonka haluat asentaa.

Vaihtoehdot

APK: iden asentamiseen ADB: n kautta on joukko vaihtoehtoja.

  • The -r vaihtoehdon avulla ADB voi asentaa olemassa olevan sovelluksen päälle (eli päivittää). Android Pie ja uudemmissa laitteissa sinun ei tarvitse määrittää tätä vaihtoehtoa.
  • The -R vaihtoehto, Android Pie ja uudemmat versiot aiheuttavat asennuksen epäonnistumisen, jos sovellus on jo asennettu.
  • The -i -vaihtoehdon avulla voit määrittää asennuspaketin nimen. Tämä palautetaan, jos Android haluaa tietää, mikä APK on asentanut.
  • The -t -vaihtoehto sallii APK: n, jossa on Android: testOnly="true" asennusluettelossaan.
  • The -d -vaihtoehto sallii määritetyn APK: n päivittämisen jo asennettuun sovellukseen. Tämä toimii vain, jos molemmat sovelluksen versiot ovat virheenkorjattavissa.
  • The -g vaihtoehto Android Marshmallowille ja uudemmille myöntää automaattisesti kaikki suorituksen käyttöoikeudet asennetulle sovellukselle.

Siinä ei ole kaikki. Jos haluat täydellisen luettelon, voit tutustua sisäänrakennettuun dokumentaatioon.

Useita APK: ita ja paketteja

Jos sinulla on joukko APK: ita, jotka haluat asentaa kerralla joko useista sovelluksista tai koska olet asentamassa sovelluspakettia, voit käyttää ADB: tä. install-multiple ja install-multi-package ominaisuudet.

Jos kaikki APK: si ovat yhtä sovellusta varten, käytä install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

Muussa tapauksessa käytä install-multi-package:

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

Näiden komentojen vaihtoehdot ovat samanlaisia ​​kuin install, mutta tietyin rajoituksin. Katso käytettävissä olevat vaihtoehdot ADB: n sisäänrakennetusta dokumentaatiosta.

Sovelluksen asennuksen poistaminen

Jos haluat poistaa asennuksen ADB: n avulla, tarvitset poistettavan sovelluksen paketin nimen. Tutustu kohtaan Asennettujen sovellusten luettelointi jos et ole jo tehnyt.

Kun olet saanut paketin nimen, asennuksen poistaminen on yksinkertaista:

adb uninstall <packagename>

Et yleensä voi poistaa järjestelmän tai esiasennettujen sovellusten asennusta tällä komennolla. Voit kuitenkin poistaa ne käytöstä ADB: n avulla. Tutustu osioon Lähes minkä tahansa sovelluksen poistaminen ja käyttöönotto yksityiskohtia varten.

APK: iden purkaminen ADB: n avulla

On monia syitä, miksi haluat ehkä purkaa sovelluksen APK: t. Ehkä haluat varmuuskopioida sen tulevaa käyttöä varten tai ehkä se ei ole enää saatavilla verkossa ja haluat siirtää sen toiseen laitteeseen.

Sovelluksen purkaminen ADB: n avulla on melko yksinkertaista. Ensin sinun on löydettävä purettavan sovelluksen paketin nimi. On olemassa useita tapoja tehdä tämä, mutta helpoin on yleensä tarkastella laitteen Asetukset-sovellusta luettelo kaikista asennetuista sovelluksista, valitse haluamasi ja vieritä alas, kunnes löydät paketin nimen tai sovelluksen ID.

Kun olet saanut paketin nimen, suorita seuraava komento:

adb shell pm path <packagename>

Tämä komento palauttaa kaikkien kyseisen paketin nimen APK: iden polun.

Voit sitten käyttää seuraavaa komentoa vetääksesi jokaisen APK: n tietokoneellesi:

adb pull /path/to/apk.apk

Sovellustietojen varmuuskopiointi ja palautus

Vaikka Google ei ole vielä keksinyt iOS-tyyppistä yhden napsautuksen varmuuskopiointimenetelmää, voit käyttää ADB: tä asennettujen sovellusten varmuuskopiointiin ja palauttamiseen niiden tietojen kanssa. Toimivuus ei kuitenkaan ole läheskään täydellinen, ja Google on jo tehnyt merkitsi ominaisuuden pois käytöstä.

Varmuuskopioida

Yhden sovelluksen ja sen APK: n varmuuskopiointi:

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

Jos haluat varmuuskopioida kaikki sovellustiedot kerralla:

adb backup -f all -all -apk -nosystem

Koska palautusmoduuli ei voi suorittaa yksittäisiä sovelluskohtaisia ​​palautuksia, on parempi luoda pakettikohtaiset varmuuskopiot. Seuraava komentokoodi (yhteensopiva Linuxin/macOS: n ja Windows Subsystem for Linuxin kanssa) voi tehdä sen puolestasi:

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

Palauttaa

Ensin sinun on asennettava tallennettu APK;

adb install <packagename>.apk

Sitten voit palauttaa sen tiedot:

adbrestorepackage_name_backup.ab

Toistan vielä, että ADB: n varmuuskopiointi- ja palautustoiminnoissa on useita varoituksia, mukaan lukien vaihtelevat tulokset ROM-muistista riippuen

Sovelluksen komponenttien luettelointi

Sovelluksen komponentteja ovat esimerkiksi sen toiminnot, lähetysvastaanottimet, palvelut ja niin edelleen. Joskus on hyödyllistä tietää näiden komponenttien nimet tietyssä sovelluksessa, varsinkin jos haluat käynnistää piilotettuja toimintoja tai lähettää lähetyksen tietyillä tiedoilla.

Valitettavasti ADB: llä ei ole kovin selkeää tapaa listata sovelluksen komponentteja. Mutta se on mahdollista. Suorita seuraava komento:

adb shell dumpsys package

Kokonainen joukko tekstiä palautetaan.

  • Vieritä, kunnes löydät Aktiviteetin ratkaisutaulukko otsikon nähdäksesi toiminnot.
  • Katso alta Vastaanottimen ratkaisutaulukko BroadcastReceiversille.
  • Tarkista Palvelun ratkaisutaulukko Palveluille.
  • Ja niin edelleen.

Jokainen komponentti näyttää sen käynnistämiseen tarvittavan toiminnon, komponentin nimen ja mahdollisesti joitain lisätietoja.

Vaihtoehtoisesti, jos haluat helpomman tavan nähdä toiminnot, palvelut ja vastaanottimet, voit käyttää XDA Recognized Developerin Root Activity Launcher -sovellusta. Zacharee1. Se näyttää sinulle kunkin sovelluksen komponentit sekä joukko muita käteviä ominaisuuksia.

Root Activity LauncherKehittäjä: Zachary Wander

Hinta: 0,99

ladata

Toimien, palvelujen ja lähetysvastaanottimien käynnistäminen

ADB: tä voidaan käyttää myös toimintojen käynnistämiseen, palvelujen käynnistämiseen ja BroadcastReceiversin ilmoittamiseen. Voit jopa määrittää tietojen URI: t ja Intent-lisät tarvittaessa.

Komponenttien käynnistämiseksi tarvitset käynnistettävän komponentin nimen. Voit nähdä, kuinka sen saa Sovelluksen komponenttien luettelointi osio.

Komentosyntaksi toiminnon käynnistämiseksi on suunnilleen seuraava:

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

Palvelun käynnistämisen komentosyntaksi on jotain tällaista:

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

Komentosyntaksi BroadcastReceiverille ilmoittamiseen on jotain tällaista:

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

Useimmissa tapauksissa toimintojen ja palveluiden kohdalla toimintoa ei tarvitse määrittää erikseen. Tarvitset sitä yleensä vain, jos komponentti käyttää jotain muuta kuin android.intent.action. MAIN.

Perussyntaksin lisäksi voit määrittää lisää välitettäviä tietoja. Yleensä kaikki data-arvot tulee laittaa lainausmerkkeihin.

  • -d voit määrittää datan URI: n.
  • -e tai --es voit määrittää merkkijonon ylimääräisen.
  • --esn voit määrittää tyhjän merkkijonon ylimääräisen.
  • --ez käytetään määrittämään boolen ekstra.
  • --ei käytetään määrittämään kokonaislukulisä.
  • --el on pitkän extran määrittämiseen.
  • --ef läpäisee kelluva extran.
  • --eu välittää URI-lisän.
  • --ecn voidaan käyttää komponentin nimen lisäämiseen.
  • --eia ,,... välittää arvot Integer[]-lisänä.
  • -- eiial ,,... välittää arvot luettelona.
  • Samat taulukon ja listan argumentit toimivat myös pitkien, floattien ja merkkijonojen kohdalla. Vaihda vain i sopivalla kirjaimella.
  • -f voit määrittää lipun.

Voit käyttää vielä enemmän toimintavaihtoehtoja, joten katso lisätietoja sisäänrakennetusta dokumentaatiosta.

Lähes minkä tahansa sovelluksen poistaminen ja käyttöönotto

Androidin järjestelmäsovelluksia ei voi poistaa, ja valitettavasti monia niistä ei myöskään voi poistaa käytöstä asetuksista. Vaikka ADB ei anna sinun poistaa niitä, se voi auttaa poistamaan ne käytöstä.

Varmista ensin, että saat sen sovelluksen paketin nimen, jonka haluat poistaa käytöstä. Kokeile sitten näitä komentoja. Jos jokin epäonnistuu, kokeile seuraavaa vaihtoehtoa.

  • pm pois käytöstä
    • Ota uudelleen käyttöön käyttämällä pm käyttöön
  • pm disable-user --user 0
    • Ota uudelleen käyttöön käyttämällä pm käyttöön
  • pm piilota
    • Ota uudelleen käyttöön käyttämällä pm paljastaa
  • pm keskeyttää
    • Ota uudelleen käyttöön käyttämällä pm peruuta keskeytys
  • pm uninstall -k --user 0
    • Ota uudelleen käyttöön käyttämällä pm asennus-olemassa
      • Tämä poistaa sovelluksen tehokkaasti käyttäjäprofiilistasi. Vaikka komento ottaa uudelleen käyttöön pitäisi toimii, ei ole takuuta, että se toimii. Sinun on ehkä palautettava tehdasasetukset sovelluksen palauttamiseksi.
      • Jos käytät laitteellasi useita käyttäjäprofiileja, muista korvata yllä olevien komentojen 0 todellisella käyttäjätunnuksellasi.

Jos haluat tietää lisää, katso opetusohjelmamme kuinka poistaa operaattorin ja OEM-bloatware ilman pääkäyttäjän oikeuksia.

Kuvakaappausten ottaminen

Useimmissa Android-ROM-levyissä on kaksi kätevää shell-apuohjelmaa - screencap ja screenrecord - kuvakaappausten ottamista ja näytön toimintojen tallentamista varten. Voit soittaa heille suoraan ADB-kuoresta tallentaaksesi staattisen kuvakaappauksen tai videokatkelman puhelimen näytöstä ja tallentaaksesi sen suoraan laitteen sisäiseen muistiin.

Kuvakaappauksen syntaksi on melko suoraviivainen:

adb shell screencap /sdcard/screenshot.png

Samoin, jos sinun on otettava dynaaminen kuvakaappaus, toimi seuraavasti:

adb shell screenrecord /sdcard/recording.mp4

Kuten arvata saattaa, screencap-työkalu on melko yksinkertainen, kun taas screenrecord-apuohjelma tarjoaa useita parametreja. Jälkimmäisen vaihtoehdot ovat seuraavat:

  • --koko WIDTHxHEIGHT
    • Aseta videotiedoston resoluutio (esim. "1280x720"). Oletusarvoisesti se yrittää ottaa kohdelaitteen päänäytön resoluution (jos tuettu) ja palautuu 1280 x 720:een, jos ei.
  • --bittinopeus RATE
    • Aseta videon bittinopeus bitteinä sekunnissa. Arvo voidaan määrittää bitteinä tai megabitteinä, esim. "4000000" vastaa "4M".
  • --virhe raportti
    • Voit lisätä lisätietoja, kuten aikaleiman peittokuvan, joka voi olla hyödyllinen havainnollistamaan virheitä.
  • --aikaraja TIME
    • Aseta enimmäistallennusaika sekunteina. Oletus/maksimi on 180.
  • --näyttötunnus
    • Määritä tallennettava fyysinen näyttötunnus. Oletusnäytöksi on asetettu ensisijainen näyttö. Katso kelvolliset näyttötunnukset kohdasta "dumpsys SurfaceFlinger --display-id".
  • --sanallinen
    • Näytä yksityiskohtaiset tiedot tallennusistunnosta.

Voit laajentaa Androidin sisäänrakennettujen näytönkaappausapuohjelmien ominaisuuksia entisestään scrcpy. Se on avoimen lähdekoodin näytön peilausratkaisu, joka hyödyntää ADB: n tehoa.

Binääritietojen siirto tietokoneen ja Android-laitteen välillä

Jos et halua luoda täysimittaista ADB-kuorta, mutta haluat sisällyttää virtaviivaistetun binaaridatan välityksen isäntätietokoneen ja kohde-Android-laitteen välille, voit käyttää exec-in ja exec-out komentoja.

Heistä huolimatta pitkittynyt olemassaolo, exec-in ja exec-out -komennot ovat edelleen dokumentoimattomia. Ne voivat johtaa tiedostojen vioittumiseen johtuen tavasta, jolla eri kuoret käsittelevät tuloja ja lähtöjä. Käytä varoen.

Ensimmäinen auttaa sinua suorittamaan komennon Androidissa ja syöttämään suodattamattoman konsolin syötteen parametriksi, kun taas toinen toimii täsmälleen päinvastoin, eli suorittaa komennon Androidissa ja kaappaa sen suodattamattoman binaarilähdön isäntäkäyttöjärjestelmästä.

Esimerkki:

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

Tämä käyttää screencap Android-komento ottaaksesi kuvakaappauksen puhelimen näytöstä, mutta tallentaa sen suoraan isäntätietokoneen D:-osioon (jos siinä on Windows). Toisaalta,

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

Tämä purkaa isäntätietokoneen (Windows) D:-osioon tallennetun backup.tar-tiedoston sisällön Android-laitteen sisäisen tallennustilan juureen.


ADB on uskomattoman tehokas työkalu, ja se voi tehdä paljon enemmän kuin vain sen, mitä yllä on. Tämän artikkelin komennot ovat vain hyödyllinen lähtökohta. Jos haluat käyttää edistyneempää käyttöä, katso komennot, kuten cmd -l nähdäksesi erilaisia ​​palveluita, joiden kanssa saatat olla vuorovaikutuksessa ja ls -l /järjestelmä/bin nähdäksesi Android-ROM-muistissasi käytettävissä olevat erilaiset komentotiedostot.

Jos haluat lisätietoja Android-matkoista ja -pisteistä, tutustu oppaihimme osoitteessa kuinka rootata Android-älypuhelin, kuinka asentaa TWRP-palautus, ja kuinka asentaa mukautettu ROM Android-laitteeseen.