Zoeken…


Invoering

ADB (Android Debug Bridge) is een opdrachtregelprogramma dat werd gebruikt om te communiceren met een emulatorinstantie of een verbonden Android-apparaat.

Overzicht van ADB

Een groot deel van dit onderwerp werd opgesplitst in adb shell

Opmerkingen

Lijst met voorbeelden verplaatst naar adb shell :

Uitgebreide lijst met verbonden apparaten afdrukken

Om een uitgebreide lijst te krijgen van alle apparaten die op adb aangesloten, schrijft u de volgende opdracht in uw terminal:

adb devices -l

Voorbeelduitvoer

List of devices attached
ZX1G425DC6             device usb:336592896X product:shamu model:Nexus_6 device:shamu
013e4e127e59a868       device usb:337641472X product:bullhead model:Nexus_5X device:bullhead
ZX1D229KCN             device usb:335592811X product:titan_retde model:XT1068 device:titan_umtsds
A50PL                  device usb:331592812X
  • De eerste kolom is het serienummer van het apparaat. Als het begint met emulator- , is dit apparaat een emulator.
  • usb: het pad van het apparaat in het USB-subsysteem.
  • product: de productcode van het apparaat. Dit is zeer fabrikantspecifiek en zoals u kunt zien in het geval van het Archos-apparaat A50PL hierboven, kan dit leeg zijn.
  • model: het apparaatmodel. Soortgelijk product , kan leeg zijn.
  • device: de apparaatcode. Dit is ook zeer fabrikant-specifiek en kan leeg zijn.

Lees apparaatinformatie

Schrijf het volgende commando in uw terminal:

adb shell getprop

Hiermee wordt alle beschikbare informatie in de vorm van sleutel / waarde-paren afgedrukt.

U kunt alleen specifieke informatie lezen door de naam van een specifieke sleutel aan de opdracht toe te voegen. Bijvoorbeeld:

adb shell getprop ro.product.model

Hier zijn een paar interessante stukjes informatie die je kat krijgt:

  • ro.product.model : ro.product.model van het apparaat (bijv. Nexus 6P)
  • ro.build.version.sdk : API-niveau van het apparaat (bijv. 23)
  • ro.product.brand : Branding van het apparaat (bijv. Samsung)

Volledige voorbeelduitvoer

