Android Debug Bridge (ADB)
Android Debug Bridge (ADB) je mocný nástroj pro komunikaci s Android zařízeními, který každý pokročilý uživatel a vývojář by měl znát. V tomto článku si ukážeme praktické využití ADB na příkladu správy souborů v Meta Quest 3, ale principy platí pro všechna Android zařízení.
Co je ADB?
ADB je command-line nástroj, který umožňuje komunikaci mezi počítačem a Android zařízením přes USB nebo Wi-Fi. Původně byl vyvinut pro vývojáře, ale jeho využití sahá daleko za hranice programování.
Klíčové vlastnosti:
- Přenos souborů mezi počítačem a zařízením
- Vzdálené spouštění příkazů na Android systému
- Instalace a správa aplikací
- Debugging a logování
- Systémové úpravy bez nutnosti rootování
Instalace a nastavení
macOS/Linux:
# Homebrew (macOS)
brew install android-platform-tools
# Ubuntu/Debian
sudo apt install android-tools-adb
Windows:
Stáhněte Android SDK Platform Tools z oficiálních stránek Google.
Základní příkazy
Připojení a správa zařízení
# Zobrazení připojených zařízení
adb devices
# Restart ADB serveru (při problémech s připojením)
adb kill-server && adb start-server
Výstup:
List of devices attached
2G0YC5ZGCZ01G4 device
Přenos souborů
# Upload souboru do zařízení
adb push "local_file.mp4" /sdcard/Movies/
# Download souboru ze zařízení
adb pull /sdcard/Movies/video.mp4 ./
# Upload celé složky
adb push ./folder/ /sdcard/destination/
Správa souborů na zařízení
# Zobrazení obsahu složky
adb shell ls -la /sdcard/
# Vytvoření složky
adb shell mkdir /sdcard/NewFolder
# Smazání souboru
adb shell rm "/sdcard/Movies/video.mp4"
# Smazání složky
adb shell rm -rf /sdcard/OldFolder
Pokročilé techniky
Práce se soubory s mezerami v názvu
Při práci se soubory obsahujícími mezery je nutné používat správné uvozovky:
# Správně - s uvozovkami
adb shell "rm '/sdcard/Movies/Wonder Woman 1984.mp4'"
# Špatně - bez uvozovek (způsobí chybu)
adb shell rm /sdcard/Movies/Wonder Woman 1984.mp4
Batch operace
Pro hromadné operace můžete vytvořit bash skripty:
#!/bin/bash
files=(
"video1.mp4"
"video2.mkv"
"video3.avi"
)
for file in "${files[@]}"; do
echo "Uploading: $file"
adb push "$file" /sdcard/Movies/
if [ $? -eq 0 ]; then
echo "✓ Success: $file"
else
echo "✗ Failed: $file"
fi
done
Řešení běžných problémů
Unauthorized zařízení
Problém: adb devices zobrazuje unauthorized
Řešení:
- Zkontrolujte USB debugging v Developer Options
- Potvrďte RSA klíč v zařízení
- Restartujte ADB server:
adb kill-server && adb start-server
Resetování autorizačních klíčů
# Smazání starých klíčů a vygenerování nových
rm -f ~/.android/adbkey ~/.android/adbkey.pub
adb kill-server && adb start-server
Praktické příklady z reálného použití
Správa VR obsahu v Meta Quest 3
# Zobrazení dostupného místa
adb shell df -h /sdcard
# Přenos velkých VR videí
adb push "8K_VR_Video.mp4" /sdcard/Movies/
# Kontrola průběhu přenosu (v jiném terminálu)
adb shell du -sh /sdcard/Movies/
Zálohování herních dat
# Zálohování složky s herními daty
adb pull /sdcard/Android/data/com.game.package ./backup/
# Obnovení ze zálohy
adb push ./backup/com.game.package /sdcard/Android/data/
Optimalizace výkonu
Rychlost přenosu
Rychlost přenosu závisí na několika faktorech:
- USB kabel - používejte kvalitní USB 3.0+ kabely
- USB port - preferujte USB 3.0+ porty
- Velikost souborů - větší soubory = vyšší efektivita
Typické rychlosti:
- USB 2.0: ~20-25 MB/s
- USB 3.0: ~35-45 MB/s
Monitoring přenosu
# Zobrazení detailního průběhu
adb push -v "large_file.mp4" /sdcard/Movies/
# Kontrola volného místa před přenosem
adb shell "df -h /sdcard | grep sdcard"
Bezpečnostní aspekty
USB Debugging
- Aktivujte pouze při potřebě
- Používejte "Always allow from this computer" pouze u důvěryhodných počítačů
- Pravidelně kontrolujte autorizované počítače v Developer Options
Síťové připojení
# ADB přes Wi-Fi (vyžaduje USB aktivaci)
adb tcpip 5555
adb connect 192.168.1.100:5555
Závěr
ADB je nepostradatelný nástroj pro každého, kdo chce využít plný potenciál Android zařízení. Ať už spravujete soubory v Meta Quest 3, vyvíjíte aplikace, nebo jen chcete mít větší kontrolu nad svým zařízením, ADB vám poskytne potřebnou flexibilitu a sílu.
Klíčové takeaways:
- ADB funguje se všemi Android zařízeními
- Správné uvozování je kritické pro soubory s mezerami
- Batch skripty šetří čas při hromadných operacích
- Bezpečnost by měla být vždy prioritou
Pokročilé příkazy pro power users
Systémové informace
# Informace o zařízení
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release
# Stav baterie
adb shell dumpsys battery
# Využití úložiště
adb shell df -h
# Spuštěné procesy
adb shell ps | grep com.oculus
Správa aplikací
# Seznam nainstalovaných aplikací
adb shell pm list packages
# Instalace APK
adb install app.apk
# Odinstalace aplikace
adb uninstall com.package.name
# Vymazání dat aplikace
adb shell pm clear com.package.name
Logování a debugging
# Zobrazení logů v reálném čase
adb logcat
# Filtrování logů podle tagu
adb logcat -s "MyApp"
# Uložení logů do souboru
adb logcat > device_logs.txt
Automatizace s skripty
Bash skript pro hromadné stahování
#!/bin/bash
# download_vr_content.sh
DEST_DIR="/Volumes/ExternalDrive/VR/"
QUEST_DIR="/sdcard/Movies/"
# Vytvoření cílové složky
mkdir -p "$DEST_DIR"
# Získání seznamu souborů
echo "Scanning Quest for video files..."
adb shell "find $QUEST_DIR -name '*.mp4' -o -name '*.mkv'" | while read file; do
filename=$(basename "$file")
echo "Downloading: $filename"
# Stažení s progress barem
adb pull "$file" "$DEST_DIR"
if [ $? -eq 0 ]; then
echo "✓ Downloaded: $filename"
# Volitelně smazat ze zařízení po úspěšném stažení
# adb shell "rm '$file'"
else
echo "✗ Failed: $filename"
fi
done
echo "Download complete!"
Python skript pro monitoring
#!/usr/bin/env python3
import subprocess
import json
import time
def get_device_info():
"""Získání informací o připojeném zařízení"""
try:
result = subprocess.run(['adb', 'devices'],
capture_output=True, text=True)
return result.stdout
except Exception as e:
return f"Error: {e}"
def get_storage_info():
"""Kontrola dostupného místa"""
try:
result = subprocess.run(['adb', 'shell', 'df', '-h', '/sdcard'],
capture_output=True, text=True)
return result.stdout
except Exception as e:
return f"Error: {e}"
def monitor_transfer(file_path):
"""Monitoring průběhu přenosu"""
print(f"Monitoring transfer of: {file_path}")
while True:
try:
result = subprocess.run(['adb', 'shell', 'ls', '-la', file_path],
capture_output=True, text=True)
if result.returncode == 0:
print(f"Transfer in progress... {time.strftime('%H:%M:%S')}")
else:
print("Transfer completed or file not found")
break
except KeyboardInterrupt:
print("\nMonitoring stopped")
break
time.sleep(5)
if __name__ == "__main__":
print("ADB Device Monitor")
print("=" * 30)
print(get_device_info())
print(get_storage_info())
Troubleshooting guide
Časté chyby a jejich řešení
| Chyba | Příčina | Řešení |
|---|---|---|
device unauthorized |
Nepotvrzený RSA klíč | Potvrdit v zařízení, restartovat ADB |
no devices found |
USB debugging vypnutý | Aktivovat Developer Options |
insufficient permissions |
Chybějící oprávnění | Zkontrolovat USB debugging, změnit USB režim |
protocol fault |
Poškozený USB kabel | Vyměnit kabel, zkusit jiný port |
Debug příkazy
# Kontrola ADB verze
adb version
# Verbose výstup pro debugging
adb -v devices
# Restart s debug informacemi
adb kill-server
ADB_TRACE=all adb start-server
Best practices
1. Organizace souborů
# Vytvořte strukturu složek
adb shell mkdir -p /sdcard/Media/{Movies,VR,Games}
adb shell mkdir -p /sdcard/Backups/{Apps,Data}
2. Pravidelné zálohování
# Automatické zálohování důležitých dat
adb pull /sdcard/Android/data/important.app ./backups/$(date +%Y%m%d)/
3. Monitoring výkonu
# Sledování využití CPU a paměti
adb shell top -n 1
adb shell cat /proc/meminfo
Integrace s dalšími nástroji
Použití s Git
# Automatické commitování záloh
git add backups/
git commit -m "ADB backup $(date)"
Kombinace s rsync
# Synchronizace s lokálním úložištěm
adb pull /sdcard/DCIM/ ./photos/
rsync -av ./photos/ /backup/quest-photos/
![]()






