La plupart des apks ont un répertoire /lib à l'intérieur avec des fichiers .so qui peuvent faire plusieurs mégaoctets. Certains sont même livrés avec des librairies pour différentes architectures (arm, mips, x86). Les librairies pour l'architecture concernée sont copiées dans /data/app-lib/[package name]
au moment de l'installation, donc ils prennent deux fois plus de place.
J'ai essayé de retirer l'apk du dossier /lib, de le réécrire, zipalign
et remettre à l'emplacement d'installation /data/app
o /system/app
o /system/priv-app
pour récupérer de l'espace.
J'ai essayé avec Chrome v78, il est passé de 45 mb apk à 15 mb... D'autres applications aussi. Tout semble fonctionner.
Quelqu'un pense que c'est une mauvaise idée ? IMO le système Android même devrait effectuer cette opération par défaut au moment de l'installation...
edit 13 Nov
J'ai écrit un script pour automatiser l'opération de dépouillement, il suffit de copier l'apk à dépouiller dans un répertoire où réside ce script, ainsi que zip
y zipalign
binaires.
#!/system/bin/sh
for filename in `find . -name '*.apk'`
do
./zip -d $filename "lib/*"
./zipalign -fv 4 $filename $filename.new|tail
mv $filename.new $filename
chmod 644 $filename
done;
Sur mon appareil, je peux échanger les apks originales avec les apks dépouillées à la volée et elles fonctionnent (généralement) sans redémarrage, même les applications système.