[dalvik.vm.dex2oat-Xms]: [64m]
[dalvik.vm.dex2oat-Xmx]: [512m]
[dalvik.vm.heapsize]: [384m]
[dalvik.vm.image-dex2oat-Xms]: [64m]
[dalvik.vm.image-dex2oat-Xmx]: [64m]
[dalvik.vm.isa.x86.variant]: [dalvik.vm.isa.x86.features=default]
[dalvik.vm.isa.x86_64.features]: [default]
[dalvik.vm.isa.x86_64.variant]: [x86_64]
[dalvik.vm.lockprof.threshold]: [500]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[debug.atrace.tags.enableflags]: [0]
[debug.force_rtl]: [0]
[dev.bootcomplete]: [1]
[gsm.current.phone-type]: [1]
[gsm.defaultpdpcontext.active]: [true]
[gsm.network.type]: [UMTS]
[gsm.nitz.time]: [1469106902492]
[gsm.operator.alpha]: [Android]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: [Android]
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [READY]
[gsm.version.ril-impl]: [android reference-ril 1.0]
[init.svc.adbd]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.console]: [running]
[init.svc.debuggerd]: [running]
[init.svc.debuggerd64]: [running]
[init.svc.drm]: [running]
[init.svc.fingerprintd]: [running]
[init.svc.gatekeeperd]: [running]
[init.svc.goldfish-logcat]: [stopped]
[init.svc.goldfish-setup]: [stopped]
[init.svc.healthd]: [running]
[init.svc.installd]: [running]
[init.svc.keystore]: [running]
[init.svc.lmkd]: [running]
[init.svc.logd]: [running]
[init.svc.logd-reinit]: [stopped]
[init.svc.media]: [running]
[init.svc.netd]: [running]
[init.svc.perfprofd]: [running]
[init.svc.qemu-props]: [stopped]
[init.svc.ril-daemon]: [running]
[init.svc.servicemanager]: [running]
[init.svc.surfaceflinger]: [running]
[init.svc.ueventd]: [running]
[init.svc.vold]: [running]
[init.svc.zygote]: [running]
[init.svc.zygote_secondary]: [running]
[net.bt.name]: [Android]
[net.change]: [net.dns2]
[net.dns1]: [10.0.2.3]
[net.dns2]: [10.0.2.4]
[net.eth0.dns1]: [10.0.2.3]
[net.eth0.dns2]: [10.0.2.4]
[net.eth0.gw]: [10.0.2.2]
[net.gprs.local-ip]: [10.0.2.15]
[net.hostname]: [android-5e1af924d72dc578]
[net.qtaguid_enabled]: [1]
[net.tcp.default_init_rwnd]: [60]
[persist.sys.dalvik.vm.lib.2]: [libart.so]
[persist.sys.profiler_ms]: [0]
[persist.sys.timezone]: [Europe/Vienna]
[persist.sys.usb.config]: [adb]
[qemu.gles]: [1]
[qemu.hw.mainkeys]: [0]
[qemu.sf.fake_camera]: [none]
[qemu.sf.lcd_density]: [560]
[rild.libargs]: [-d /dev/ttyS0]
[rild.libpath]: [/system/lib/libreference-ril.so]
[ro.allow.mock.location]: [0]
[ro.baseband]: [unknown]
[ro.board.platform]: []
[ro.boot.hardware]: [ranchu]
[ro.bootimage.build.date]: [Thu Jul 7 15:56:30 UTC 2016]
[ro.bootimage.build.date.utc]: [1467906990]
[ro.bootimage.build.fingerprint]: [Android/sdk_google_phone_x86_64/generic_x86_64:6.0/MASTER/3038907:userdebug/test-keys]
[ro.bootloader]: [unknown]
[ro.bootmode]: [unknown]
[ro.build.characteristics]: [emulator]
[ro.build.date]: [Thu Jul  7 15:55:30 UTC 2016]
[ro.build.date.utc]: [1467906930]
[ro.build.description]: [sdk_google_phone_x86_64-userdebug 6.0 MASTER 3038907 test-keys]
[ro.build.display.id]: [sdk_google_phone_x86_64-userdebug 6.0 MASTER 3038907 test-keys]
[ro.build.fingerprint]: [Android/sdk_google_phone_x86_64/generic_x86_64:6.0/MASTER/3038907:userdebug/test-keys]
[ro.build.flavor]: [sdk_google_phone_x86_64-userdebug]
[ro.build.host]: [vpak15.mtv.corp.google.com]
[ro.build.id]: [MASTER]
[ro.build.product]: [generic_x86_64]
[ro.build.tags]: [test-keys]
[ro.build.type]: [userdebug]
[ro.build.user]: [android-build]
[ro.build.version.all_codenames]: [REL]
[ro.build.version.base_os]: []
[ro.build.version.codename]: [REL]
[ro.build.version.incremental]: [3038907]
[ro.build.version.preview_sdk]: [0]
[ro.build.version.release]: [6.0]
[ro.build.version.sdk]: [23]
[ro.build.version.security_patch]: [2015-10-01]
[ro.com.google.locationfeatures]: [1]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
[ro.config.nocheckin]: [yes]
[ro.config.notification_sound]: [OnTheHunt.ogg]
[ro.crypto.state]: [unencrypted]
[ro.dalvik.vm.native.bridge]: [0]
[ro.debuggable]: [1]
[ro.hardware]: [ranchu]
[ro.hardware.audio.primary]: [goldfish]
[ro.kernel.android.checkjni]: [1]
[ro.kernel.android.qemud]: [1]
[ro.kernel.androidboot.hardware]: [ranchu]
[ro.kernel.clocksource]: [pit]
[ro.kernel.console]: [0]
[ro.kernel.ndns]: [2]
[ro.kernel.qemu]: [1]
[ro.kernel.qemu.gles]: [1]
[ro.opengles.version]: [131072]
[ro.product.board]: []
[ro.product.brand]: [Android]
[ro.product.cpu.abi]: [x86_64]
[ro.product.cpu.abilist]: [x86_64,x86]
[ro.product.cpu.abilist32]: [x86]
[ro.product.cpu.abilist64]: [x86_64]
[ro.product.device]: [generic_x86_64]
[ro.product.locale]: [en-US]
[ro.product.manufacturer]: [unknown]
[ro.product.model]: [Android SDK built for x86_64]
[ro.product.name]: [sdk_google_phone_x86_64]
[ro.radio.use-ppp]: [no]
[ro.revision]: [0]
[ro.runtime.firstboot]: [1469106908722]
[ro.secure]: [1]
[ro.serialno]: []
[ro.wifi.channels]: []
[ro.zygote]: [zygote64_32]
[selinux.reload_policy]: [1]
[service.bootanim.exit]: [1]
[status.battery.level]: [5]
[status.battery.level_raw]: [50]
[status.battery.level_scale]: [9]
[status.battery.state]: [Slow]
[sys.boot_completed]: [1]
[sys.sysctl.extra_free_kbytes]: [43200]
[sys.sysctl.tcp_def_init_rwnd]: [60]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]
[vold.has_adoptable]: [1]
[wlan.driver.status]: [unloaded]
[xmpp.auto-presence]: [true]

