You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14下无法清除预置SQLite数据库文件问题求助

解决方案

1. 关闭/清除Android 14自动备份

Android 14默认自动备份应用数据(含Documents目录下的数据库),卸载后重装会自动恢复备份数据:

  • 临时禁用备份:在AndroidManifest.xml中添加android:allowBackup="false",或在res/xml/backup_rules.xml配置排除目标数据库文件;
  • 手动清除系统备份:进入Pixel设备「设置」>「系统」>「备份」>「查看已备份的数据」,找到你的应用并删除对应备份条目。

2. 用ADB彻底清除应用残留

通过ADB命令强制清理并卸载,避免系统残留:

adb shell pm clear <你的应用包名>
adb uninstall <你的应用包名>

执行完成后再重新部署应用。

3. 修复数据库初始化逻辑

检查应用初始化代码,确保能覆盖旧数据库:

  • 加入版本判断,当数据库结构更新时强制复制新预置库:
const DB_VERSION = 2; // 更新为新结构对应的版本号
var DBPath: string;
    VersionPath: string;
begin
  DBPath := TPath.Combine(TPath.GetDocumentsPath, <DatabaseName>);
  VersionPath := TPath.Combine(TPath.GetDocumentsPath, 'db_version.txt');
  // 不存在数据库/版本不匹配时,覆盖复制新库
  if not TFile.Exists(DBPath) or (TFile.ReadAllText(VersionPath) <> IntToStr(DB_VERSION)) then
  begin
    TFile.Copy(TPath.Combine(TPath.GetAssetsPath, 'internal\<DatabaseName>'), DBPath, True);
    TFile.WriteAllText(VersionPath, IntToStr(DB_VERSION));
  end;
  Connection.Params.Values['Database'] := DBPath;
end;
  • 确保复制时使用True参数覆盖已存在的旧文件。

4. 排查Pixel设备特殊存储残留

  • 检查是否开启「应用分身」或「工作资料」,若有则一并卸载对应实例;
  • 重启设备后再尝试重新部署,清除存储框架缓存。

5. 验证Delphi部署配置

  • 确认.\assets\internal下的数据库文件确实是修改后的新版本,检查文件修改时间和内容;
  • 在Delphi项目管理器的「部署」选项中,确保该数据库文件的「覆盖现有文件」选项已勾选。

内容的提问来源于stack exchange,提问作者fisi-pjm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:41:15