Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi FMX Android64 Priviligierter Fehler (https://www.delphipraxis.net/214619-fmx-android64-priviligierter-fehler.html)

Gruber_Hans_12345 8. Feb 2024 14:00

FMX Android64 Priviligierter Fehler
 
Hallo ich habe ein Problem mit einer Android 64 Bit Anwendung.

Ich wollte ein großes VCL Projekt (nichts visuelles aber dafür viel mit Variants, benutzerdefinierte Variants - also eigene definierte und Pointer)
von win32 auf Android64 portieren.

Zum Testen habe ich es zuerst mal auf win64 gebracht, und da läuft alles ohne Probleme.

Nur unter Android kommt ab und an mal so ein komischer Priviligierter Error.

Ich mache dabei nix anderes als auf einen Knopfdruck in einer Schleife 1000 mal die große Routine durchzulaufen.

Bei Win64 klicke ich das 20 mal an und alles passt, bei Android kommt denn meiste beim 2ten oder 3ten klick dann der Fehler (also läuft so 2000-3000 mal ohne Probleme durch)

Ich verteile per Debug over WLAN, und da funktioniert leider das Debuggen nicht wirklich bricht in Delphi immer nach so einer Minute hängen ab.

Gibt es da noch andere Tricks wie ich da auf die schliche komme was an meiner Anwendung hier die Probleme verursacht?

TurboMagic 9. Feb 2024 12:08

AW: FMX Android64 Priviligierter Fehler
 
Versuche mal an das Android Logcat Log zu kommen.
Auch Delphi Anwendungen schreiben da gerne rein.

Leider liefert das Android SDK den Logcat Viewer nicht mehr mit.
Mittels ADB.exe -logcat kann man das glaube ich auf der Console bekommen
oder man sucht sich einen alternativen Viewer. Hab' nur leider gerade
keine URL für einen zur Hand.

Grüße
TurboMagic

Gruber_Hans_12345 10. Feb 2024 05:58

AW: FMX Android64 Priviligierter Fehler
 
Okay danke, also mit dem logcat, da muss ich dann selber die logs einbauen oder?
Das wäre das?
Delphi-Quellcode:
  Uses
     System.UITypes;
   begin
     log.d('Mein Text');
Ich habe nun auch das noch gefunden https://blog.grijjy.com/2017/02/21/b...art-2-android/ das werde ich dann auch noch testen

TurboMagic 10. Feb 2024 14:19

AW: FMX Android64 Priviligierter Fehler
 
Ja und nein:
Einerseits kannst du auf dem von dir beschriebenen Weg selber Logmeldungen schreiben,
FMX/Delphi postet aber ab und zu auch automatisch in das Log.

Grüße
TurboMagic

Rollo62 10. Feb 2024 16:07

AW: FMX Android64 Priviligierter Fehler
 
Zitat:

Zitat von TurboMagic (Beitrag 1533256)
Leider liefert das Android SDK den Logcat Viewer nicht mehr mit.

Es gibt aber auch sehr gute Alternativen:
https://github.com/DelphiWorlds/DeviceLens

Gruber_Hans_12345 12. Feb 2024 07:51

AW: FMX Android64 Priviligierter Fehler
 
Zitat:

Zitat von Rollo62 (Beitrag 1533278)
Zitat:

Zitat von TurboMagic (Beitrag 1533256)
Leider liefert das Android SDK den Logcat Viewer nicht mehr mit.

Es gibt aber auch sehr gute Alternativen:
https://github.com/DelphiWorlds/DeviceLens

Den habe ich ausprobiert, das mit dem Filter habe ich nicht verstanden wie der funktioniert.
der name lautet "com.embarcadero.TestApp" habe von "TestApp" "*TestApp", "com.embarcadero.TestApp" alles probiert - aber es bleiben keinerlei Logs stehen

Mit durchscrollen habe ich 2 Warnings Errors gefunden
Code:
Setting show_button_background has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
Code:
win=Window{6efcebe u0 com.embarcadero.TestApp/com.embarcadero.firemonkey.FMXNativeActivity EXITING} destroySurfaces: appStopped=false cleanupOnResume=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.WindowState.onExitAnimationDone:5630 com.android.server.wm.WindowStateAnimator.onAnimationFinished:208 com.android.server.wm.WindowState.onAnimationFinished:5851 com.android.server.wm.WindowContainer$$ExternalSyntheticLambda4.onAnimationFinished:0 com

Gruber_Hans_12345 12. Feb 2024 08:15

AW: FMX Android64 Priviligierter Fehler
 
Eine Frage zu dem "https://blog.grijjy.com/2017/02/21/b...art-2-android/" hat das irgendwer zum laufen gebracht?

Ich habe zwei Probleme

1. Sobald ich die Grijjy.ErrorReporting in den uses habe, dann bleibt der Splash Screen einfach hängen und geht nicht mehr weiter.

2. Man muss ja dem LD Linker zusätzlich angeben "--version-script=goExports.vsr"
Habe das File im richtigen Ordner liegen (und er findet es - kontrolliert indem ich einen falschen Dateiname angebe, dann meckert er das er es nicht finden kann)
bekomme ich den Fehler
Code:
[DCC Fehler] E2597 C:\Users\Public\Documents\Embarcadero\Studio\22.0\CatalogRepository\AndroidNDK-21-22.0.48361.3236\android-ndk-r21\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\aarch64-linux-android\bin\ld.exe: anonymous version tag cannot be combined with other version tags
goExports.vsr
Code:
{
  global:
    _ZN*;
    _ZZ*;
};

Gruber_Hans_12345 12. Feb 2024 09:53

AW: FMX Android64 Priviligierter Fehler
 
Also bei dem unit Grijjy.ErrorReporting;
musst ich das auskommentieren, dann starte die App wieder

Delphi-Quellcode:
 
constructor TgoExceptionReporter.InternalCreate(const ADummy: Integer);
....
{ Assign the global ExceptionAcquired procedure to our own implementation (it
    is nil by default). This procedure gets called for unhandled exceptions that
    happen in other threads than the main thread. }
  // ExceptionAcquired := @GlobalExceptionAcquiredHandler;
Nur leider bekomme ich keine Info zu dem Stack also nur die Adressen ohne sonstige Infos
hat da noch wer einen tipp?

fisipjm 12. Feb 2024 12:55

AW: FMX Android64 Priviligierter Fehler
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1533310)
Zitat:

