2016-08-20 2 views
0

Je suis dans les premières étapes de la création d'une application, et je modifie fréquemment la base de données ou le code qui interagit avec elle. Pour cette raison, je voudrais toujours faire mes tests (non automatisés - simplement de vieux tests manuels sur un émulateur) avec une base de données propre.Android - Comment nettoyer la base de données sur chaque build?

Actuellement la façon dont j'y parviens en m'assurant que j'ai supprimé l'application avant d'effectuer un autre test. Cela fonctionne mais est fastidieux. Je me demandais s'il y avait un moyen d'automatiser cela, de sorte que chaque fois que je construirais l'application, la base de données serait également nettoyée. Idéalement, il devrait être facile de l'activer/désactiver, car dans certains cas, je veux conserver les anciennes données dans la base de données.

Répondre

0

Vous pouvez ajouter un BroadcastReceiver qui efface la base de données lors de la mise à niveau de votre application. Commencez par ajouter à la AndroidManifest.xml:

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

puis créez une classe appelée AppUpdateReceiver:

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

Cela devrait essuyer la base de données chaque fois que vous l'application est mis à jour à l'aide d'un débogage APK.

0

Si vous utilisez Android Studio (ou que vous construisez dans un autre IDE utilisant gradle), peut-être que vous utilisez une tâche graduelle pour copier la base de données propre dans votre émulateur à chaque fois? Quelque chose comme ci-dessous.

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

Il serait facile d'ajouter un commutateur pour l'éteindre si nécessaire, par ex. en utilisant un booléen défini dans votre script de niveau. Vous pouvez également utiliser les commandes shell rm pour supprimer des fichiers temporaires si votre application en a créé et en a laissé une sur le périphérique.