refactor(android): the unlock screen moves to HTML, Skia and the style go

The caret in an Android TEdit does not land where you touch, which makes a long bearer token impossible to correct - the reason the last FMX screen had to go. A field in the engine inherits the system's text handling (caret, selection, handles, paste) for free.

With no FMX control left, two things became dead weight and are gone: the vendored Dark.style, which had nothing left to style, and Skia - 25 MB carried solely so FMX labels would shape Arabic. The engine does its own shaping; checked on the device, an Arabic filename still reads correctly. The APK drops from 22.0 to 12.7 MB.

Delphi stays the owner of the server settings; the page only edits them and hands them back when a field loses focus, one navigation per changed field rather than one per keystroke.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-17 10:40:06 +01:00
parent d1d5d29879
commit 77809b09c8
8 changed files with 244 additions and 5914 deletions
+6 -16
View File
@@ -3,16 +3,6 @@ program pmserverApk;
uses
System.StartUpCopy,
FMX.Forms,
// Skia remplace le moteur de rendu de FMX. Ce n'est pas un choix esthetique :
// celui d'origine ne met pas en forme les ecritures complexes - pas de
// reordonnancement bidirectionnel, pas de liaison des lettres arabes - et un
// nom de piece jointe en arabe s'affichait donc en desordre. Skia embarque
// HarfBuzz et fait ce travail correctement.
//
// Le prix est libsk4d.so, 25 Mo, a poser dans lib/arm64-v8a de l'APK. Le
// deploiement automatique s'en chargerait ; ici il ne deploie rien, donc la
// bibliotheque est mise en place a la main comme le manifeste et les .dex.
FMX.Skia,
mainApk in 'mainApk.pas' {Form8},
PMA.Crypto in 'android-client\PMA.Crypto.pas',
PMA.TestVector in 'android-client\PMA.TestVector.pas',
@@ -29,13 +19,13 @@ uses
{$R *.res}
begin
// AVANT Application.Initialize : le canevas est choisi a l'initialisation,
// et le basculer ensuite ne rattrape pas ce qui est deja construit.
GlobalUseSkia := True;
// NI SKIA NI STYLE. Les deux servaient les controles FMX : Skia pour mettre
// en forme l'arabe dans les libelles - le moteur d'origine ne lie pas les
// lettres et ne reordonne pas le bidirectionnel - et le style pour que les
// champs et les listes ne s'affichent pas en clair. L'interface est passee au
// moteur du systeme, qui fait les deux lui-meme ; il ne reste plus un seul
// controle FMX a habiller. Au passage, libsk4d.so ne pese plus dans l'APK.
Application.Initialize;
// Le style se pose apres l'initialisation mais avant la forme : l'appliquer
// plus tard laisserait les controles deja construits avec l'ancien.
ApplyDarkTheme;
Application.CreateForm(TForm8, Form8);
Application.Run;
end.