diff --git a/android-client/android-res/drawable/ic_launcher_background.xml b/android-client/android-res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0786163 --- /dev/null +++ b/android-client/android-res/drawable/ic_launcher_background.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/android-client/android-res/drawable/ic_launcher_foreground.xml b/android-client/android-res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..725e215 --- /dev/null +++ b/android-client/android-res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/android-client/android-res/drawable/ic_launcher_monochrome.xml b/android-client/android-res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 0000000..f729035 --- /dev/null +++ b/android-client/android-res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/android-client/make-icons.ps1 b/android-client/make-icons.ps1 new file mode 100644 index 0000000..9b3206c --- /dev/null +++ b/android-client/make-icons.ps1 @@ -0,0 +1,68 @@ +# Genere les icones PNG du lanceur, pour Android < 8 qui ignore les icones +# adaptatives. Meme dessin que les vecteurs de android-res\drawable : +# cadenas cyan sur ardoise. +# +# A relancer seulement si le dessin change ; les PNG sont suivis par git. + +$ErrorActionPreference = 'Stop' +Add-Type -AssemblyName System.Drawing + +$root = Join-Path $PSScriptRoot 'android-res' +$bg = [System.Drawing.Color]::FromArgb(255, 15, 23, 42) # #0F172A +$fg = [System.Drawing.Color]::FromArgb(255, 34, 211, 238) # #22D3EE + +# densite -> cote en pixels, tel qu'Android les attend +$sizes = @{ 'drawable-ldpi' = 36; 'drawable-mdpi' = 48; 'drawable-hdpi' = 72 + 'drawable-xhdpi' = 96; 'drawable-xxhdpi' = 144; 'drawable-xxxhdpi' = 192 } + +foreach ($dir in $sizes.Keys) { + $n = $sizes[$dir] + $out = Join-Path $root $dir + New-Item -ItemType Directory -Force $out | Out-Null + + $bmp = New-Object System.Drawing.Bitmap $n, $n + $g = [System.Drawing.Graphics]::FromImage($bmp) + $g.SmoothingMode = 'AntiAlias' + + # Fond : carre arrondi. Les vieux lanceurs ne masquent pas, donc l'icone + # doit porter sa propre forme. + $r = [int]($n * 0.22) + $path = New-Object System.Drawing.Drawing2D.GraphicsPath + $path.AddArc(0, 0, 2*$r, 2*$r, 180, 90) + $path.AddArc($n-2*$r-1, 0, 2*$r, 2*$r, 270, 90) + $path.AddArc($n-2*$r-1, $n-2*$r-1, 2*$r, 2*$r, 0, 90) + $path.AddArc(0, $n-2*$r-1, 2*$r, 2*$r, 90, 90) + $path.CloseFigure() + $g.FillPath((New-Object System.Drawing.SolidBrush $bg), $path) + + # Echelle : le dessin vectoriel vit dans un carre de 108. + $u = $n / 108.0 + $brush = New-Object System.Drawing.SolidBrush $fg + $pen = New-Object System.Drawing.Pen $fg, ([float](5.5 * $u)) + $pen.StartCap = 'Round'; $pen.EndCap = 'Round' + + # Anse : demi-cercle ouvert vers le bas, puis deux montants. + $g.DrawArc($pen, [float](44*$u), [float](37*$u), [float](20*$u), [float](20*$u), 180, 180) + $g.DrawLine($pen, [float](44*$u), [float](47*$u), [float](44*$u), [float](56*$u)) + $g.DrawLine($pen, [float](64*$u), [float](47*$u), [float](64*$u), [float](56*$u)) + + # Corps + $body = New-Object System.Drawing.Drawing2D.GraphicsPath + $bx = 34*$u; $by = 54*$u; $bw = 40*$u; $bh = 26*$u; $br = 4*$u + $body.AddArc([float]$bx, [float]$by, [float](2*$br), [float](2*$br), 180, 90) + $body.AddArc([float]($bx+$bw-2*$br), [float]$by, [float](2*$br), [float](2*$br), 270, 90) + $body.AddArc([float]($bx+$bw-2*$br), [float]($by+$bh-2*$br), [float](2*$br), [float](2*$br), 0, 90) + $body.AddArc([float]$bx, [float]($by+$bh-2*$br), [float](2*$br), [float](2*$br), 90, 90) + $body.CloseFigure() + $g.FillPath($brush, $body) + + # Serrure, evidee dans la couleur du fond + $bgBrush = New-Object System.Drawing.SolidBrush $bg + $g.FillEllipse($bgBrush, [float](50*$u), [float](58*$u), [float](8*$u), [float](8*$u)) + $g.FillRectangle($bgBrush, [float](52.4*$u), [float](64*$u), [float](3.2*$u), [float](9*$u)) + + $g.Dispose() + $bmp.Save((Join-Path $out 'ic_launcher.png'), [System.Drawing.Imaging.ImageFormat]::Png) + $bmp.Dispose() + "{0,-20} {1}x{1}" -f $dir, $n +} diff --git a/android-client/repack-apk.ps1 b/android-client/repack-apk.ps1 index 1cbdc16..b8ff23b 100644 --- a/android-client/repack-apk.ps1 +++ b/android-client/repack-apk.ps1 @@ -21,6 +21,11 @@ $p = '.\Android64\Debug\pmserverApk' # 1. Remettre Skia, que Deploy vient d'effacer. Copy-Item "$bds\binandroid64\libsk4d.so" "$p\library\lib\arm64-v8a\libsk4d.so" -Force +# 1 bis. Nos icones par-dessus celles de Delphi. Meme raison que pour Skia : +# les proprietes Android_LauncherIcon* et Android_AdaptiveIcon* du .dproj +# devraient suffire, mais rien ne les deploie ici. +Copy-Item "$PSScriptRoot\android-res\*" "$p\res\" -Recurse -Force + # 2. aapt : reconstruit l'archive non alignee depuis library, classes, res. & $pac -u8 --aaptpackage="$sdk\build-tools\33.0.2\Aapt.exe,$p\library,$p\classes,$p\res,$p\assets,$p\AndroidManifest.xml,$sdk\platforms\android-33\android.jar,$p\bin\pmserverApk-unaligned.apk" if ($LASTEXITCODE -ne 0) { throw "aapt a echoue" }