Manuelles Erstellen und Bereitstellen einer classes.dex-Datei

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verwenden benutzerdefinierter Java-Bibliotheken in RAD Studio-Android-Apps


Beim manuellen Erstellen und Bereitstellen einer classes.dex-Datei können Sie Ihrer Anwendung nicht nur Bibliotheken hinzufügen, sondern die integrierten RAD Studio-Java-Bibliotheken für Android auch ändern oder nicht benötigte entfernen. Wenn Sie Ihrer Anwendung für Android nur eine benutzerdefinierte Java-Bibliothek hinzufügen möchten, finden Sie Informationen dazu unter Hinzufügen von Java-Bibliotheken zu Ihren Anwendungen in der Projektverwaltung.

Erstellen einer classes.dex-Datei

Die Datei classes.dex ist eine ausführbare Dalvik-Datei (EN), über die alle Android-Anwendungen verfügen müssen. Diese Datei enthält die Java-Bibliotheken, die die Anwendung verwendet.

Wenn Sie eine Anwendung für Android bereitstellen, bezieht RAD Studio eine classes.dex-Datei ein, die die in RAD Studio integrierten Java-Bibliotheken enthält. Für die Verwendung eigener Java-Bibliotheken in Ihren RAD Studio-Anwendungen müssen Sie eine neue classes.dex-Datei erstellen, die die von Ihrer Anwendung benötigten, in RAD Studio integrierten Java-Bibliotheken und Ihre eigenen Java-Bibliotheken enthält.

Ermitteln der JAR-Dateien, die in Ihre classes.dex-Datei einbezogen werden müssen

Zum Erstellen Ihrer neuen classes.dex-Datei benötigen Sie die JAR-Dateien jeder Java-Bibliothek, die Ihre Anwendungen verwendet, sowie die JAR-Dateien der Bibliotheken, von denen diese Bibliotheken abhängen.

Dies betrifft auch die in RAD Studio integrierten Java-Bibliotheken. Wenn Ihre Anwendungen beispielsweise die Java-Bibliothek "Google Play Services" benötigen, muss Ihre classes.dex-Datei auch die JAR-Datei der Java-Bibliothek "Google Play Application Licensing" enthalten, weil Google Play Services von Google Play Application Licensing abhängen. Wenn Google Play Application Licensing eigene Abhängigkeiten hätte, müssten Sie auch diese einbeziehen.

In der folgenden Tabelle finden Sie die Abhängigkeiten der in RAD Studio integrierten Java-Bibliotheken:

Bibliothek JAR-Datei Abhängigkeiten Erforderlich für RAD Studio

Android Support (EN)

android-support-v4.jar

Ja

FireMonkey

fmx.jar

  • Android Support

Ja

Google Mobile Ads (EN)

GoogleAdMobAdsSdk-6.4.1.jar

Nein

Google Analytics (EN)

google-analytics-v2.jar

Nein

Google Play Application Licensing (EN)

google-play-licensing.jar

Nein

Google Play In-app Billing (EN)

google-play-billing.jar

  • Google Play Application Licensing

Nein

Google Play Services (EN)

google-play-services.jar

  • Google Play Application Licensing

Nein

APK Expansion (EN)

apk-expansion.jar

  • FireMonkey
  • Google Play Application Licensing

Nein

Cloud Messaging (EN)

cloud-messaging.jar

  • FireMonkey
  • Google Play Application Licensing

Nein

Diese JAR-Dateien befinden sich in den folgenden Ordnern im RAD Studio-Installationsordner (C:\Program Files (x86)\Embarcadero\Studio\22.0):

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

Sie können entweder alle in RAD Studio integrierten Java-Bibliotheken in Ihre classes.dex-Datei aufnehmen oder anhand der Informationen in der obigen Tabelle ermitteln, welche in RAD Studio integrierten Java-Bibliotheken Ihre Anwendungen benötigen.

Warnung: Sie müssen die Java-Bibliotheken, die für RAD Studio erforderlich sind, immer in Ihre eigene classes.dex-Datei aufnehmen.

Generieren einer classes.dex-Datei aus JAR-Dateien

Wenn Sie die JAR-Dateien ermittelt haben, die Ihre Android-Anwendungen benötigen, können Sie daraus eine classes.dex-Datei erstellen.

Zum Erstellen einer classes.dex-Datei müssen Sie das Befehlszeilen-Tool dx verwenden. Dieses Tool befindet sich unter C:\Users\Public\Documents\Embarcadero\Studio\22.0\CatalogRepository\AndroidSDK-<Version>.

