LinuxInfo
Dezoom

Gestion des applications

Dernière mise à jour : LineageOs14 - Android 7.1

Ce document indique comment identifier, installer, supprimer, mettre à jour, sauvegarder, restaurer les applications sur un périphérique d'Android.

1 - Introduction

1.1 - Terminologie

Une application possède

net.programmierecke.radiodroid2 
RadioDroid 

A noter

net.programmierecke.radiodroid2_65.apk

1.2 - Applications système / utilisateur

On distingue les applications système, installées par le fabricant (Original ou OEM) et les applications installées par l'utilisateur

1.3 - Contenu d'un paquet

Un paquet .apk est une archive compressée au format zip. Pour lister son contenu :

$ unzip RadioDroid-net.programmierecke.radiodroid2-76-v0.66.apk
$ ls -l
total 10168
-rw-r--r-- 1 philippe philippe 5092 nov. 30 1979 AndroidManifest.xml
-rw-r--r-- 1 philippe philippe 5525068 nov. 30 1979 classes.dex
drwxr-xr-x 2 philippe philippe 4096 sept. 17 07:15 META-INF
drwxr-xr-x 3 philippe philippe 4096 sept. 17 07:15 okhttp3
-rw-r--r-- 1 philippe philippe 4154586 sept. 17 07:15 RadioDroid-net.programmierecke.radiodroid2-76-v0.66.apk
drwxr-xr-x 35 philippe philippe 4096 sept. 17 07:15 res
-rw-r--r-- 1 philippe philippe 689952 nov. 30 1979 resources.arsc

1.4 - Caractéristiques détaillées

Pour afficher les détails d'une application, dont le fichier manifest, installer l'application

Apk Analyzer - sk.styk.martin.apkanalyzer

2 - Liste des applications - cmd package list

crackling:/ $ cmd package list packages
crackling:/ $ cmd package list packages radio
package:com.android.fmradio
package:ch.radiosfrancaises
package:com.streema.simpleradio
crackling:/ $ cmd package list packages -s radio
package:com.android.fmradio
crackling:/ $ cmd package list packages -3 |grep radio
package:ch.radiosfrancaises
package:com.streema.simpleradio
gts210velte:/ $ cmd package list packages -i busybox                           
package:ru.meefik.busybox installer=org.fdroid.fdroid.privileged
crackling:/ $ cmd package list packages -f radio
package:/system/priv-app/FMRadio/FMRadio.apk=com.android.fmradio
package:/data/app/ch.radiosfrancaises-2/base.apk=ch.radiosfrancaises
package:/data/app/com.streema.simpleradio-2/base.apk=com.streema.simpleradio

Dans cet exemple,

le fichier de l'application "com.android.fmradio" a pour nom FMRadio.apk (application système)
le fichier de l'application "ch.radiosfrancaises" a pour nom base.apk (application utilisateur)

3 - Gestion des applications utilisateur

3.1 - Emplacements et noms des fichiers

Les commandes adb install et pm install installent les applications dans des répertoires individuels de /data/app/

gts210velte:/ # ls /data/app/org.fdroid.fdroid-1/
base.apk lib oat
gts210velte:/ # ls -l /data/app/com.amaze.filemanager-1                   <
total 6260
-rw-r--r-- 1 system system 6398219 2018-09-15 15:46 base.apk
drwxr-xr-x 2 system system 4096 2018-09-15 15:46 lib
drwxrwx--x 3 system install 4096 2018-09-15 15:46 oat

3.2 - Utilisation de  Package manager : pm <cmd>

Les commandes suivantes supposent que les applications à installer sont disponibles sur le périphériques Android

crackling:/ $ pm install <application_téléchargée.apk>
crackling:/ $ pm install-multiple paquet1.apk paquet2.apk
crackling:/ $ pm clear org.cyanogenmod.weather.provider
crackling:/ $ pm uninstall com.pagesjaunes   
crackling:/ $ pm uninstall -k com.pagesjaunes 

3.3 - Utilisation de adb install/uninstall

Les commandes suivantes supposent que les applications à installer sont disponibles sur le PC

$ adb install <application_téléchargée.apk>      # équivalent à adb shell pm install <application_téléchargée.apk>
$ adb uninstall com.pages.jaunes               # équivalent à adb shell pm uninstall com.pagesjaunes
$ adb uninstall -k com.pages.jaunes            # équivalent à adb shell pm uninstall -k com.pagesjaunes

Pour mémoire, la commande adb push copie un fichier quelconque à n'importe quel emplacement, mais ne l'installe pas, alors que la commande adb install installe un fichier.apk dans /data/app.

4 - Applications système

4.1 - Installation

$ unzip -l RadioDroid-net.programmierecke.radiodroid2-76-v0.66.apk |grep /lib
$ unzip -l tunein.player.230661.apk |grep /lib
588868 1980-00-00 00:00 lib/armeabi-v7a/libcomScore.so
13460 1980-00-00 00:00 lib/armeabi-v7a/libcrashlytics-envelope.so
308724 1980-00-00 00:00 lib/armeabi-v7a/libcrashlytics.so
971596 1980-00-00 00:00 lib/armeabi-v7a/libtunein.dec.so
38096 1980-00-00 00:00 lib/armeabi-v7a/libtunein.mms.so
5966292 1980-00-00 00:00 lib/armeabi-v7a/libtunein.uap.so
71100 1980-00-00 00:00 lib/armeabi-v7a/libunwind-crashlytics.so

4.1.1 - Installation application ne contenant pas de librairies

$ adb root
$ adb remount # ou bien adb shell mount -o rw,remount /system
$ adb push <appli.apk> /system/priv-app
$ adb shell chmod 644 /system/priv-app/<appli.apk>
$ adb reboot
$ adb reboot
$ adb remount
$ adb shell mkdir /system/priv-app/<nom_application>
$ adb shell chomod 755 /system/priv-app/<nom_application>
$ adb push <appli.apk> /system/priv-app/<nom_application><nom_application.apk>
$ adb shell chmod 644 /system/priv-app/<nom_application><nom_appli.apk>>
$ adb reboot

4.1.2 - Applications avec librairies incluses

$ adb install tunein.player.230661.apk
$ adb root
$ adb remount # ou bien adb shell mount -o rw,remount /system
$ adb shell
$ adb push tunein.player.230661.apk /system/priv-app/
$ adb reboot

4.2 - Désinstallation et mise à jour

4.2.1 Désinstallation

Installer et utiliser l'une des applications suivantes, les droits root sont nécessaires

4.2.2 Mise à jour

La mise à jour d'une application système nécessite de

5 - Sauvegarde

5.1 Sauvegarde complète - adb backup

Cette méthode permet de sauvegarder les applications (utilisateur et système ?) et leurs données (si root ?) vers et à partir d'un fichier archive (.ab).

Attention : Cette méthode possède plusieurs limitations

Le backup ne fonctionne que pour les applications ayant la propriété FLAG_ALLOW_BACKUP listée dans leur fichier manifest .xml. Utiliser, par exemple, l'application "Apk Analyzer" ou "System Info for Android" pour la visualiser. Si l'application ne possède pas cette propriété, la commande s'exécute, sans message d'erreur, mais l'application n'est pas sauvegardée.

A préciser : Les droits root sont nécessaires et suffisants (?) pour la sauvegarde des données (utilisateur, application?), des données sur la carte SD, des pplications sur la carte SD et des applications système

Bugs ?

Liens

5.1.1 Sauvegarde

adb backup peut-être utilisée pour sauvegarder avec pour paramètres

adb backup -apk\ -shared\ -all\ -system

Le fichier de sauvegarde par défaut est backup.ab. Pour effectuer la sauvegarde dans un fichier particulier, utiliser l'option -f.

Exemple :

$ adb backup -all -apk -f mon_backup.ab
$ adb backup -apk -f backup_radiosfrancaises.ab -ch.radiosfrancaises
Now unlock your device and confirm the backup operation...
$ ls -l |grep -i radios
-rw-r----- 1 philippe philippe 3158444 mai 9 18:57 backup_radiofrancaises.ab
-rw-r--r-- 1 philippe philippe 3260564 mai 8 12:42 RadiosFrançaises.apk
$ ls -l |grep radiodroid
-rw-r----- 1 philippe philippe 47 mai 9 18:55 backup_radiodroid.ab
-rw-r--r-- 1 philippe philippe 3889174 mai 8 12:53 net.programmierecke.radiodroid2_65.apk

5.1.2 Restauration

$ adb restore backup_radiofrancaises.ab 
Now unlock your device and confirm the restore operation.

5.2 - Sauvegarde des applications utilisateur sans données

Cette méthode permet de sauvegarder de façon sélective, tout ou partie des applications utilisateur, mais sans les données associées.

5.2.1 Sauvegarde

Depuis le périphérique, installer une application de backup telle que "APK Extractor (gratuite avec publicité) " ou "Sauvegarde et Restauration d'applications (plus complète, gratuite avec publicité)" et effectuer la sauvegarde des applications souhaitées, par exemple dans /storage/emulated/0/backup_app.

Depuis le PC, récupérer les applications :

$ adb pull /storage/emulated/0/backup_app

5.2.2 Restauration

Le périphérique étant en mode normal (device)

$ cd backup_app
$ rename 's/ /_/g' *.apk
$ for i in *.apk; do adb install -r $i; done

L'option -r vaut pour réinstallation éventuelle de l'application si elle est déjà présente