Zitat von Rollo62 (Beitrag 1533278)
Zitat:

Zitat von TurboMagic (Beitrag 1533256)
Leider liefert das Android SDK den Logcat Viewer nicht mehr mit.

Es gibt aber auch sehr gute Alternativen:
https://github.com/DelphiWorlds/DeviceLens

Den habe ich ausprobiert, das mit dem Filter habe ich nicht verstanden wie der funktioniert.
der name lautet "com.embarcadero.TestApp" habe von "TestApp" "*TestApp", "com.embarcadero.TestApp" alles probiert - aber es bleiben keinerlei Logs stehen

Einfach auf FMX: filtern. Log.d setzt immer ein FMX: vor die eigentliche Message. Damit sollten dann alle Log.d von deiner Anwendung zu sehen sein.

Rollo62 13. Feb 2024 09:08

AW: FMX Android64 Priviligierter Fehler
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1533310)
Den habe ich ausprobiert, das mit dem Filter habe ich nicht verstanden wie der funktioniert.
der name lautet "com.embarcadero.TestApp" habe von "TestApp" "*TestApp", "com.embarcadero.TestApp" alles probiert - aber es bleiben keinerlei Logs stehen

Der Filter akzeptiert momentan glaube ich nur case-sensitive Strings.
Ich meine aber, dass dies bei mir auch gut funktioniert, im Feld "Filter On Text", muss ich aber nochmal checken.
Im Zweifelsfall aber nach der AppId in "Filter On Application" filtern, was dann den Vorteil hat, dass auch alle System-Events mitgeloggt werden, was bei der Fehlersuche sehr nützlich ist.

<EDIT:>
Ich sehe gerade: Es scheint in V2.1.0 auch insensitive drin zu sein.
</EDIT>

Ein Problem habe ich damit, dass längere Logs wohl speichertechnisch problematisch sind, denn die können sehr schnell extrem groß werden.
Da schmiert DeviceLens bei mir schonmal schnell ab.
Ich versuche daher immer nur kurz vor einem Test das DeviceLens aktiv zu schalten und dann sofort wieder aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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