我處於製作應用程序的早期階段,而且我經常對與其交互的數據庫或代碼進行更改。正因爲如此,我想總是用乾淨的數據庫來做我的測試運行(不是自動化 - 只是在模擬器上進行普通的舊式手動測試)。Android - 如何清理每個構建的數據庫?
目前我通過確保在運行另一個測試運行之前刪除了應用程序來實現此目的。這工作但是很乏味。我想知道是否有一種方法可以自動執行此操作,以便每次構建應用程序時,數據庫也將被清除。理想情況下,打開/關閉應該很容易,因爲在某些情況下,我確實希望將舊數據保留在數據庫中。
我處於製作應用程序的早期階段,而且我經常對與其交互的數據庫或代碼進行更改。正因爲如此,我想總是用乾淨的數據庫來做我的測試運行(不是自動化 - 只是在模擬器上進行普通的舊式手動測試)。Android - 如何清理每個構建的數據庫?
目前我通過確保在運行另一個測試運行之前刪除了應用程序來實現此目的。這工作但是很乏味。我想知道是否有一種方法可以自動執行此操作,以便每次構建應用程序時,數據庫也將被清除。理想情況下,打開/關閉應該很容易,因爲在某些情況下,我確實希望將舊數據保留在數據庫中。
您可以添加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升級時的數據庫。
如果您正在使用Android Studio(或使用gradle在不同的IDE中構建),那麼可能每次都使用gradle任務將乾淨的數據庫複製到模擬器中?像下面的東西。
task pushCleanSb(type: Exec, dependsOn: 'installDebug') {
android.adbExe, 'shell', 'push', '<local-clean-database-filepath>, '<remote--database-path'
}
在需要的時候增加一個開關來關閉它是很容易的,例如,通過使用您的成績腳本中定義的布爾值。如果您的應用程序已創建並保留在設備上,您還可以使用rm
shell命令刪除臨時文件。