Création et déploiement d'un fichier classes.dex manuellement

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'un ensemble personnalisé de bibliothèques Java dans vos apps Android RAD Studio


La création et le déploiement d'un fichier classes.dex manuellement ne vous permet pas seulement d'ajouter des bibliothèques à votre application, mais également de modifier les bibliothèques Java RAD Studio intégrées pour Android, ou de retirer celles devenues inutiles. Si vous devez ajouter une bibliothèque Java personnalisée à votre application pour Android, voir Ajout d'une bibliothèque Java à votre application en utilisant le Gestionnaire de projets.

Création d'un fichier classes.dex

Le fichier classes.dex est un fichier exécutable Dalvik que toutes les applications Android doivent avoir. Ce fichier contient les bibliothèques Java utilisées par l'application.

Lorsque vous déployez une application pour Android, RAD Studio inclut un fichier classes.dex qui contient les bibliothèques Java intégrées par RAD Studio. Pour utiliser vos propres bibliothèques Java dans vos applications RAD Studio, vous devez créer un fichier classes.dex qui inclut les bibliothèques Java intégrées par RAD Studio dont votre application a besoin et vos propres bibliothèques Java.

Détermination des fichiers JAR à inclure dans votre fichier classes.dex

Pour créer votre fichier classes.dex, vous avez besoin des fichiers JAR de toutes les bibliothèques Java utilisées par vos applications, ainsi que des fichiers JAR des bibliothèques dont elles dépendent.

Cela affecte également les bibliothèques Java RAD Studio intégrées. Par exemple, si vos applications ont besoin de la bibliothèque Java Google Play Services, votre fichier classes.dex doit également contenir le fichier JAR de la bibliothèque Java Google Play Application Licensing, car Google Play Application Licensing est une dépendance de Google Play Services. Si Google Play Application Licensing avait ses propres dépendances, vous devriez inclure celles-ci également.

Le tableau suivant liste les dépendances des bibliothèques Java intégrées par RAD Studio :

Bibliothèque Fichier JAR Dépendances Requise par RAD Studio

Android Support (Prise en charge Android) (EN)

android-support-v4.jar

Oui

FireMonkey

fmx.jar

  • Android Support (Prise en charge Android)

Oui

Google Mobile Ads (EN)

GoogleAdMobAdsSdk-6.4.1.jar

Non

Google Analytics (EN)

google-analytics-v2.jar

Non

Google Play Application Licensing (EN)

google-play-licensing.jar

Non

Google Play In-app Billing (EN)

google-play-billing.jar

  • Google Play Application Licensing

Non

Google Play Services (EN)

google-play-services.jar

  • Google Play Application Licensing

Non

APK Expansion (EN)

apk-expansion.jar

  • FireMonkey
  • Google Play Application Licensing

Non

Cloud Messaging (EN)

cloud-messaging.jar

  • FireMonkey
  • Google Play Application Licensing

Non

Vous pouvez trouver ces fichiers JAR dans les dossiers suivants au sein du dossier d'installation de RAD Studio (C:\Program Files (x86)\Embarcadero\Studio\20.0) :

  • lib\android\debug
  • lib\android\release

Vous pouvez inclure toutes vos bibliothèques Java intégrées RAD Studio dans votre fichier classes.dex ou déterminer, sur la base des informations fournies dans le tableau ci-dessus, les bibliothèques Java intégrées RAD Studio dont vos applications ont besoin.

Avertissement : Vous devez toujours inclure les bibliothèques Java qui sont requises par RAD Studio dans votre fichier classes.dex personnalisé.

Génération d'un fichier classes.dex à partir de fichiers JAR

Une fois que vous avez déterminé les fichiers JAR dont vos applications Android ont besoin, vous pouvez créer un fichier classes.dex à partir d'eux.

Pour créer un fichier classes.dex, vous devez utiliser l'outil de ligne de commande dx. Vous pouvez le trouver à l'emplacement C:\Utilisateurs\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\adt-bundle-windows-x86-20131030.

Exécutez dx avec le paramètre --dex, le paramètre --output avec le chemin de sortie du fichier classes.dex comme argument, et une liste des chemins d'accès aux fichiers JAR que vous souhaitez inclure dans le fichier classes.dex généré (en utilisant l'espace comme séparateur). Par exemple :

dx --dex --output="classes.dex" "C:\Path\To\Library1.jar" "C:\Path\To\Library2.jar"
Remarque : Vous devez créez une version débogage et une version release de votre fichier classes.dex. Les fonctions de débogage de RAD Studio sont disponibles uniquement si le fichier classes.dex déployé contient les versions débogage des bibliothèques Java intégrées RAD Studio incluses.

Déploiement du fichier classes.dex

Avertissement : Suivez attentivement ces étapes. Les applications Android doivent toujours inclure un fichier classes.dex valide. Pour plus d'informations, voir Fichier classes.dex non valide ou manquant ci-dessous.

Pour configurer votre application Android en vue de la déployer avec votre fichier classes.dex personnalisé :

  1. Sélectionnez Projet > Déploiement pour ouvrir le Gestionnaire de déploiement.
  2. Désélectionnez la case à cocher du fichier classes.dex par défaut.
  3. Cliquez sur le bouton Ajouter des fichiers et ajoutez votre fichier classes.dex personnalisé à la liste des fichiers de déploiement.
  4. Remplacez le chemin distant de votre nouvelle entrée par classes\.
  5. Remplacez les plates-formes de votre nouvelle entrée par Android uniquement.

DeploymentCustomClassesDex.png

Dépannage

Fichier classes.dex non valide ou manquant

Ce message d'erreur s'affiche lorsque vous exécutez une application sur un périphérique Android en utilisant RAD Studio et que votre application ne comporte pas de fichier classes.dex valide :

Unable to create process: Unable to install '<APK file>'. Failure [INSTALL_FAILED_DEXOPT]

Un package d'application Android (fichier APK) doit toujours contenir un fichier classes.dex valide. Ainsi :

  • Il doit y avoir un fichier classes.dex dans le fichier APK.
  • Le fichier classes.dex doit être placé dans classes/classes.dex au sein du fichier APK.
  • Le fichier classes.dex doit être un exécutable Dalvik valide.

Lorsque vous utilisez un fichier classes.dex personnalisé, vous devez être attentif. Après avoir désélectionné le fichier classes.dex par défaut sur le Gestionnaire de déploiement et avoir ajouté une entrée pour votre fichier classes.dex personnalisé :

  • Vérifiez que l'entrée de votre fichier personnalisé est sélectionnée.
  • Vérifiez que le chemin distant de votre nouvelle entrée est classes\.
  • Vérifiez que votre nouvelle entrée est votre fichier classes.dex, et non un fichier différent qui peut ne pas être un exécutable Dalvik valide.

Si votre application Android n'est pas configurée pour être déployée avec un fichier classes.dex valide, et que vous exécutez votre application sur un périphérique Android à partir de RAD Studio ou que vous installez sur votre périphérique un fichier APK de votre application généré avec RAD Studio, l'installation échouera. Toutefois, il restera des données sur votre périphérique Android, qui vous empêcheront d'installer des applications avec le même nom de package que votre application (voir Informations de version Android).

Après avoir tenté d'installer un fichier APK sans fichier classes.dex valide, la seule solution connue consiste à rétablir les paramètres d'origine (EN) de votre périphérique Android.

Avertissement : Le rétablissement des paramètres d'origine supprime toutes les données de votre périphérique (données personnelles, paramètres personnalisés et autres). Demandez-vous si la correction du problème vaut vraiment la peine de perdre toutes vos données. Si vous décidez de poursuivre, n'oubliez pas de sauvegarder vos données avant de rétablir les paramètres d'origine.

Voir aussi