AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ios9

Ein Thema von CHackbart · begonnen am 16. Sep 2015 · letzter Beitrag vom 22. Nov 2015
Antwort Antwort
cipher

Registriert seit: 2. Aug 2015
27 Beiträge
 
#1

AW: Ios9

  Alt 4. Okt 2015, 12:24
Jetzt denke ich doch das es eher von der ImageList kommt, die PNG-Dateien habe ich schon mit IrFanView
upgedated, damit war es jedenfalls imer in Ordnung.

Wenn vielleicht jemand etwas dieser Richtung gefunden hat wäre ich für einen Tipp sehr dankbar.
Im Moment weiss ich nicht was von 32 zu 64-Bit schiefläuft.
Probleme mit der ImageList kann ich definitiv bestätigen. Habe sie in meinem Projekt daher komplett entfernt.
Jetzt läuft die App unter iOS 64bit.
Aber es scheint noch eine Komponente zu geben, die bei mir unter 32bit Probleme macht. Das ist echt ätzend. Vor allem läuft die App auch unter Android bei mir nur noch im Debug Mode aber nicht als Release.
Ich habe irgendwo gelesen, dass es auch ein Problem mit der Push-Komponente im Zusammenhang mit Parse geben könnte.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.221 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ios9

  Alt 5. Okt 2015, 13:36
Hallo cipher,

also ich geb dem Ding noch eine Chance.
Ich habe jetzt alle Images aus der TImageList entfernt, und nochmal neu angelegt.
Es könnte sein das ein Bild verschoben/umbenannt worden ist.

Das sollte eigentlich kein Problem sein, weil in TImageList *.fmx Datei die Bilder als Binary gespeichert sind,
nur ist auch noch zusätzliche ein Link zum Orginalbild vorhanden.
Dummerweise mit absoluten Pfaden, so dass ein Verschieben ins Nirwana führt.

Trotzdem bin ich nicht sicher ob es daran gelegen hat, weil ja die App auf ALLEN Plattformen korrekt
lief, von Win32/64, über Mac, iOS32/Simulator, Android.
Nur eben der iOS64 ist gecrasht, das ist schon seltsam.

Nach dem kompletten Löschen, Neuanlegen der Bilder hat es dann auch bei IOS64 funktioniert,
also definitiv ein TImageList Problem.
Aber das möchte ich nicht nochmal bei einem größeren Projekt machen, mit zig Icons ...

Was lerne ich daraus: Ich werde in Zukunft direkt auf iOS64 debuggen, statt wie bisher auf iOS32,
um vielleicht solche Probleme ehere zu erkennen.

Im übrigen hatte ich ähnliche Probleme mit Styles, auch da denke ich das es verwaiste Bilder/Stile sind
die das Ganze zum crashen bringen können.


Rollo
  Mit Zitat antworten Zitat
cipher

Registriert seit: 2. Aug 2015
27 Beiträge
 
#3

AW: Ios9

  Alt 23. Okt 2015, 19:47
Nach kleiner Pause habe ich mich jetzt wieder an mein kleines Projekt gesetzt um endlich einmal den Fehler etwas einzugrenzen.

Phänomen bei mir: meine App läuft auf 32-Bit-Geräten nur wenn als "Debug" kompiliert. Auf 64-Bit-Geräten dagegen sowohl als "Release" als auch "Debug".

Ich habe mich bei den Compiler-Einstellungen durch die Unterschiede zwischen Release und Debug geklickt und bin schlussendlich zu folgender Einstellung gekommen:

Wenn ich für die iOS32-Bit-Debug Version "Mit Debug-DCUs" auf "True" setze (siehe Bild), dann läuft die App auch als "Release" kompiliert.

http://enlightme.info/ios.png

Hat hier jemand evtl. einen Tipp, warum das so ist oder wie man das noch weiter eingrenzen könnte?

Geändert von cipher (23. Okt 2015 um 19:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Ios9

  Alt 23. Okt 2015, 20:39
Einen Fehler bzgl. iOSDevice32/Release habe ich schon gemeldet
https://quality.embarcadero.com/browse/RSP-12408

Du solltest aber irgendeine Fehlermeldung bekommen, bzw. deine App mit ein wenig Logging bestücken damit du sehen kannst wo der Fehler herkommt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
cipher

Registriert seit: 2. Aug 2015
27 Beiträge
 
#5

AW: Ios9

  Alt 23. Okt 2015, 21:04
Das Problem ist, dass die App schon abstürzt bevor sie dazu kommt meinen Code auszuführen (also noch beim "booten"):

http://enlightme.info/crash.png

Ich habe den Fehler jetzt eingrenzen können:

Es handelt sich um einen Bug im Zusammenhang mit TPushEvents. Dieses Feature scheint unter Android & iOS32-Bit im Release Mode zum Crash zu führen.

https://quality.embarcadero.com/browse/RSP-12658

Tolle Wurst, da bleibt mir wohl nichts anderes, als abzuwarten bis Embarcadero einen Fix dafür erstellt.

Geändert von cipher (23. Okt 2015 um 22:40 Uhr)
  Mit Zitat antworten Zitat
cipher

Registriert seit: 2. Aug 2015
27 Beiträge
 
#6

AW: Ios9

  Alt 27. Okt 2015, 11:26
Einen Fehler bzgl. iOSDevice32/Release habe ich schon gemeldet
https://quality.embarcadero.com/browse/RSP-12408

Du solltest aber irgendeine Fehlermeldung bekommen, bzw. deine App mit ein wenig Logging bestücken damit du sehen kannst wo der Fehler herkommt.
Das war ein guter Tipp von dir! TPushEvents scheint auch die Supports-Methode aus System.SysUtils zu nutzen, die bei Android/Release und iOS32/Release zum Absturz führt.

Als Workaround habe ich die System.SysUtils.pas in meinen Projektpfad aufgenommen und folgende Methode:

Code:
function Supports(const Instance: IInterface; const IID: TGUID; out Intf): Boolean; overload;
so verändert:

Code:
function Supports(const Instance: IInterface; IID: TGUID; out Intf): Boolean; overload;
Warum das dann funktioniert, weiß ich aber nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: Ios9

  Alt 27. Okt 2015, 12:03
Ich vermute es liegt dann an dem const der TGUID. IIRC wird ohne const der record zuerst kopiert und dann an die Funktion übergeben. Mit const wird nur eine reference zu dem record auf den stack gepushed. Das heißt du pushed eine reference auf den stack, während dort eigentlich der record direkt erwartet wird. Innerhalb der Funktion wird dann wohl auf invaliden Speicher zugegriffen.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
cipher

Registriert seit: 2. Aug 2015
27 Beiträge
 
#8

AW: Ios9

  Alt 28. Okt 2015, 09:44
Ich vermute es liegt dann an dem const der TGUID. IIRC wird ohne const der record zuerst kopiert und dann an die Funktion übergeben. Mit const wird nur eine reference zu dem record auf den stack gepushed. Das heißt du pushed eine reference auf den stack, während dort eigentlich der record direkt erwartet wird. Innerhalb der Funktion wird dann wohl auf invaliden Speicher zugegriffen.
Ja, das könnte sein, aber die IID wird in dieser Methode auch nur als const weitergegeben:

Code:
function Supports(const Instance: IInterface; IID: TGUID; out Intf): Boolean;
begin
  Result := (Instance <> nil) and (Instance.QueryInterface(IID, Intf) = 0);
end;
Definition der QueryInterface:

Code:
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:17 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