![]() |
Mühsame Fehlerkorrekturen unter Android 64Bit
Bei zwei meiner selbst programmierten Komponenten treten unter Android 64Bit unerklärliche Fehler auf. Während unter 32Bit alles problemlos kompiliert tauchten unzählige Fehler dieser Art auf: "Deklaration... unterscheidet sich von vorheriger Deklaration"
Angemeckert wird zum Beispiel:
Delphi-Quellcode:
Auch nach ca 100 maligem Vergleichen, konnte ich keinen Unterschied feststellen. Da hab ich einfach mal Copy und Paste gemacht und staune, obwohl gar nichts geändert wurde, wird die entsprechende Funktion nun akzeptiert. Die Lösung ist also gefunden, aber bei mehreren Dutzend Funktionen ist dies doch etwas mühsam mit copy and paste die entsprechenden Funktionsdefinitionen zu ändern. Unerklärlicherweise meckert Rio 10.3.3 aber nicht alle Funktionen an, nur einzelne, aber ein Muster kann ich da nicht erkennen.
//Klassendefinition:
public function Read(var Buffer; Count: Longint): Longint; override; //die eigentliche Funktion function TMyComponentStream.Read(var Buffer; Count: Longint): Longint; Infos: - Die Dateien wurden nie in einem externen Editor geöffnet oder verändert - Die Dateien wurden ursprünglich in Tokyo erstellt und in Rio 10.3.2 / 10.3.3 übernommen - Die Klassen wurden ursprünglich mit MMX Code Explorer erstellt |
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Delphi-Quellcode:
und wie sieht das in der Basisklasse aus ?
function Read(var Buffer; Count: Longint): Longint; override;
|
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Zitat:
Zusätzliche Fehlerkorrekturen, die ich nicht erwartet hätte: Rio 3.3 überschreibt mir bei diesem Projekt die Einstellungen der Bereitstellung. Dokumente, die ich unter 2.2 unter Android 32Bit manuell eingefügt habe, sind in 3.3 plötzlich nicht mehr vorhanden, Standardeinträge von Delphi, die ich deaktiviert hatte, sind wieder aktiviert. Dass in 64Bit Android Standardwerte eingetragen werden ist mir klar, aber warum auch in 32Bit? |
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Ich denke das Beste ist für Android-64 ein komplett neues, leeres Projekt anzulegen.
Damit werden alle Einträge von Delphi neu erzeugt, so wie es der Schöpfer gedacht hat. Leider muss man dann alle Einstellungen neu eintragen, aber dafür weiss man wo man steht. Dem Upgrade-Prozess der IDE vertraue ich nur bedingt, was Berechtigungen, etc. betrifft. Insbesondere wenn neue Build-Ziele hinzugekommen sind (64-Bit). |
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Zitat:
Das ändert aber nichts daran, dass von mir erstellte Komponenten, mit völlig identischem Code erstmals unter Android 64 nicht immer kompilierbar sind (wohl aber unter Windows, MAC, iOS und Android32), erst das Ersetzen der vom Compiler angemeckerten Funktions- und Methodendefinitionen (mit identischen Werten) ermöglicht mir das Kompilieren unter Android 64. Um klar zu stellen, nicht eine für mich nachvollziehbare Änderung des Codes wurde beim Ersetzen vorgenommen. Egal, ich habe mich damit abgefunden. Alles ist ersetzt, meine Komponenten laufen auch unter Android64, die Bereitstellungsdateien des aktuellen Projektes sind wieder geändert und erste Testversionen sind bei den Betatestern im Einsatz. Hat mich einfach ein paar Stunden Zeit gekostet und mein Vertrauen in den Android 64Bit Compiler etwas getrübt. |
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Zitat:
Aber aus Erfahrung weiis ich das man dann an anderer Stelle viel Arbeit einsparen kann. Ich versuche mich da bei dein Einstellungen mit OptionSets, und verschiedener anderer Tricks, aber den großen Wurf habe ich da auch noch nicht gefunden. Mir persönlich wäre es am liebsten wenn die Options in Delphi meinetwegen simpel per Text-Editor editiert werden könnten, und nicht mit diesem Options-Dialog, wo man nie genau weiss ob er die Änderung vererbt hat, oder nicht. |
AW: Mühsame Fehlerkorrekturen unter Android 64Bit
Ich hatte auch etwas zu kämpfen, bis meine Android-64-Version lief. Hauptproblem war, dass das Andriud-64 SDK und NDK nicht komplett eingerichtet war und teilweise auf falsche Pfade zeigt oder z.B. im Biblithekspfad für Delphi-NDK fehlte der Pfad C:\Users\Public\Documents\Embarcadero\Studio\20.0\ PlatformSDKs\android-ndk-r17b\sources\cxx-stl\gnu-libstdc++\4.9\libs\arm64-v8a; welcher bei Android-32 noch automatisch eingerichtet war.
Und natürlich muss die Bereitstellungssektion wieder gefüllt werden, was den Typ "File" und "ProjectFile" angeht. Da wird nichts übernommen. Und meist ist es eine gute Idee eine von einem neuen Projekt erzeugte AndroidManifest.template.xml per Copy&Paste zu übernehmen (und Anpassungen wieder dort einzutragen). Ich habe auch damit gekämpft, dass ich der Meinung war, dass ich der Android 64-Bit-Version die Bibliothek JavaScriptHelper.jar analog zu Android 32 hinzufügen muss. Dann ging aber weder Android 32 noch Android 64, weil die Bibliothek dann zweimal eingebunden war. Dies scheint mir noch ein Fehler in der Delphi-Konfiguration zu sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz