FAQ n°10906, publiée le 12/06/2015, mise à jour le 19/05/2016
Que faire si "INSTALL_FAILED_DEXOPT" ou "Too many method reference" ou "erreur -11" est affiché lors de la compilation ou l'installation d'une application (APK) Android ?
Lorsque le nombre d'éléments et de traitements d'une application Android, la compilation peut échouer avec le retour :
Echec de l'installation [INSTALL_FAILED_DEXOPT]
ou : 
trouble writing output: Too many method references: 70???; max is 65536
ou :
Erreur -11 lors de l'installation.

Afin de permettre à nouveau la compilation dans ce cas, il suffit dans l'assistant de génération de l'application de sélectionner : 
  • "Android 4.1" en version minimale si les appareils cibles le permettent,
  • dans WINDEV Mobile 20 "Réduire le code compilé",
  • dans WINDEV Mobile 21 "Activer la génération multidex", puis également "Réduire le code compilé" si "Activer la génération multidex" ne suffit pas.

    Ces options sont accessibles par le bouton "Configuration avancée" de l'étape "Configuration" de l'assistant de génération.

    En version 20 de WINDEV Mobile : 



    En version 21 de WINDEV Mobile : 



Attention :
Une application Android peut également avoir une taille trop importante lorsqu'elle possède des éléments inutilisés (fenêtres, collections de procédures...). Notamment lorsque le projet contient plusieurs configurations afin de générer une version Android et une version iOS. Il faut donc vérifier que l'application Android embarque bien uniquement les éléments de projet qui lui sont destinés :
  • volet "Projet" de WINDEV Mobile,
  • bouton "Gérer les configurations" du regroupement "Configuration de projet",
  • sélectionner la configuration Android,
  • bouton "Description",
  • volet "Eléments"
  • vérifier que seuls les éléments nécessaires à l'application Android sont intégrés.

Cas particulier : 
Sous Android 4.0.x, si une erreur -11 survient lors de l'installation de l'APK alors que génération multidex et la réduction du code compilé sont actives, l'application a atteint sa taille maximale (cf. "Limitations of the multidex support library"). Les alternatives sont les suivantes :
  • imposer l'utilisation de périphériques avec Android 5 minimum, lorsque le contexte et déploiement et d'utilisation de l'application le permet,
  • réduire la taille de l'application :
    • supprimer les éléments inutilisés (cf. ci-dessus),
    • réduire le nombre d'éléments, de champs, de traitements, généralement par refactoring.

Autres liens sur ce sujet :