Verbind ADB met een apparaat via wifi

De standaard ADB-configuratie omvat een USB-verbinding met een fysiek apparaat.
Als u wilt, kunt u overschakelen naar TCP / IP-modus en in plaats daarvan ADB via WiFi verbinden.

Niet geroot apparaat

  1. Ga op hetzelfde netwerk:

    • Zorg ervoor dat uw apparaat en uw computer zich in hetzelfde netwerk bevinden.
  2. Sluit het apparaat met een USB-kabel aan op de hostcomputer.

  3. adb verbinden met apparaat via netwerk:

    Terwijl uw apparaat via USB met adb is verbonden, adb de volgende opdracht uit om te zoeken naar een TCP / IP-verbinding op een poort (standaard 5555):

    • Typ adb tcpip <port> (overschakelen naar TCP / IP-modus).
    • Koppel de USB-kabel los van het doelapparaat.
    • Typ adb connect <ip address>:<port> (poort is optioneel; standaard 5555).

    Bijvoorbeeld:

    adb tcpip 5555
    adb connect 192.168.0.101:5555
    

    Als u het IP-adres van uw apparaat niet weet, kunt u:

    • controleer het IP in de WiFi-instellingen van uw apparaat.
    • gebruik ADB om IP te ontdekken (via USB):
      1. Verbind het apparaat via USB met de computer
      2. Typ adb shell ifconfig een opdrachtregel en kopieer het IP-adres van uw apparaat

    Gebruik de volgende opdracht om terug te gaan naar foutopsporing via USB :

    adb usb
    

    U kunt ADB ook via WiFi verbinden door een plug-in voor Android Studio te installeren. Ga hiervoor naar Instellingen> Plug-ins en bladerrepository's, zoek naar ADB WiFi , installeer het en open Android Studio opnieuw. U ziet een nieuw pictogram op uw werkbalk, zoals weergegeven in de volgende afbeelding. Verbind het apparaat via USB met de hostcomputer en klik op dit AndroidWiFiADB- pictogram. Er wordt een bericht weergegeven of uw apparaat is verbonden of niet. Zodra het is aangesloten, kunt u uw USB loskoppelen.

    Nieuw werkbalkpictogram


Geworteld apparaat

