1
Concernant le POM ultime en
particulier et Maven-Android en
néral.
Voici quelques erreurs rencontrées et les différentes raisons qui en sont la cause.
La package de test nest pas « uninstall »
Un bug a été ouvert chez Google concernant ce sujet : http://code.google.com/p/maven-android-
plugin/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 dabord exécuté un mvn:install qui sest 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 dinstrumentation na 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 lapplication puis la réinstaller, mais il ne le fait pas (le
undeployBeforeDeploy ne marche pas).
Pour sen sortir, il faut à la main aller désinstaller lapplication.
Cela induit quune bonne pratique est de ne pas effectuer de mvn:install puis mvn:install p android-
release, il faut choisir lun ou lautre, surtout sous Hudson où je pense quil 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 lerreur 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\combined-
resources\res, -A, D:\EclipseWorkspaceTutoAndroid\AndroidGenericProject\application\target\generated-
sources\combined-assets\assets, -I, D:\Eclipse\eclipsex64_Android_Custo\android-sdk_r08-windows\android-
sdk-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)
2
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, lapplication ***-ap ne souhaite pas sinstaller 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/platform-
tools/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] ------------------------------------------------------------------------
3
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-android-
plugin: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-it-
1.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
lapplication **-ap que sur **-it :
mvn :clean install android :deploy
Ensuite souvent cela se produit quand lAVD, votre AndroidManifest.xml, vos fichiers
default.properties, vos fichiers POM, votre fichier de setting ou lAVD 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.
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !