Android - 如何在每次构建时清理数据库?

时间:2016-08-20 18:35:06

标签: android database build

我正处于制作应用程序的早期阶段,我经常对数据库或与之交互的代码进行更改。因此,我希望始终使用干净的数据库进行我的测试运行(不是自动化 - 只需在模拟器上进行简单的旧手动测试)。

目前,我通过确保在运行其他测试运行之前删除了应用程序来实现此目的。这有效,但很乏味。我想知道是否有办法自动化这个,所以每次我构建应用程序时,数据库也会被清理。理想情况下,打开/关闭它应该很容易,因为在某些情况下我确实希望将旧数据保存在数据库中。

2 个答案:

答案 0 :(得分:0)

您可以添加BroadcastReceiver,以便在升级应用时擦除数据库。首先将其添加到AndroidManifest.xml

<receiver android:name=".AppUpdateReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
    </intent-filter>
</receiver>

然后创建一个名为AppUpdateReceiver的类:

public class AppUpdateReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (BuildConfig.DEBUG) {
      // Wipe database
    }
  }
}

每次使用调试APK升级应用程序时都应擦除数据库。

答案 1 :(得分:0)

如果您正在使用Android Studio(或使用gradle在不同的IDE中构建),可能每次都使用gradle任务将干净的数据库复制到您的模拟器?像下面的东西。

task pushCleanSb(type: Exec, dependsOn: 'installDebug') {
    android.adbExe, 'shell', 'push', '<local-clean-database-filepath>, '<remote--database-path'
}

如果需要,可以很容易地添加一个开关来关闭它,例如通过使用成绩脚本中定义的布尔值。如果您的应用已创建并在设备上保留任何内容,您还可以使用rm shell命令删除临时文件。

相关问题