Cum să faceți downgrade la orice aplicație la versiunea anterioară fără a pierde date pe Android Oreo? (Android, Adb, 8.0 Oreo, 8.1 Oreo, Downgrade)

SebMa a intrebat.
a intrebat.

Howto downgrade any app to the previous version without losing data on android 8.1 ?

EDIT 0 : Nota Bene : Aici, Fairemail este dat ca exemplu, întrebarea mea nu este specifică aplicației, ci specifică Android. De fapt, întreb cum să fac downgrade la orice aplicație la versiunea sa versiunea anterioară după ce am descărcat deja apk-ul.

Iată care sunt informațiile despre pachet eu.faircode.email Vreau să împing la downgrade :

$ 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'

Am încercat să reinstalez această aplicație fără pierderi de date :

$ 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]

dar nu a funcționat, așa că am încercat dezinstalarea acestei aplicații fără pierdere de date și a funcționat :

$ 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

Dar apoi s-a încercat instalarea de eu.faircode.email_1036.apk nu a funcționat :

$ 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

Se pare că adb install -d este utilizabilă doar cu pachete depanabile doar în funcție de acest lucru :

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

Mă puteți ajuta?

2 răspunsuri
M66B

Ceea ce doriți nu este posibil și dintr-un motiv întemeiat: structurile de date actualizate (fișiere, baze de date, etc) sunt adesea incompatibile cu versiunile vechi ale aplicației. Acesta este motivul pentru care puteți downgrada doar pachetele debuggable (în scopuri de dezvoltare).

Dacă aveți o problemă cu FairEmail, vă rugăm să o raportați în acest forum:

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

Comentarii

  • @M66B Ultima dată am făcut downgrade la o altă aplicație pentru că se bloca pe dispozitivul meu. Această întrebare nu este specifică unei aplicații. De fapt, întreb cum se poate face downgrade la orice aplicație la versiunea sa anterioară după ce am descărcat deja apk-ul. –  > Por SebMa.
  • @SebMa răspunsul s-a vrut a fi generic, dar nu eram sigur dacă întrebarea era generală, de aici și link-ul către forumul FairEmail –  > Por M66B.
  • Înțeleg riscul. Deși nu sunt sigur că dezvoltatorii se deranjează să își actualizeze structurile de date din când în când, altfel vor trebui să rescrie des componentele I/O. –  > Por SebMa.
  • @SebMa mai ales atunci când se utilizează Android ROOM este ușor să se adauge noi câmpuri pentru noi caracteristici la o bază de date existentă, așa că acest lucru s-ar putea întâmpla mai mult decât credeți. –  > Por M66B.
Izzy

Dacă dispozitivul dvs. este înrădăcinat, există o soluție de rezolvare (aplicați pe propriul risc – ca și Marcel a subliniat corect, există un motiv pentru care este făcută aproape imposibil):

  1. instalați
  2. faceți o copie de rezervă a aplicației pe care doriți să o retrogradați
  3. dezinstalați aplicația pe care doriți să o retrogradați (complet, adică aplicația & date)
  4. instalați versiunea mai veche
  5. utilizați Titanium Backup pentru a restaura numai datele

Acest lucru a funcționat pentru mine în mai multe cazuri. Totuși, nu există garanții: dacă versiunea mai nouă a schimbat structuri în bazele de date/configurația sa, vă veți trezi cu o aplicație instabilă – iar actualizările ulterioare ar putea eșua (în aceste cazuri, utilizați TiBu pentru a restaura copie de rezervă completă pe care ați făcut-o inițial – deci asigurați-vă că o păstrați în siguranță).

Comentarii

  • Pb. este că dispozitivul meu nu este înrădăcinat. Am citit despre acest, ați încercat? –  > Por SebMa.
  • De asemenea, *modul de migrare* din setări poate fi necesar pentru a asigura integritatea BD –  > Por beeshyams.
  • @SebMa Da, am – și sunt destul de mulțumit de el. TiBu funcționează bine pe Magisk (după experiența mea pe mai multe dispozitive, puteți ignora în siguranță avertismentul lui TiBu privind SuperUser în această configurație). –  > Por Izzy.