Führen Sie dx mit dem Parameter --dex, dem Parameter --output mit dem Ausgabepfad der classes.dex-Datei als Argument und einer durch Leerzeichen getrennten Liste der Pfade der JAR-Dateien aus, die Sie in die generierte classes.dex-Datei einbeziehen möchten. Zum Beispiel:

dx --dex --output="classes.dex" "C:\Path\To\Library1.jar" "C:\Path\To\Library2.jar"
Hinweis: Sie sollten eine Debug- und eine Release-Version Ihrer classes.dex-Datei erstellen. Die Debug-Funktionen von RAD Studio stehen nur zur Verfügung, wenn die bereitgestellte classes.dex-Datei die Debug-Versionen der einbezogenen, in RAD Studio integrierten Java-Bibliotheken enthält.

Weitergeben der classes.dex-Datei

Warnung: Führen Sie die folgende Schritte sorgfältig aus. Android-Anwendungen müssen immer eine gültige classes.dex-Datei enthalten. Weitere Informationen finden Sie unter Ungültige oder fehlende classes.dex-Datei weiter unten.

So konfigurieren Sie Ihre Android-Anwendung, damit sie mit Ihrer eigenen classes.dex-Datei weitergegeben wird:

  1. Wählen Sie Projekt > Bereitstellung, um den Bereitstellungs-Manager zu öffnen.
  2. Deaktivieren Sie das Kontrollkästchen der classes.dex-Standarddatei.
  3. Klicken Sie auf die Schaltfläche Dateien hinzufügen, und fügen Sie Ihre eigene classes.dex-Datei der Liste der Bereitstellungsdateien hinzu.
  4. Ändern Sie den Remote-Pfad Ihres neuen Eintrags in classes\.
  5. Ändern Sie die Plattformen Ihres neuen Eintrags in Android.

DeploymentCustomClassesDex.png

Fehlerbehebung

Ungültige oder fehlende classes.dex-Datei

Diese Fehlermeldung wird angezeigt, wenn Sie Ihre Anwendung ohne eine gültige classes.dex-Datei auf einem Android-Gerät mit RAD Studio ausführen:

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

Ein Android-Anwendungspaket (APK-Datei) muss immer eine gültige classes.dex-Datei enthalten. Das heißt:

  • Es muss eine classes.dex-Datei in der APK-Datei enthalten sein.
  • Die classes.dex-Datei muss sich in der APK-Datei unter classes/classes.dex befinden.
  • Die classes.dex muss eine gültige ausführbare Dalvik-Datei (EN) sein.

Seien Sie bei der Verwendung von eigenen classes.dex-Dateien vorsichtig. Nachdem Sie die classes.dex-Standarddatei im Bereitstellungs-Manager deaktiviert und einen Eintrag für Ihre eigene classes.dex-Datei hinzugefügt haben, sollten Sie sicherstellen, dass:

  • Der Eintrag Ihrer eigenen Datei aktiviert ist.
  • Der Remote-Pfad Ihres neuen Eintrags classes\ lautet.
  • Ihr neuer Eintrag die classes.dex-Datei ist und nicht eine andere Datei, die möglicherweise keine gültige ausführbare Dalvik-Datei (EN) ist.

Wenn Ihre Android-Anwendung nicht für die Weitergabe mit einer gültigen classes.dex-Datei konfiguriert ist und Sie Ihre Anwendung auf einem Android-Gerät aus RAD Studio ausführen oder auf einem Gerät eine mit RAD Studio generierte APK-Datei Ihrer Anwendung installieren, schlägt die Installation fehl, aber es bleiben Daten auf Ihrem Android-Gerät zurück, die eine Installation von Anwendungen mit demselben Paketnamen wie Ihre Anwendung verhindern (siehe Android-Versionsinformationen).

Nach einem Versuch, eine APK-Datei ohne gültige classes.dex-Datei zu installieren, ist die einzige, bekannte Lösung das Zurücksetzen auf die Werkseinstellungen (EN) Ihres Android-Geräts.

Warnung: Durch das Zurücksetzen auf die Werkseinstellungen werden alle Daten von Ihrem Gerät entfernt (persönliche Daten, Benutzereinstellungen und mehr). Überlegen Sie genau, ob das Beheben des Problems den Verlust Ihrer Daten wert ist. Wenn Sie Ihr Gerät trotzdem auf die Werkseinstellungen zurücksetzen möchten, sollten Sie vorher Ihre Daten sichern.

Siehe auch