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.
- Ensimmäinen on lolcat, nyökkäys LOLcat meemi. Se antaa saman tulosteen kuin tavallinen logcat-komento.
adb lolcat
- 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.
Hinta: 0,99
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.
- Ota uudelleen käyttöön käyttämällä pm asennus-olemassa
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.