AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Große Projekte auf Android - linker out of memory
Thema durchsuchen
Ansicht
Themen-Optionen

Große Projekte auf Android - linker out of memory

Ein Thema von jaenicke · begonnen am 9. Jun 2016 · letzter Beitrag vom 6. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#1

Große Projekte auf Android - linker out of memory

  Alt 9. Jun 2016, 09:37
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
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#2

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

  Alt 9. Jun 2016, 09:45
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ß?
Hat jemand schon Apps in dieser Größenordnung erstellt?
Denke das 300MB Apps auf mobilen Geräte keine gute Idee ist.
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

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

  Alt 9. Jun 2016, 09:46
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?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 9. Jun 2016, 10:04
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 9. Jun 2016, 10:08
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 9. Jun 2016, 11:35
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#7

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

  Alt 9. Jun 2016, 12:03
wie stellt man das NDK von 9 auf 11 um ?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 9. Jun 2016, 12:49
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).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 19. Jun 2016, 10:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

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

  Alt 8. Jul 2016, 10:38
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.
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