Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Große Projekte auf Android - linker out of memory (https://www.delphipraxis.net/189406-grosse-projekte-auf-android-linker-out-memory.html)

jaenicke 9. Jun 2016 08:37

Große Projekte auf Android - linker out of memory
 
Hallo,

nachdem der Linker bei Delphi 10 Seattle schon bei unseren Packages mit gemeinsamen Units ausgestiegen war, lassen sich diese nun unter 10.1 Berlin kompilieren und linken.
Das ist schon einmal ein Fortschritt, auch wenn das größte Projekt irgendwann einen internen Fehler meldet und erst im zweiten Anlauf fertig kompiliert.

Daraufhin haben wir unsere Hauptanwendung ebenfalls kompilierbar bekommen nach kleineren Änderungen. Das Problem ist aber dass der Linker immer mit Out-Of-Memory aussteigt.

Ich frage mich nun, ob überhaupt schon jemand größere Apps mit Delphi erstellt hat.

Zum Vergleich:
Die gemeinsamen Units dürften zusammen rund 2 Millionen Zeilen Quelltext haben, die App selbst, die darauf zurückgreift, ca. 300.000 Zeilen.
Die kompilierten gemeinsamen Units sind etwa 1,3 GiB groß, die der Anwendung noch einmal über 300 MiB.

Hat jemand schon Apps in dieser Größenordnung erstellt?

Ansonsten bliebe als Alternative eine abgespeckte Mini-Version als App zu erstellen. Schön wäre das aber nicht.

Vielen Dank und schönen Gruß,
Sebastian Jänicke

Bambini 9. Jun 2016 08:45

AW: Große Projekte auf Android - linker out of memory
 
Zitat:

Zitat von jaenicke (Beitrag 1339806)
Zum Vergleich:
Die gemeinsamen Units dürften zusammen rund 2 Millionen Zeilen Quelltext haben, die App selbst, die darauf zurückgreift, ca. 300.000 Zeilen.
Die kompilierten gemeinsamen Units sind etwa 1,3 GiB groß, die der Anwendung noch einmal über 300 MiB.

Verstehe ich das richtig, deine Windows EXE ist 300MB groß?
Zitat:

Zitat von jaenicke (Beitrag 1339806)
Hat jemand schon Apps in dieser Größenordnung erstellt?

Denke das 300MB Apps auf mobilen Geräte keine gute Idee ist.

bra 9. Jun 2016 08:46

AW: Große Projekte auf Android - linker out of memory
 
Versuch mal ob es funktioniert, wenn du in den Projekteinstellungen den externen Build aktivierst. Vor Seattle war das die Lösung, falls die Projekte nicht erstellt werden konnten.
Wobei 300 MB für die Anwendung (exe?) schon echt happig ist. Habt ihr die ganzen Ressourcen da mit drin?

jaenicke 9. Jun 2016 09:04

AW: Große Projekte auf Android - linker out of memory
 
Nein, die Exe unter Windows ist als Release Build 29 MiB groß.

Ich meine mit der Größe auch nicht das fertige Kompilat, sondern die .dcu und .o Dateien. Einen anderen Größenvergleich habe ich ja leider nicht solange der Linker nicht durchläuft.

Die kompilierten gemeinsamen Units für Win32 sind nicht einmal ein Zehntel so groß, nämlich 90 MiB. Und die der Anwendung selbst noch einmal knapp 40 MiB.
Das heißt derselbe Quelltext (für Win32 sogar noch etwas mehr, weil IFDEFs Teile davon für Android ausschließen), resultiert für Android in zusammengenommen 1,6 GiB kompilierter Units während es für Win32 lediglich 130 MiB sind...

Angesichts dieser Zahlen verstehe ich durchaus das OutOfMemory des Linkers, aber ich frage mich, ob das normal ist und es schlicht niemand so benutzt oder ob da etwas schief läuft.

Uwe Raabe 9. Jun 2016 09:08

AW: Große Projekte auf Android - linker out of memory
 
Ich bin mir nicht sicher, ob wir hier über denselben Sachverhalt reden, aber ich hatte auch mal ein Projekt, das beim Compilieren ein Out-Of-Memory in der Android-ToolChain erzeugte. Leider weiß ich nicht mehr, wo genau.

Abhilfe schaffte die Verwendung des NDK 10 statt 9, da die dortigen Tools mitlerweile als 64-Bit Applikationen vorliegen.

jaenicke 9. Jun 2016 10:35

AW: Große Projekte auf Android - linker out of memory
 
Danke, mit dem NDK 11 läuft das Linken in der Tat durch... sogar im Debugmodus.
Die .so ist als Debugversion 275 MiB groß... (zum Vergleich, die Windowsversion hat 100 MiB als Debugversion).

Dann werde ich mal den Buildprozess entsprechend einrichten... mal schauen...

Vielen Dank auf jeden Fall. Dass es daran liegen könnte, daran habe ich nicht gedacht.

mensch72 9. Jun 2016 11:03

AW: Große Projekte auf Android - linker out of memory
 
wie stellt man das NDK von 9 auf 11 um ?

jaenicke 9. Jun 2016 11:49

AW: Große Projekte auf Android - linker out of memory
 
Hier gibt es die Version, ich habe die für Windows 64-Bit benutzt:
https://developer.android.com/ndk/do...dex.html?hl=ko

Ich habe sie an die gleiche Stelle gepackt wie Delphi selber:
C:\Users\Public\Documents\Embarcadero\Studio\18.0\ PlatformSDKs\android-ndk-r11c

Und dann in Delphi unter "Tools --> Optionen --> Umgebungsoptionen --> SDK Manager" das Verzeichnis eintragen, sprich aus android-ndk-r9c machst du android-ndk-r11c.
Und bei Punkt 3 sieht das bei mir dann so aus (Punkt 4 analog):
C:\Users\Public\Documents\Embarcadero\Studio\18.0\ PlatformSDKs\android-ndk-r11c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip.exe
Sprich statt windows nun windows-x86_64 (weil ich die 64-Bit Variante genommen habe).

TurboMagic 19. Jun 2016 09:41

AW: Große Projekte auf Android - linker out of memory
 
In dem man das neuere NDK aus dem Internet herunterlädt, in einen leeren ordner entpackt und in Delphi unter Tools/Optionen in den SDK Einstellungen die Pfade zum NDK anpasst.

jaenicke 8. Jul 2016 09:38

AW: Große Projekte auf Android - linker out of memory
 
Jetzt klappt das mit dem Kompilieren, auch installieren und starten lässt sich die App im Debugger. Ich bekomme aber nun immer einen Segmentation Fault an Adresse 0 bevor ich an eine Stelle komme, an der ich debuggen könnte. Die App kommt noch nicht einmal bis zum initialization der System.SysUtils, die in der uses des Projekts innerhalb der System.StartUpCopy.pas weit oben steht.

Hat jemand irgendeine Idee wie ich so etwas debuggen kann? Am besten ohne die App langsam auseinander zu nehmen bis es geht, was aktuell meine einzige Idee wäre.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz