Skip to content

Repository files navigation

Android-DEX

Transforme um Android conectado em um desktop no Linux — e cuide do aparelho de ponta a ponta. Uma aplicação Qt/QML e dois toolkits irmãos sobre as ferramentas oficiais (scrcpy, adb, fastboot, heimdall, Magisk).


License Shell Platform android-dex android-dex-flash PRs


✨ O que é isto?

Um workspace com três camadas deliberadamente separadas. A interface nunca executa comandos livres: ela conversa com um serviço local, que delega apenas operações allowlisted aos toolkits existentes.

Projeto O que faz Risco Root?
android-dex-ui Aplicação nativa PySide6/Qt Quick, sessões DeX, Wi‑Fi, diagnóstico e manutenção guiada. 🟢/🟠 isolado por fluxo ❌ não
🖥️ android-dex-kit Experiência desktop/DeX via scrcpy + ADB, com modo automático, perfis OEM, supervisor resiliente, systemd e udev. 🟢 baixo ❌ não
🔧 android-dex-flash Diagnóstico e manutenção guiada, com bundles não executáveis e descritores assinados; gravações sem validação permanecem bloqueadas. 🔴 alto ⚠️ opcional

Note

São separados de propósito: espelhar a tela é inofensivo; mexer em bootloader e partições pode brickar o aparelho. A separação evita apertar o botão errado.


🧭 Índice


🏗️ Arquitetura

flowchart TD
    UI["android-dex-ui<br/><i>PySide6 + Qt Quick/QML</i>"]
    D["android-dexd<br/><i>JSON-RPC · socket 0600 · UID</i>"]
    C["lib/common.sh<br/><i>fundação compartilhada</i><br/>log · XDG · backoff · ADB helpers"]

    subgraph KIT["🖥️ android-dex-kit  ·  sem root"]
      direction TB
      A1["android-dex<br/><i>supervisor + reconexão</i>"]
      A2["android-dex-connect<br/><i>assistente Wi-Fi</i>"]
      A3["scrcpy + ADB"]
      A1 --> A3
      A2 --> A3
    end

    subgraph FLASH["🔧 android-dex-flash  ·  alto risco"]
      direction TB
      B0["flash-common.sh<br/><i>guard rails · dry-run · consentimento</i>"]
      B1["drivers/<br/>pixel · samsung · xiaomi<br/>motorola · oneplus · generic"]
      B2["fastboot · heimdall · Magisk"]
      B0 --> B1 --> B2
    end

    UI -->|"core.sock"| D
    D -->|"argv allowlisted"| KIT
    D -->|"plano vinculado + confirmação"| FLASH
    C --> KIT
    C --> FLASH

    style C fill:#12233c,stroke:#3ddc84,color:#dbe6f5
    style UI fill:#0e1b2f,stroke:#13bdf2,color:#dbe6f5
    style D fill:#12233c,stroke:#59d35d,color:#dbe6f5
    style KIT fill:#0e1b2f,stroke:#3ddc84,color:#dbe6f5
    style FLASH fill:#0e1b2f,stroke:#4f8cff,color:#dbe6f5
Loading

✨ Interface Qt/QML

A experiência começa pelo modo desktop. Firmware e bootloader ficam em Manutenção avançada, depois de um divisor e com linguagem visual âmbar.

cd android-dex-ui
python3 -m venv .venv
. .venv/bin/activate
pip install -e .

android-dex-ui          # uso real; inicia android-dexd quando necessário
android-dex-ui --demo   # aparelho fictício, não chama adb/scrcpy/fastboot
android-dex-setup       # verifica dependências externas

O daemon por usuário continua supervisionando a sessão quando a janela fecha. O transporte Linux usa $XDG_RUNTIME_DIR/android-dex/core.sock; diretório e socket são privados (0700/0600) e o UID do cliente é verificado.

👉 Instalação, contrato e testes em android-dex-ui/README.md.


🖥️ android-dex — desktop sem root

Modo automático tenta DeX somente quando SDK/capacidades o sustentam e cai para mirror quando houver dúvida ou falha rápida. Perfis OEM ajustam launcher e decorações; USB/Wi-Fi reconectam com backoff exponencial.

Instalar e usar (30 segundos)
cd android-dex-kit
./install.sh                 # instala scrcpy/adb, udev, launcher, systemd

# no aparelho: Opções do desenvolvedor → Depuração USB
android-dex                  # auto-detecta e sobe a sessão

android-dex-connect          # migra p/ Wi-Fi (emparelha e salva o IP)
android-dex --wifi           # conecta pelo IP salvo
android-dex --list           # lista aparelhos; --device escolhe um deles
android-dex --status         # estado, dispositivos e sessão ativa
android-dex-doctor           # diagnóstico somente leitura + capacidades

👉 Detalhes completos em android-dex-kit/README.md.


🔧 android-dex-flash — manutenção do aparelho

Um orquestrador das ferramentas oficiais de cada fabricante — nunca um "motor de flash" próprio. Existe para reduzir erro humano, não para eliminar o risco físico.

