Android
ADB (Android Debug Bridge)
Zoeken…
Invoering
ADB (Android Debug Bridge) is een opdrachtregelprogramma dat werd gebruikt om te communiceren met een emulatorinstantie of een verbonden Android-apparaat.
Een groot deel van dit onderwerp werd opgesplitst in adb shell
Opmerkingen
Lijst met voorbeelden verplaatst naar adb shell :
- Machtigingen voor API 23+ verlenen en intrekken
- Stuur tekst, toets ingedrukt en raak gebeurtenissen aan Android-apparaat via ADB
- Lijst pakketten
- Het display opnemen
- Open ontwikkelaarsopties
- Datum / tijd instellen via adb
- Bestandsrechten wijzigen met de opdracht chmod
- Een "Boot Complete" -uitzending genereren
- Applicatiegegevens afdrukken
- Bekijk externe / secundaire opslaginhoud
- http://stackoverflow.com/documentation/android/9408/adb-shell/29140/adb-shell
- een proces binnen een Android-apparaat doden
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-apparaatA50PL
hierboven, kan dit leeg zijn. -
model:
het apparaatmodel. Soortgelijkproduct
, 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
Ga op hetzelfde netwerk:
- Zorg ervoor dat uw apparaat en uw computer zich in hetzelfde netwerk bevinden.
Sluit het apparaat met een USB-kabel aan op de hostcomputer.
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):
- Verbind het apparaat via USB met de computer
- 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.
- Typ
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
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:
- Een uitzending "opstarten voltooid" verzenden
- Een uitzending "tijd gewijzigd" verzenden na het instellen van de tijd via het adb-commando
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