92 lines
3.5 KiB
Markdown
92 lines
3.5 KiB
Markdown
# 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
|
||
```
|