Opmerking: sommige apparaten die zijn geroot, kunnen de ADB WiFi-app uit de Play Store gebruiken om dit op een eenvoudige manier in te schakelen. Voor bepaalde apparaten (met name die met CyanogenMod ROM's) is deze optie ook aanwezig in de ontwikkelaarsopties onder de instellingen. Als u dit inschakelt, krijgt u het IP-adres en poortnummer dat vereist is om verbinding te maken met adb door eenvoudig adb connect <ip address>:<port> .

Wanneer u een geroot apparaat hebt maar geen toegang hebt tot een USB-kabel

Het proces wordt gedetailleerd uitgelegd in het volgende antwoord: http://stackoverflow.com/questions/2604727/how-can-i-connect-to-android-with-adb-over-tcp/3623727#3623727 De belangrijkste opdrachten worden hieronder getoond.

Open een terminal in het apparaat en typ het volgende:

su
setprop service.adb.tcp.port <a tcp port number>
stop adbd
start adbd

Bijvoorbeeld:

setprop service.adb.tcp.port 5555

En op uw computer:

adb connect <ip address>:<a tcp port number>

Bijvoorbeeld:

adb connect 192.168.1.2:5555

Om het uit te schakelen:

setprop service.adb.tcp.port -1
stop adbd
start adbd

Vermijd time-out

Standaard zal adb na 5000 ms een time-out krijgen. Dit kan in sommige gevallen gebeuren, zoals trage WiFi of grote APK.

Een eenvoudige wijziging in de Gradle-configuratie kan voldoende zijn:

android {
    adbOptions {
        timeOutInMs 10 * 1000
    }
}

Trek (duw) bestanden van (naar) het apparaat

U kunt bestanden van het apparaat ophalen (downloaden) door de volgende opdracht uit te voeren:

adb pull <remote> <local>

Bijvoorbeeld:

adb pull /sdcard/ ~/

U kunt ook bestanden van uw computer naar het apparaat pushen (uploaden):

adb push <local> <remote>

Bijvoorbeeld:

adb push ~/image.jpg /sdcard/

Voorbeeld om database van apparaat op te halen

sudo adb -d shell "run-as com.example.name cat /data/da/com.example.name /databases/DATABASE_NAME  > /sdcard/file

Herstart apparaat

U kunt uw apparaat opnieuw opstarten door de volgende opdracht uit te voeren:

adb reboot

Voer deze opdracht uit om opnieuw op te starten in bootloader:

adb reboot bootloader

Herstart naar herstelmodus:

adb reboot recovery

Houd er rekening mee dat het apparaat niet eerst wordt uitgeschakeld!

Schakel wifi in / uit

Aanzetten:

adb shell svc wifi enable

Zet uit:

adb shell svc wifi disable

Bekijk beschikbare apparaten

Commando:

 adb devices

Resultaat voorbeeld:

List of devices attached
emulator-5554  device
PhoneRT45Fr54  offline
123.454.67.45  no device

Eerste kolom - serienummer van het apparaat

Tweede kolom - verbindingsstatus

Android-documentatie

Verbind apparaat via IP

Voer deze commando's in Android-apparaat Terminal

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Hierna kunt u CMD en ADB gebruiken om verbinding te maken met de volgende opdracht

adb connect 192.168.0.101.5555

En u kunt het uitschakelen en ADB weer laten luisteren op USB met

setprop service.adb.tcp.port -1
stop adbd
start adbd

Vanaf een computer, als u al USB-toegang heeft (geen root vereist)

Het is nog eenvoudiger om over te schakelen naar het gebruik van Wi-Fi, als u al USB hebt. Voer de opdrachten uit vanaf een opdrachtregel op de computer waarop het apparaat via USB is aangesloten

adb tcpip 5555
adb connect 192.168.0.101:5555

Vervang 192.168.0.101 door apparaat-IP

Start / stop adb

Start ADB:

adb kill-server

Stop ADB:

adb start-server

Bekijk logcat

U kunt logcat als een adb-opdracht of rechtstreeks in een shell-prompt van uw emulator of verbonden apparaat. Om log-uitvoer te bekijken met behulp van adb , gaat u naar uw SDK platform-tools / directory en voert u het volgende uit:

$ adb logcat

U kunt ook een shell-verbinding met een apparaat maken en vervolgens uitvoeren:

$ adb shell
$ logcat

Een handige opdracht is:

adb logcat -v threadtime

Dit toont de datum, aanroeptijd, prioriteit, tag en de PID en TID van de thread die het bericht afgeeft in een lang berichtformaat.


filtering

Logcat-logboeken hebben zogenaamde logniveaus:

V - Verbose, D - Foutopsporing, I - Info, W - Waarschuwing, E - Fout, F - Fataal, S - Stil

U kunt logcat ook filteren op logniveau. Als u bijvoorbeeld alleen het foutopsporingsniveau wilt uitvoeren:

adb logcat *:D

Logcat kan worden gefilterd op een pakketnaam, natuurlijk kunt u het combineren met het filter op logniveau:

adb logcat <package-name>:<log level>

U kunt het logboek ook filteren met grep (meer over het filteren van logcat-uitvoer hier ):

adb logcat | grep <some text>

In Windows kan het filter worden gebruikt met behulp van findstr, bijvoorbeeld:

adb logcat | findstr <some text>

Om alternatieve logcat [main | events | radio] te bekijken, voert u de logcat met de optie -b :

adb logcat -b radio

Uitgang opslaan in bestand:

adb logcat > logcat.txt

Sla uitvoer in bestand op terwijl u het ook bekijkt:

adb logcat | tee logcat.txt

De logboeken reinigen:

adb logcat -c

Directe ADB-opdracht naar specifiek apparaat in een instelling met meerdere apparaten

1. Richt een apparaat op serienummer

Gebruik de optie -s gevolgd door een apparaatnaam om te selecteren op welk apparaat de adb opdracht moet worden uitgevoerd. De opties -s moeten eerst in de rij staan, vóór de opdracht.

adb -s <device> <command>

Voorbeeld:

adb devices

List of devices attached
emulator-5554       device
02157df2d1faeb33    device

adb -s emulator-5554 shell

Voorbeeld # 2:

adb devices -l

List of devices attached
06157df65c6b2633    device usb:1-3 product:zerofltexx model:SM_G920F device:zeroflte
LC62TB413962        device usb:1-5 product:a50mgp_dug_htc_emea model:HTC_Desire_820G_dual_sim device:htc_a50mgp_dug

adb -s usb:1-3 shell

2. Richt op een apparaat, wanneer slechts één apparaattype is aangesloten

Je kunt de enige actieve emulator targeten met -e

adb -e <command>

Of u kunt het enige aangesloten USB-apparaat targeten met -d

adb -d <command>

Een screenshot en video maken (alleen voor kitkat) vanaf een apparaatscherm

Schermopname: optie 1 (puur adb)

Met de shell adb-opdracht kunnen we opdrachten uitvoeren met behulp van de ingebouwde shell van een apparaat. Met de opdracht screencap shell wordt de inhoud vastgelegd die momenteel op een apparaat zichtbaar is en wordt deze opgeslagen in een bepaald afbeeldingsbestand, bijvoorbeeld /sdcard/screen.png :

adb shell screencap /sdcard/screen.png

U kunt vervolgens het pull-commando gebruiken om het bestand van het apparaat naar de huidige map op uw computer te downloaden:

adb pull /sdcard/screen.png

Schermopname: optie 2 (sneller)

Voer de volgende one-liner uit:

(Marshmallow en eerder):

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png

(Nougat en later):

adb shell screencap -p > screen.png

De vlag -p stuurt de uitvoer van de opdracht screencap naar stdout. De Perl-expressie waar dit in wordt doorgegeven, ruimt een aantal end-of-line problemen op Marshmallow en eerder op. De stream wordt vervolgens naar een bestand met de naam screen.png in de huidige map geschreven. Zie dit artikel en dit artikel voor meer informatie.

Video

dit werkt alleen in KitKat en alleen via ADB. Dit werkt niet onder Kitkat Voer de volgende opdracht uit om te beginnen met het opnemen van het scherm van uw apparaat:

adb shell screenrecord /sdcard/example.mp4 , met deze opdracht wordt het scherm van uw apparaat opgenomen met de standaardinstellingen en wordt de resulterende video opgeslagen in een bestand in het bestand /sdcard/example.mp4 op uw apparaat.

Wanneer u klaar bent met opnemen, drukt u op Ctrl + C (z in Linux) in het opdrachtpromptvenster om de schermopname te stoppen. U kunt het schermopnamebestand vervolgens vinden op de door u opgegeven locatie. Merk op dat de schermopname wordt opgeslagen in de interne opslag van uw apparaat, niet op uw computer.

De standaardinstellingen zijn om de standaardschermresolutie van uw apparaat te gebruiken, de video te coderen met een bitrate van 4 Mbps en de maximale schermopnametijd in te stellen op 180 seconden. Voer de volgende opdracht uit voor meer informatie over de opdrachtregelopties die u kunt gebruiken:

adb shell screenrecord –help , dit werkt zonder het apparaat te rooten. Ik hoop dat dit helpt.

Wis applicatiegegevens

Men kan de gebruikersgegevens van een specifieke app wissen met adb :

adb shell pm clear <package>

Dit is hetzelfde als om door de instellingen op de telefoon te bladeren, de app te selecteren en op de knop Gegevens wissen te drukken.

  • pm roept de pakketbeheerder op het apparaat aan
  • clear verwijdert alle gegevens die aan een pakket zijn gekoppeld

Verzenden uitzending

Het is mogelijk om met adb uitzending naar BroadcastReceiver te sturen.

In dit voorbeeld sturen we een uitzending met actie com.test.app.ACTION en string extra in bundel 'foo'='bar' :

adb shell am broadcast -a action com.test.app.ACTION --es foo "bar"

U kunt elk ander ondersteund type bundelen, niet alleen tekenreeksen:

--ez - Boolean
--ei - geheel getal
--el - lang
--ef - zweven
--eu - uri
--eia - int array (gescheiden door ',')
--ela - lange array (gescheiden door ',')
--efa - float array (gescheiden door ',')
--esa - string array (gescheiden door ',')

Om de intentie naar een specifiek pakket / klasse te sturen, kan de parameter -n of -p worden gebruikt.
Verzenden naar pakket:

-p com.test.app

Verzenden naar een specifiek onderdeel ( SomeReceiver klasse in com.test.app package ):

-n com.test.app/.SomeReceiver

Handige voorbeelden:

Installeer en voer een applicatie uit

Gebruik de volgende opdracht om een APK-bestand te installeren :

adb install path/to/apk/file.apk

of als de app bestaat en we deze opnieuw willen installeren

adb install -r path/to/apk/file.apk 

Om een toepassing te verwijderen , moeten we het pakket opgeven

adb uninstall application.package.name

Gebruik de volgende opdracht om een app te starten met een opgegeven pakketnaam (of een specifieke activiteit in een app):

adb shell am start -n adb shell am start <package>/<activity>

Om bijvoorbeeld Waze te starten:

adb shell am start -n adb shell am start com.waze/com.waze.FreeMapAppActivity

backup

U kunt de adb backup gebruiken om een back-up van uw apparaat te maken.

adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] 
           [-system|nosystem] [<packages...>]

