gpt4 book ai didi

java - 如何防止 Android 应用程序的自动备份?

转载 作者:太空狗 更新时间:2023-10-29 23:03:27 27 4
gpt4 key购买 nike

我在某些设备(Nexus 5x 和 Android 7)上遇到了非常奇怪的情况:当我清理它的数据并卸载它,然后用 Studio 安装它时,应用程序没有被初始化,但它使用了 1 月 24 日的数据!我在平板电脑上尝试了相同的过程,但该应用没有数据。

我已经多次重复这个过程,我清理了我的项目,多次重建它,它总是从 1 月 24 日的数据(数据库和共享首选项)开始。

我什至尝试了 adb shell 并运行 as 来清理数据:

bullhead:/data/data/lelisoft.com.lelimath.debug $ ls -l databases/
total 232
-rw-rw---- 1 u0_a259 u0_a259 98304 2017-02-05 11:03 lelimath.sqlite
-rw------- 1 u0_a259 u0_a259 16928 2017-02-05 11:03 lelimath.sqlite-journal

我删除了它们,应用程序似乎是空的 - 直到我删除它并重新安装 - 1 月 24 日回来了。

这是它如何开始的日志:

$ adb shell am start -n "lelisoft.com.lelimath.debug/lelisoft.com.lelimath.activities.DashboardActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Waiting for application to come online: lelisoft.com.lelimath.debug | lelisoft.com.lelimath.debug.test
I/InstantRun: Instant Run Runtime started. Android package is lelisoft.com.lelimath.debug, real application class is lelisoft.com.lelimath.helpers.LeliMathApp.
D/l.c.l.h.LeliMathApp: onCreate()
D/l.c.l.h.BalanceHelper: Current points balance: 234

这是一个数据库的位置,从调试器获得:

/data/user/0/lelisoft.com.lelimath.debug/databases/lelimath.sqlite

Gradle :

android {
signingConfigs {
}
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "lelisoft.com.lelimath"
resValue 'string', 'app_name', 'LeliMath'
minSdkVersion 16
targetSdkVersion 24
versionCode 300
versionName '3.0.0'
resValue "string", "app_build_number", getDate();
resValue "string", "app_version", versionName;
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

debug {
applicationIdSuffix ".debug"
resValue 'string', 'app_name', 'LeliMath DEV'
}
}

list 部分:

<application
android:name=".helpers.LeliMathApp"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">

我不想通过恢复出厂设置来删除这些数据。我认为这些数据不在我的构建中。我没有添加它们,安装时平板电脑中的应用程序是空的。

最佳答案

从 Android 6.0 (v 23) 开始,Android 引入了一个名为 Auto-backup for apps 的新功能。 .它的作用是将应用程序的某些文件备份到用户的 Google 驱动器。它更新的文件列表包括:

  • 共享首选项文件
  • getFilesDir() 返回目录中的文件
  • getDatabasePath(String) 返回目录中的文件
  • 使用 getDir(String, int) 创建的目录中的文件
  • getExternalFilesDir(String) 返回的目录中的外部存储文件

现在 manifest.xml 中的这一行对此负责:

android:allowBackup="true"

如果您希望禁用备份,您是否应该选择将值设置为 false .

此外,数据备份以 24 小时为间隔,Android 使用 JobScheduler API 用于此目的,这意味着用户无法控制数据传输过程。

此外,自动备份的空间限制为 25 MB ,并且不计入用户的空间配额。

此外,您可以设置为 <include><exclude>正在上传某些类型的数据,例如您可能不需要保存用户 secret 数据,因此它也很灵活,有关这方面的更多信息,请访问:Android Auto Backup for Apps (100 Days of Google Dev)

关于java - 如何防止 Android 应用程序的自动备份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com