Android Debug Bridge (ADB)

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í:

  1. Zkontrolujte USB debugging v Developer Options
  2. Potvrďte RSA klíč v zařízení
  3. 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/

Loading