-f <filename> geef standaard bestandsnaam op : maakt backup.ab in de huidige map

-apk|noapk back-up van .apks zelf inschakelen / uitschakelen standaard: -noapk

-obb|noobb back-up van extra bestanden in- / uitschakelen standaard: -noobb

-shared|noshared back- -shared|noshared gedeelde opslag / SD-kaart inhoud standaard: -noshared

-all back-up van alle geïnstalleerde toepassingen

-system|nosystem omvatten systeem applicaties standaard: -systeem

<packages> een lijst met pakketten waarvan een back-up moet worden gemaakt (bijv. com.example.android.myapp) (niet nodig als -all is opgegeven)


Gebruik voor een volledige apparaatback-up, inclusief alles

adb backup -apk -obb -shared -all -system -f fullbackup.ab

Opmerking: het maken van een volledige back-up kan lang duren.


Gebruik om een back-up te herstellen

adb restore backup.ab

Installeer ADB op Linux-systeem

Hoe de Android Debugging Bridge (ADB) te installeren op een Linux-systeem met de terminal met behulp van de repositories van uw distro.

Installeren op Ubuntu / Debian-systeem via apt:

sudo apt-get update
sudo apt-get install adb

Installeren op Fedora / CentOS-systeem via yum:

sudo yum check-update
sudo yum install android-tools

