# adb-sideload-free-apps Installer des applications Android libres avec ADB depuis F-Droid, les releases GitHub, GitLab ou Codeberg, ou des pages HTTPS génériques. [English](README.md) ## Prérequis - Python 3.11 ou supérieur - `adb` (Android Debug Bridge) dans le `PATH` - `aapt2` ou `aapt` (Android SDK Build Tools) dans le `PATH` ## Démarrage rapide ```bash python -m pip install -e . cp config.example.toml config.toml # Modifier config.toml pour ajouter les applications python -m sideload ``` ## Utilisation ```text sideload [APP] [--list] [--update-all] [--device SERIAL] [--dry-run] [--config PATH] ``` - `APP` : nom de l’application dans la configuration (omettre pour la sélection interactive) - `--list` : lister les applications configurées - `--device`, `-s` : numéro de série du périphérique ADB - `--dry-run` : résoudre, télécharger et valider sans installer - `--update-all` : inspecter toutes les applications configurées sur un périphérique choisi une seule fois et mettre à jour uniquement les applications installées dont l’APK distant possède un `versionCode` supérieur (incompatible avec `APP` et `--list`) - `--config`, `-c` : chemin vers `config.toml` (par défaut : `./config.toml`) `--update-all` sélectionne le périphérique ADB une seule fois, puis vérifie chaque paquet configuré avec `adb shell dumpsys package`. Les applications absentes du périphérique sont signalées et ignorées sans téléchargement. Une application installée est mise à jour uniquement lorsque l’APK distant validé possède un `versionCode` strictement supérieur ; les versions égales ou inférieures sont ignorées. Une erreur sur une application n’interrompt pas le traitement des suivantes. La commande affiche un bilan et retourne un code non nul si une mise à jour a échoué. ## Configuration Voir `config.example.toml`. Les sources prises en charge sont : | Source | Champs requis | | --- | --- | | `fdroid` | `url` (page F-Droid) | | `github` | `url` (dépôt) | | `gitlab` | `url` (projet) | | `codeberg` | `url` (dépôt Codeberg) | | `generic` | `url`, `asset_pattern` (page ou répertoire HTTPS) | Chaque application doit aussi définir `name` et `package`. Pour GitHub, GitLab et Codeberg, définir `asset_pattern` lorsqu’une release contient plusieurs APK compatibles. Les APK de debug, de test et non signés sont rejetés par défaut. La source `generic` suit les liens HTML HTTPS depuis `url`. Utiliser `intermediate_patterns` dans l’ordre pour parcourir les répertoires ; lorsque plusieurs liens correspondent, un motif avec des groupes de capture numériques sélectionne le plus grand tuple numérique. `asset_pattern` est obligatoire et doit correspondre à un seul APK final. Les champs optionnels `headers` et `sha256` sont pris en charge ; les valeurs des en-têtes ne sont jamais écrites dans les logs. `aapt2` valide l’identifiant du paquet APK avant l’installation, avec `aapt` comme solution de secours pour les anciennes versions des Android SDK Build Tools. Au moins un des deux outils doit être disponible dans le `PATH`. Le script refuse d’installer un APK si aucun outil ne peut le valider. Avec `--update-all`, `aapt2 dump badging` (avec fallback `aapt dump badging`) lit également le `versionCode` de l’APK distant avant de décider si une installation est nécessaire. Pour utiliser ADB en Wi-Fi, configurer une adresse explicite après avoir activé le débogage sans fil : ```toml [adb] mode = "wifi" address = "192.168.1.42:5555" ``` ## Tests ```bash pip install pytest python -m pytest tests/ -v ```