it-swarm.com.de

Eine Android-App zeigt Ihre Daten nach der Deinstallation und Neuinstallation

Bei der Entwicklung einer Android-App für alle Versionen über 4.1 habe ich festgestellt, dass durch das Deinstallieren meiner App und deren erneute Installation die Daten nicht gelöscht werden. 

Die App speichert die Details, die auf dem ersten Bildschirm angezeigt werden. Nach der Deinstallation und erneuten Installation in OS-Version 4.4.4 fordert die App den Benutzer auf, die Daten einzugeben, was normal ist. In Version 6.0 werden jedoch durch die gleiche Installations-/Deinstallationssequenz die ursprünglich eingegebenen Daten wiederhergestellt. 

Ich habe versucht, durch den Besuch von /data/data/my package folder sicherzustellen, dass die Datenbank nach der Deinstallation verschwunden ist und der Ordner während der Deinstallation gelöscht wird. 

Ich habe versucht, die App auf der Einstellungsseite über Titanium Backup zu löschen. Die Ergebnisse sind die gleichen. Das Gerät ist mit Nexus 5 rooted v6.0 verwurzelt.

Was könnte der Grund für dieses merkwürdige Verhalten sein?

125
Narayanan

Dies liegt daran, dass Android 6 eine automatische Sicherung hat. Sie müssen Android:allowBackup und Android:fullBackupContent in Ihrem Manifest <application>-Tag anpassen, wenn Sie nicht möchten, dass Ihre Daten gesichert werden oder wenn Sie einige Ressourcen hinzufügen oder ausschließen möchten. Es ist kein Fehler.

Mehr über AutoBackup auf Android hier .

218
greywolf82

die Antwort von greywolf82 ist korrekt, aber ich möchte hier einige Informationen hinzufügen.

Bei der Entwicklung meiner Android-App (mit Xamarin) fiel mir auf, dass meine Daten bei einem Neustart der App von Visual Studio auf die Daten von vor einigen Monaten zurückgreifen würden. Es spielte keine Rolle, ob ich die Anwendung einfach stoppte und erneut von VS aus ausgeführt habe oder ob ich die App vollständig deinstalliert und erneut installiert habe.

Es ist auch erwähnenswert, dass wir der App nie ausdrücklich gesagt haben, dass sie ein Backup speichern soll.

Die Sicherung schien auch beim Starten von Visual Studio neuere Daten zu überschreiben. Wir haben Berichte über Benutzer, die den Release-Build unserer App verwenden und auch neuere Daten durch die Sicherungen überschreiben.

Da ich nicht genau weiß, wann Sicherungen und Wiederherstellungen erfolgen, scheint diese Funktion nur Probleme zu verursachen.

Wir haben unser AndroidManifest wie in der folgenden XML-Datei geändert:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="com.XXXXXXX" Android:versionName="8.0.0" Android:installLocation="auto" Android:versionCode="439">
    <uses-sdk Android:minSdkVersion="14" Android:targetSdkVersion="24" />
    <application 
               Android:label="@string/appName" 
               Android:icon="@drawable/icon_small" 
               Android:installLocation="internalOnly" 
               Android:largeHeap="true"
               Android:allowBackup="false"
               Android:fullBackupOnly="false"
               />
...
</manifest>

Wenn wir den Wert explizit auf false setzen, scheint alles zu funktionieren. Ich würde erwarten, dass dies eine Opt-In-Funktion ist, aber ... scheint für Apps standardmäßig aktiviert zu sein, die den Wert in keiner Weise angeben.

12
Victor Chelaru

Sie sollten die Backup- und Reset-Einstellungen Ihres Geräts überprüfen und die automatische Wiederherstellung deaktivieren (bei der Neuinstallation einer Anwendung werden die gesicherten Einstellungen und Daten wiederhergestellt.)

Das Deaktivieren der automatischen Sicherung unterscheidet sich von der automatischen Wiederherstellung. Wenn Sie der Meinung sind, dass es hilfreich sein sollte, die automatische Sicherung für Ihre Anwendung zu aktivieren, tun Sie dies. Wenn Sie jedoch der Meinung sind, dass Endbenutzer sich dessen nicht bewusst sind, dass die automatische Wiederherstellungsfunktion ihres Geräts aktiviert ist, können Sie das Gerät ausschalten.

In meinem Fall habe ich die allowBackup-Funktion deaktiviert, aber da ich bereits ein Backup der vorherigen Version in der Cloud hatte, wurde sie immer noch wiederhergestellt.

Siehe Bild als Referenz für ein Samsung-Gerät unter Android 6.0. Andere Geräte und Versionen haben möglicherweise einen anderen Bildschirm. Siehe Bild unten.

Automatische Wiederherstellungseinstellung unter Backup und Reset

11
Matcieou7th

Ich musste diese Funktionen erst kürzlich nutzen, ich konnte die Dokumentation aufdecken und nach ausführlichen Tests konnte ich Folgendes ableiten:

Android: allowbackup - Sichert lokale App-Daten auf dem Gerät, auf dem sie sich befindet.

Android: fullBackupContent - wird in Verbindung mit der Backup-Wiederherstellungs-API von Google verwendet und kann über eine XML-Datei gesteuert werden, um genau anzugeben, was genau gesichert werden soll, sowie eine BackupManager-Klasse, die Sie zur weiteren Kontrolle des Prozesses implementieren können.

In der Dokumentation heißt es jedoch, und ich habe beim Testen bestätigt, dass eine Wiederherstellung nur dann erfolgt, wenn das Gerät wiederhergestellt wird und der Wiederherstellungs-App-Datenprozess ausgelöst wird. OR wird auch wiederhergestellt, wenn die App über adb von der Seite geladen wird. Dies ist, wenn wir die App zum Testen oder Debuggen auf unseren Geräten über Android Studio ausführen. Beachten Sie Folgendes: Wenn Sie Android: allowbackup einstellen, aber Android: fullBackupContent nicht mit einem Google-API-Code konfigurieren, werden die Apps-Daten nur lokal gespeichert. Wenn Sie sie jedoch ordnungsgemäß konfiguriert haben, erhalten Ihre Apps ein neues Gerät Daten wurden in der Cloud gespeichert, sodass sie auf einem neuen Gerät wiederhergestellt werden können. 

3
Xijukx

Hinzufügen von Android: allowBackup = "false" unter dem Anwendungstag in der Manifest-Datei hat mein Problem behoben.

1
Vinay John

Ändern Sie einfach Android: allowBackup = "true" in Android: allowBackup = "false" in manifest.xml. Es wird gearbeitet.

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    <application
        Android:allowBackup="false"
        Android:icon="@mipmap/app_icon"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">
</manifest>
1
Nag Kosanam

Als wir dies hinzufügten, stellten wir in Android 9 (auf einem HMD-Nokia-Gerät) fest, dass die Assets auch nach dem Löschen der App über die Benutzeroberfläche und über adb gespeichert waren.

Die Antwort des Hinzufügens:

Android:allowBackup="false" Android:fullBackupOnly="false"

Dies ist natürlich keine neue Antwort - sondern eine Beobachtung für Menschen, die sich in derselben Position wie wir befanden.

0
JRK

Ich denke, Sie deinstallieren die Anwendung nicht manuell. Ich hatte auch dieses Problem. Das war, weil ich die App nur auf dem Gerät ausgeführt habe. Auf diese Weise scheint die Anwendung identisch zu sein. Nur die letzten Änderungen, die ich vorgenommen habe, werden reflektiert Ich deinstalliere die App selbst vom Gerät und installiere die apk erneut. Die Datensätze werden gelöscht, und meine App ist wie eine Neuinstallation.

Versuchen Sie nicht, den Test im Gerätemodus zu verwenden, erstellen Sie die apk, deinstallieren Sie die aktuelle App auf Ihrem Gerät, installieren Sie die apk erneut, starten Sie Ihre App und sehen Sie den Unterschied. Ich hoffe es hilft.

0
Anana Aristotle