Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android ADB Builder para Redroid

Este projeto compila adb/fastboot Android-native para uso dentro do shell Android, principalmente em Redroid. A receita usa termux-packages e o pacote android-tools baseado em nmeum/android-tools, porque o adb oficial do AOSP isolado depende do build system completo do Android.

Resultado Validado

  • android-tools versão 35.0.2-7.
  • ABI x86_64: compilado, empacotado e testado em Redroid Android 15 (172.17.0.5:5555) e Redroid Android 12 (172.17.0.6:5555).
  • ABI aarch64/arm64-v8a: compilado com sucesso. Use em Android arm64 real ou Redroid com native bridge compatível.
  • Instalação de teste em /data/local/tmp/adb-tools-x86_64.

Pré-Requisitos

  • Docker com permissão para rodar containers.
  • adb no host para enviar e testar no Redroid.
  • Acesso de rede para baixar ghcr.io/termux/package-builder, termux-packages, dependências Termux e android-tools.

Build

cd ~/android_adb_docker_builder
make fetch
make builder
make build ARCH=x86_64
make bundle ARCH=x86_64

Para arm64:

make build ARCH=aarch64
make bundle ARCH=aarch64

Os artefatos ficam em:

  • output/termux-packages/output/android-tools_35.0.2-7_x86_64.deb
  • output/termux-packages/output/android-tools_35.0.2-7_aarch64.deb
  • output/adb-tools-x86_64.tar.gz
  • output/adb-tools-aarch64.tar.gz

Instalação no Redroid via ADB

adb connect 172.17.0.5:5555
adb -s 172.17.0.5:5555 push output/adb-tools-x86_64.tar.gz /data/local/tmp/
adb -s 172.17.0.5:5555 shell
cd /data/local/tmp
tar -xzf adb-tools-x86_64.tar.gz
chmod -R 755 adb-tools-x86_64
./adb-tools-x86_64/adb-tools-env.sh adb version
./adb-tools-x86_64/install.sh /data/local/tmp
export PATH=/data/local/tmp/bin:$PATH
adb version

O wrapper adb-tools-env.sh configura HOME, PATH e LD_LIBRARY_PATH, necessários porque o adb precisa criar $HOME/.android e carregar bibliotecas Termux empacotadas no bundle. O install.sh cria wrappers simples em /data/local/tmp/bin/adb e /data/local/tmp/bin/fastboot.

Para Redroid, como o Android esta dentro de um container Docker e pode ser alterado via docker exec como root, tambem da para deixar adb direto em /system/bin:

./scripts/install-system-bin-redroid.sh 2b0b49a023ab x86_64
adb -s 172.17.0.5:5555 shell adb version

Esse modo e especifico para Redroid/container. Em Android real, /system/bin normalmente e somente leitura.

Teste Automatizado

make test SERIAL=172.17.0.5:5555 ARCH=x86_64
make test SERIAL=172.17.0.6:5555 ARCH=x86_64

O teste faz:

  • Envio do tarball para /data/local/tmp.
  • Extração do bundle.
  • adb version dentro do Android.
  • adb start-server.
  • adb devices.
  • adb kill-server.

Nos containers testados, adb devices dentro do Android retornou emulator-5554 device.

Uso com Python e uiautomator2

Depois de instalar o Python do outro projeto em /data/local/tmp, deixe o adb deste projeto no PATH antes de rodar scripts que usam adbutils/uiautomator2:

cd /data/local/tmp
export HOME=/data/local/tmp
export PATH=/data/local/tmp/bin:$PATH
adb start-server
adb devices
python3 -m pip install uiautomator2
python3 - <<'PY'
import uiautomator2 as u2
print("uiautomator2 import ok", u2.__version__)
PY

Observações

  • Para Redroid x86_64, use o bundle x86_64.
  • Para Android arm64-v8a real, use o bundle aarch64.
  • Redroid pode anunciar arm64-v8a em ro.product.cpu.abilist, mas isso nao garante execucao de binarios CLI arm64 pelo shell. No Redroid 15 2b0b49a023ab, o bundle aarch64 retornou /system/bin/sh: .../adb: No such file or directory; use x86_64 nesse container.
  • O patch local em scripts/build/toolchain/termux_setup_toolchain_29.sh força /usr/bin/pkg-config como host pkg-config; sem isso o wrapper pode se auto-referenciar e travar.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages