Concernant le POM ultime en particulier et Maven-Android en général. Voici quelques erreurs rencontrées et les différentes raisons qui en sont la cause. La package de test n’est pas « uninstall » Un bug a été ouvert chez Google concernant ce sujet : http://code.google.com/p/maven-androidplugin/issues/detail?id=160 En substance, le déploiement des tests d’instrumentation échoue sur l’émulateur avec le message suivant : org.maven.ide.eclipse.editoFailure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] Cela signifie que vous avez d’abord exécuté un mvn:install qui s’est normalement bien déroulé, puis vous avez lancé un mvn:install -p android-release qui lui a échoué lamentablement (ou inversement). La raison est simple, le déploiement des tests d’instrumentation n’a pas pu se faire car maven essaie de déployer une même application avec une signature différente. Il échoue. Le problème étant que normalement il doit désinstaller l’application puis la réinstaller, mais il ne le fait pas (le undeployBeforeDeploy ne marche pas). Pour s’en sortir, il faut à la main aller désinstaller l’application. Cela induit qu’une bonne pratique est de ne pas effectuer de mvn:install puis mvn:install –p androidrelease, il faut choisir l’un ou l’autre, surtout sous Hudson où je pense qu’il faut toujours utiliser le profil release. Sinon, une autre bonne pratique est d’étendre puis de relancer l’émulateur en lui demandant de se réinitialiser au démarrage. Conflit Eclipse Maven Parfois Eclipse et Maven entre en conflit et maven ne marche plus. Vous obtenez l’erreur suivante : D:\Eclipse\eclipsex64_Android_Custo\android-sdk_r08-windows\android-sdk-windows/platform-tools/aapt.exe [package, -f, -M, D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application\AndroidManifest.xml, S, D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application\target\generated-sources\combinedresources\res, -A, D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application\target\generatedsources\combined-assets\assets, -I, D:\Eclipse\eclipsex64_Android_Custo\android-sdk_r08-windows\androidsdk-windows\platforms\android-8\android.jar, -F, D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application\target\AndroidGenericProject-ap-1.0.ap_] [ERROR] Cannot add source folder com.android.sdklib.build.DuplicateFileException: Duplicate files at the same path inside the APK at com.android.sdklib.build.ApkBuilder.doAddFile(ApkBuilder.java:716) at com.android.sdklib.build.ApkBuilder.processFileForResource(ApkBuilder.java:762) at com.android.sdklib.build.ApkBuilder.addSourceFolder(ApkBuilder.java:587) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 1 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.jayway.maven.plugins.android.phase09package.ApkBuilder.addSourceFolder(ApkBuilder.java:244) at com.jayway.maven.plugins.android.phase09package.ApkMojo.doAPKWithAPKBuilder(ApkMojo.java:213) at com.jayway.maven.plugins.android.phase09package.ApkMojo.createApkFile(ApkMojo.java:171) at com.jayway.maven.plugins.android.phase09package.ApkMojo.execute(ApkMojo.java:144) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157) at org.apache.maven.cli.MavenCli.main(MavenCli.java:121) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [INFO] -----------------------------------------------------------------------[INFO] Reactor Summary: [INFO] [INFO] AndroidGenericProject - Parent .................... SUCCESS [0.202s] [INFO] AndroidGenericProject - Application ............... FAILURE [2.347s] [INFO] AndroidGenericProject - Integration tests ......... SKIPPED [INFO] ------------------------------------------------------------------------ Pour vous en sortir, il vous suffit de faire un Maven->clean. Vous avez sans doute lancé/construit votre projet via Eclipse une première fois. L’application **-ap ne s’installe pas Parfois, l’application ***-ap ne souhaite pas s’installer avant le passage de vos tests. Vous obtenez une erreur de ce type : [INFO] D:\Eclipse\eclipsex64_Android_Custo\android-sdk_r08-windows\android-sdk-windows/platformtools/adb.exe [shell, am, instrument, -w, com.android2ee.android.tuto.maven.test/android.test.InstrumentationTestRunner] INSTRUMENTATION_STATUS: id=ActivityManagerService INSTRUMENTATION_STATUS: Error=Unable to find instrumentation target package: com.android2ee.android.tuto.maven INSTRUMENTATION_STATUS_CODE: -1 android.util.AndroidException: INSTRUMENTATION_FAILED: com.android2ee.android.tuto.maven.test/android.test.InstrumentationTestRunner [INFO] ------------------------------------------------------------------------ 2 Cela signifie que l’application**-ap n’est pas installée sur l’émulateur et qu’elle n’est donc pas disponible pour les tests. De même si vous obtenez, après avoir lancé un install avec le profil android-release : [ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:maven-androidplugin:2.8.3:internal-pre-integration-test (default-internal-pre-integration-test) on project AndroidGenericProject-it: Error deploying D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application-it\target\AndroidGenericProject-it1.0.apk to device. You might want to add command line parameter -Dandroid.undeployBeforeDeploy=true or add plugin configuration tag <undeployBeforeDeploy>true</undeployBeforeDeploy> pkg: /data/local/tmp/AndroidGenericProject-it-1.0.apkFailure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] -> [Help 1 Cela signifie que sur votre émulateur, vous avez installé l’apk signé avec votre clef de debug, il faut donc l’enlever et pour éviter l’erreur précédente, il vous faut installer l’application signé de nouveau sur l’émulateur. Une des meilleures choses à faire alors est de lancer la commande suivante, aussi bien sur l’application **-ap que sur **-it : mvn :clean install android :deploy Ensuite souvent cela se produit quand l’AVD, votre AndroidManifest.xml, vos fichiers default.properties, vos fichiers POM, votre fichier de setting ou l’AVD par défaut défini via Maven ne partagent pas la même version de SDK. Il vous faut vérifier la cohérence de tous ces fichiers. 3