Files
adb-sideload-free-apps/README.fr.md

92 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 lapplication 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 lAPK 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 lAPK distant validé possède un `versionCode` strictement supérieur ; les
versions égales ou inférieures sont ignorées. Une erreur sur une application ninterrompt 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` lorsquune 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 lordre 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 lidentifiant du paquet APK avant linstallation, 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 dinstaller 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 lAPK 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
```