4 votes

Comment rétrograder n'importe quelle application à la version précédente sans perdre de données sur Android Oreo ?

Comment revenir à une version antérieure de n'importe quelle application sans perdre de données sur Android 8.1 ?

EDIT 0 : Nota Bene : Ici, Fairemail est donné à titre d'exemple, ma question concerne Android en général et non une application en particulier. Je demande en fait comment rétrograder n'importe quelle application à sa version précédente après avoir déjà téléchargé le fichier apk.

Voici les informations sur le package eu.faircode.email que je souhaite rétrograder :

$ du -h eu.faircode.email_1036.apk
13M eu.faircode.email_1036.apk
$ aapt2 dump badging eu.faircode.email_1036.apk | egrep '^$|package|[s]dkVersion:|application-label:|native-code:'
package: name='eu.faircode.email' versionCode='1036' versionName='1.1036' platformBuildVersionName='' platformBuildVersionCode='' compileSdkVersion='29' compileSdkVersionCodename='10'
sdkVersion:'21'
application-label:'FairEmail'
native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'

J'ai essayé de réinstaller cette application sans perdre de données :

$ adb install -r -d eu.faircode.email_1036.apk
Performing Streamed Install
adb: failed to install eu.faircode.email_1036.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

mais cela n'a pas fonctionné, donc j'ai essayé de désinstaller cette application sans perdre de données et ça a marché :

$ adb uninstall -k eu.faircode.email
The -k option uninstalls the application while retaining the data/cache.
At the moment, there is no way to remove the remaining data.
You will have to reinstall the application with the same signature, and fully uninstall it.
If you truly wish to continue, execute 'adb shell cmd package uninstall -k'.
$ adb shell cmd package uninstall -k eu.faircode.email
Success

Mais ensuite l'installation de eu.faircode.email_1036.apk n'a pas fonctionné :

$ adb install eu.faircode.email_1036.apk
Performing Streamed Install
adb: failed to install eu.faircode.email_1036.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
$ adb install -d eu.faircode.email_1036.apk
Performing Streamed Install
adb: failed to install eu.faircode.email_1036.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
$ echo $?
1

Il semble que adb install -d soit seulement utilisable avec des packages débogables selon ceci :

$ adb | grep downgrade
      -d: allow version code downgrade (debuggable packages only)

Pouvez-vous m'aider ?

0 votes

Pour moi, en utilisant Termux, j'ai pu rétrograder connectbot en utilisant cmd package install -d my.apk -- voir aussi github.com/connectbot/connectbot/issues/1031. Apparemment, ce package a le débogage activé? La commande a simplement affiché Succès après quelques secondes et l'application a fonctionné à nouveau sur mon appareil.

3voto

M66B Points 326

Ce que vous voulez n'est pas possible et pour une bonne raison : les structures de données mises à jour (fichiers, bases de données, etc.) sont souvent incompatibles avec les anciennes versions de l'application. C'est pourquoi vous ne pouvez rétrograder que les packages débuggables (à des fins de développement) seulement.

Si vous avez un problème avec FairEmail, veuillez le signaler dans ce forum :

https://forum.xda-developers.com/android/apps-games/source-email-t3824168

1 votes

@M66B La dernière fois, j'ai rétrogradé une autre application car elle plantait sur mon appareil. Cette question n'est pas spécifique à une application en particulier. En fait, je demande comment rétrograder n'importe quelle application vers sa version précédente après avoir déjà téléchargé le fichier apk.

0 votes

@SebMa la réponse était censée être générique, mais je n'étais pas sûr si la question était générale, d'où le lien vers le forum FairEmail

0 votes

Je comprends le risque. Bien que je ne sois pas sûr que les développeurs prennent la peine de mettre à jour leurs structures de données de temps en temps, sinon ils devront souvent réécrire leurs composants d'E/S.

2voto

Milner Points 533

Si votre appareil est rooté, il existe une solution de contournement (à vos propres risques - comme Marcel l'a correctement souligné, il y a une raison pour laquelle c'est rendu quasi impossible) :

  1. installez titanium-backup
  2. sauvegardez l'application que vous souhaitez rétrograder
  3. désinstallez l'application que vous souhaitez rétrograder (complètement, c'est-à-dire l'application et les données)
  4. installez la version plus ancienne
  5. utilisez Titanium Backup pour restaurer uniquement les données

Cela a fonctionné pour moi dans plusieurs cas. Aucune garantie cependant : si la nouvelle version a modifié les structures de ses bases de données/configuration, vous risquez de vous retrouver avec une application instable - et les futures mises à jour pourraient échouer (dans ce cas, utilisez TiBu pour restaurer la sauvegarde complète que vous avez faite initialement - donc assurez-vous de la conserver en sécurité).

0 votes

Le problème est que mon appareil n'est pas rooté. J'ai lu à propos de cela, l'avez-vous essayé ?

1 votes

Aussi, le *mode de migration* dans les paramètres peut être nécessaire pour garantir l'intégrité de la base de données.

1 votes

@SebMa Oui, je l'ai - et j'en suis très content. TiBu fonctionne bien sur Magisk (d'après mon expérience sur plusieurs appareils, vous pouvez ignorer en toute sécurité l'avertissement de TiBu concernant SuperUser dans cette configuration).

0voto

la la Points 1

Nokia TA-1041, android 8.0.0.

Android Debug Bridge version 1.0.39 Version 1:8.1.0+r23-5ubuntu2

Ubuntu 20.04.3 LTS x86_64 Kernel: 5.13.0-40-generic

J'ai en fait rencontré un problème similaire, lors du passage de WeChat de la version 8.0.18 à la version 7.0.21. J'ai essayé adb install -r -d et adb install -r -t -d, aucun des deux ne fonctionne, avec l'erreur [INSTALL_FAILED_VERSION_DOWNGRADE].
Cependant, j'ai essayé cette méthode, ça marche. https://moreless.medium.com/how-to-downgrade-an-android-app-without-losing-chat-history-afea00141601

  1. adb shell cmd package uninstall -k pour désinstaller le package.

  2. adb reboot pour redémarrer votre téléphone.

  3. adb install pour installer une application d'une version inférieure.

Notez que le redémarrage est très important, cette étape ne peut pas être évitée. J'ai en fait essayé adb shell cmd package uninstall -k avant de lire la page ci-dessus. Mais tant que je ne redémarre pas, la version inférieure ne peut pas être installée, avec l'erreur [INSTALL_FAILED_VERSION_DOWNGRADE].

En outre, https://blog.csdn.net/u012852597/article/details/108814434 de cet article, il semble que vous puissiez également essayer de copier le fichier apk dans '/data/local/tmp/' et d'installer l'apk.

0 votes

Votre réponse se contente essentiellement de renvoyer vers medium.com où la solution réelle est décrite, ce qui est une mauvaise pratique pour les réponses car les pages Web liées peuvent changer à tout moment ou le lien peut devenir obsolète, rendant ainsi votre réponse inutile. Veuillez toujours inclure les étapes pertinentes pour résoudre le problème.

0 votes

Modifié. Est-ce bon maintenant ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X