Installeren naar Gentoo-systeem met portage:

sudo emerge --ask dev-util/android-tools

Installeren naar openSUSE-systeem met zypper:

sudo zypper refresh
sudo zypper install android-tools 

Installeren naar Arch-systeem met pacman:

sudo pacman -Syyu
sudo pacman -S android-tools

Lijst alle machtigingen die runtime-toekenning van gebruikers op Android 6.0 vereisen

adb shell pm list permissions -g -d 

De interne gegevens van een app bekijken (data / data / ) op een apparaat

Zorg er eerst voor dat een back-up van uw app kan worden gemaakt in AndroidManifest.xml , dat wil zeggen android:allowBackup is niet false .

Backup opdracht:

adb -s <device_id> backup -noapk <sample.package.id>

Maak een tar met opdracht dd:

dd if=backup.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > backup.tar

Pak de teer uit:

tar -xvf backup.tar

U kunt vervolgens de geëxtraheerde inhoud bekijken.

Bekijk activiteitenstapel

adb -s <serialNumber> shell dumpsys activity activities

Zeer handig bij gebruik in combinatie met de watch unix-opdracht:

watch -n 5 "adb -s <serialNumber> shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'"

Cachebestanden van een app bekijken en ophalen

U kunt deze opdracht gebruiken om de bestanden weer te geven voor uw eigen foutopsporende apk:

adb shell run-as <sample.package.id> ls /data/data/sample.package.id/cache

En dit script om uit cache te halen, kopieert eerst de inhoud naar sdcard, trekt en verwijdert het aan het einde:

#!/bin/sh
adb shell "run-as <sample.package.id> cat '/data/data/<sample.package.id>/$1' > '/sdcard/$1'"
adb pull "/sdcard/$1"
adb shell "rm '/sdcard/$1'"

Vervolgens kunt u een bestand als volgt uit de cache halen:

./pull.sh cache/someCachedData.txt

Download databasebestand via ADB

sudo adb -d shell "run-as com.example.name cat /data/da/com.example.name /databases/STUDENT_DATABASE  > /sdcard/file


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow