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.
android-toolsversão35.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.
- Docker com permissão para rodar containers.
adbno host para enviar e testar no Redroid.- Acesso de rede para baixar
ghcr.io/termux/package-builder,termux-packages, dependências Termux eandroid-tools.
cd ~/android_adb_docker_builder
make fetch
make builder
make build ARCH=x86_64
make bundle ARCH=x86_64Para arm64:
make build ARCH=aarch64
make bundle ARCH=aarch64Os artefatos ficam em:
output/termux-packages/output/android-tools_35.0.2-7_x86_64.deboutput/termux-packages/output/android-tools_35.0.2-7_aarch64.deboutput/adb-tools-x86_64.tar.gzoutput/adb-tools-aarch64.tar.gz
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 versionO 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 versionEsse modo e especifico para Redroid/container. Em Android real, /system/bin normalmente e somente leitura.
make test SERIAL=172.17.0.5:5555 ARCH=x86_64
make test SERIAL=172.17.0.6:5555 ARCH=x86_64O teste faz:
- Envio do tarball para
/data/local/tmp. - Extração do bundle.
adb versiondentro do Android.adb start-server.adb devices.adb kill-server.
Nos containers testados, adb devices dentro do Android retornou emulator-5554 device.
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- Para Redroid
x86_64, use o bundlex86_64. - Para Android
arm64-v8areal, use o bundleaarch64. - Redroid pode anunciar
arm64-v8aemro.product.cpu.abilist, mas isso nao garante execucao de binarios CLI arm64 pelo shell. No Redroid 152b0b49a023ab, o bundleaarch64retornou/system/bin/sh: .../adb: No such file or directory; usex86_64nesse container. - O patch local em
scripts/build/toolchain/termux_setup_toolchain_29.shforça/usr/bin/pkg-configcomo hostpkg-config; sem isso o wrapper pode se auto-referenciar e travar.