https://f-droid.org/manual/fdroid.html : Voici le lien vers la doc officielle. Tout est dit…
… nan c’est pas vrai.
Donc, pour les comiques qui songeraient à mettre en place un dépôt (perso|local|de test) pour des APK, par exemple pour se passer des services Google, éviter de rechercher à chaque fois où se trouve ce %$~£¤ d’APK sur sa carte SD, partager des APK avec sa famille, ou tout simplement pour la beauté du geste, voici quelques notes qui forment un vague didacticiel rapide, qui devrait avoir comme effet secondaire de préserver l’intégrité mentale des gens dit “normaux” (ceux qui cachent maladroitement un sourire en coin quand ils entendent dire : “Java c’est portable”). Je me limite à un simple dépôt binaire, fdroidserver pouvant également servir de système de build pour construire les paquets depuis les sources…
On commence par créer un dossier de travail (~/wip
), parce qu’on va
télécharger plus tard des ZIP dedans (et qu’on n’aime pas décompresser les ZIP
dans son $HOME
pour ensuite s’apercevoir que l’archive ne contenait pas de
dossier de premier niveau…). Puis on y clone les sources du serveur (c’est du
Python, bon choix !) :
git clone git://gitorious.org/f-droid/fdroidserver.git
Bien penser à installer si nécessaire les modules python requis :
apt-get install python-magic python-imaging
On doit maintenant récupérer le SDK Android, on sélectionne l’archive adt-
bundle pour son architecture sur la page
https://developer.android.com/sdk/index.html et nos yeux incrédules et
globuleux notent qu’elle fait 500 Mo. Solution : aller regarder des vidéos de
chat en attendant que le téléchargement finisse. On décompresse le ZIP, et on
obtient par exemple le dossier ~/wip/adt-bundle-linux-x86_64-20131030
(j’ai
pris la version 64-bit).
Note à bénêt avec la version x86_64 : lancer la commande file
sur des
binaires au hasard (aapt…) et s’apercevoir qu’ils sont compilés en 32-bit.
Google perd en crédibilité là, mais grave, je culpabilise moins d’avoir ignoré
les multiples mails de leurs recruteurs :
apt-get install libc6-i386 lib32z1 lib32stdc++6
On passe à la création du dépôt proprement dit :
cd ~/wip
# dossier de travail du dépôt
mkdir ~/wip/toto
# dossier "final" du dépôt
mkdir ~/wip/toto/repo
cp -a fdroidserver/config.sample.py toto/config.py
toto
sera le dossier de travail du dépôt, et toto/repo
le dossier contenant
l’index du dépôt, mais aussi les APK (donc copiez les dedans maintenant ! :).
config.py
contiendra la configuration du dépôt, il est convenablement
commenté par défaut, mais voici pour référence une version minimale (à
adapter) :
sdk_path = "/home/monuser/wip/adt-bundle-linux-x86_64-20131030/sdk"
build_tools = "android-4.4"
icon_max_size = 72
repo_maxage = 365
repo_url = "https://example.org/repo"
repo_name = "Test repository"
# les mollusques vaincront
repo_icon = "poulpe.png"
repo_description = """
Test repository.
"""
archive_older = 0
repo_keyalias = None
build_server_always = False
Tout devrait être prêt à ce stade, donc on lance la génération de l’index :
cd ~/wip/toto
# NB : dossier à mettre dans le $PATH pour éviter de retaper le chemin complet
../fdroidserver/./fdroid update
Et évidemment chez moi ça n’a pas fonctionné. J’ai dû générer la classe getsig en java, un message d’erreur me le demandant :
cd ~/wip/fdroidserver/fdroidserver/getsig
./make.sh
# grmbl il me faut javac
sudo apt-get install openjdk-6-jdk
# regarder avec résignation dbus, des -dev et du java s'installer :3
./make.sh
On relance fdroid update
, et cette fois-ci ça devrait fonctionner. S’il se
plaint de metadata manquantes, lancer fdroid update -c
puis à nouveau
fdroid update
. Touche finale, copier le dossier ~/wip/toto/repo
sur le
serveur web pour qu’il soit servi correctement.
Pour finir, ouvrir le client FDroid, bouton menu > Gestion de dépôts, et
ajouter notre dépôt de test (https://example.org/repo
comme spécifié dans le
config.py
), et pouf pouf, ça fait des APK. :)
En vrac pour aller plus loin :
- Ajouter de vraies metadata : après voir lancé
fdroid update -c
, remplir~/wip/toto/metadata/*.txt
. - Signer le dépôt : générer une clé,
grep key ~/wip/fdroidserver/config.sample.py
et remplir les variables - Redistribution : attention, il n’est probablement pas autorisé de redistribuer certains APK en dehors du Play Store, donc à réserver pour un usage privé dans le cadre du cercle familial…
C’est tout pour aujourd’hui, vous pouvez aller en récréation dans la cour.