Warning

Só use no seu próprio aparelho. Desbloqueio de bootloader, root e flash podem brickar o aparelho e frequentemente são irreversíveis (Knox e-fuse, Play Integrity, garantia).

O que torna "seguro e amigável" real:

  • 🧪 --dry-run é o padrão — nada é gravado até você pedir --commit.
  • ⌨️ Consentimento digitado — antes de gravar, você digita SIM (não aceita y).
  • 🛡️ Guard rails — confere modelo, bateria mínima, hash sha256 dos insumos e faz backup do boot.
  • ⚠️ Avisos por marca — ex.: o Knox e-fuse da Samsung é permanente.
Comece sempre pelo diagnóstico (risco ZERO)
cd android-dex-flash
./install.sh

android-dex-flash info       # marca/modelo/SO/bootloader + o que é possível e o que se perde
android-dex-flash caps       # capacidades e riscos do seu modelo
android-dex-flash check-rollback DIR # assinatura + anti-downgrade
android-dex-flash backup-boot        # backup com manifesto e SHA-256
android-dex-flash extract-payload payload.bin DIR

# ações que gravam — dry-run por padrão:
android-dex-flash unlock             # simula (mostra a sequência exata)
android-dex-flash unlock --commit    # só em drivers dedicados certificados
android-dex-flash flash-firmware DIR # roteiro guiado; não executa scripts

👉 Detalhes completos e limites honestos em android-dex-flash/README.md.


📱 Compatibilidade por marca

Modo desktop (android-dex):

Marca / SO Experiência Ajuste
Samsung One UI 8 / Android 15+ 🟢 DeX nativo no display virtual funciona direto
Pixel / AOSP 15+ 🟡 desktop mode (às vezes exige tela física) START_APP
Xiaomi / Oppo / Motorola 🟡 abre vazio, precisa de launcher START_APP + VD_SYSTEM_DECORATIONS=0
Qualquer aparelho 🟢 MODE="mirror" sempre funciona

Manutenção (android-dex-flash):

Marca Desbloqueio Observação central
Pixel / AOSP fastboot flashing unlock caminho mais limpo (referência)
Samsung modo Download + confirmação física 🔥 queima o Knox — permanente; usa heimdall
Xiaomi/Redmi/POCO Mi Unlock oficial + espera a ferramenta guia, não burla
Motorola/Lenovo código do site oficial get_unlock_data → e-mail → oem unlock
OnePlus/Oppo/Realme/Sony fastboot flashing unlock Oppo/Realme podem exigir app oficial

🔒 Segurança (android-dex-flash)

ação destrutiva
   └─ fingerprint do device ......... quem é o aparelho?
   └─ avisos por OEM ................ o que você perde?
   └─ --dry-run (padrão) ............ mostra os comandos, não grava
        └─ driver permite --commit? . root/firmware/restore: não (fail-closed)
        └─ --commit (somente ação certificada)
             └─ bateria ≥ 40% ....... trava se estiver baixa
             └─ modelo confere ...... recusa firmware de outro modelo
             └─ hash sha256 ......... integridade dos insumos
             └─ digitar "SIM" ....... consentimento explícito
                  └─ executa + loga tudo (auditoria)

A ferramenta é honesta sobre o que não faz: não burla espera de unlock, não desbloqueia aparelhos travados pelo fabricante e não restaura Knox/Play Integrity perdidos.

Na interface, um plano destrutivo expira em 10 minutos e vincula serial, modelo, fingerprint, OEM, ação, caminhos canônicos, tamanhos e SHA-256. No apply, serviço e script repetem identidade, política do driver, bateria e hashes. KNOX PERMANENTE é exigido para Samsung; as demais confirmações usam SIM. A frase digitada nunca é persistida nem incluída nos logs.


🗺️ Roadmap

Plano histórico em ROADMAP.md. A UI Qt/QML, o contrato android-dex.machine.v1, o daemon privado e a automação de AppImage já estão implementados nesta branch; a matriz física multi-OEM permanece uma atividade de validação de hardware, sem ampliar os drivers que aceitam --commit.

  • A1 — regra udev por vendor id (compatibilidade plug-and-play entre marcas)
  • A3 / A4 — perfis por dispositivo + detecção automática de dex vs mirror
  • Flash Fase 0device-info (pronto) → Fases 1–3 (Pixel/Samsung/Xiaomi/Motorola/OnePlus)

🙏 Créditos

Construído sobre scrcpy (Genymobile) e as ferramentas oficiais platform-tools (Google), Heimdall e Magisk. Inspirado no Android-Dex (Shrey113). Firmware sempre de fontes oficiais do fabricante.

⬆ voltar ao topo · Feito com shell, cuidado e muitos avisos de segurança.

About

🖥️ Android como desktop no Linux (scrcpy+ADB, sem root) + 🔧 toolkit de manutenção (unlock/root/firmware) com dry-run e guard rails. Shell puro.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages