diff --git a/android-client/README.md b/android-client/README.md index 4a639ab..6775599 100644 --- a/android-client/README.md +++ b/android-client/README.md @@ -172,6 +172,47 @@ Node ouvre le fichier et pas le client, le défaut est dans le client. L'interface est `mainApk.pas`, à la racine du dépôt. +## Fabriquer l'APK en ligne de commande + +L'EDI y arrive seul ; MSBuild non, et l'erreur ne dit pas pourquoi. + +Le `.dproj` déclare les **classes** de déploiement Android (`AndroidSplashStyles`, +`Android_LauncherIcon96`…) mais **aucun fichier** rattaché à ces classes : l'EDI +les fournit implicitement, depuis son gestionnaire de déploiement. Hors EDI, +`aapt` est donc appelé sur un dossier `res` qui n'a jamais été rempli, et se +plaint d'un répertoire absent — pas d'une configuration manquante. + +De quoi il a besoin, mis en place à la main sous `Android64\Debug\pmserverApk\` : + +| Destination | Source | +|---|---| +| `res\` (arbre complet) | recopié de `Android\Debug\pmserverApk\res` (build 32 bits de l'EDI) | +| `res\values\styles.xml`, `values-v21`, `values-v31` | `Android64\Debug\styles*.xml` | +| `res\values\colors.xml`, `values-night-v21\colors.xml` | `Android64\Debug\colors*.xml` | +| `res\values\strings.xml` | `Android64\Debug\strings.xml` | +| `res\drawable\splash_image_def.xml`, `drawable-anydpi-v21` | `Android64\Debug\splash_image_def*.xml` | +| `res\drawable-anydpi-v26\ic_launcher.xml`, `-v33` | `Android64\Debug\ic_launcher*.xml` | +| `AndroidManifest.xml` | `Android64\Debug\AndroidManifest.xml` | +| `classes\*.dex` | `Android64\Debug\pmserverApk.classes\*.dex` | +| `library\lib\arm64-v8a\libpmserverApk.so` | `Android64\Debug\libpmserverApk.so` | + +Ensuite `msbuild pmserverApk.dproj /p:Platform=Android64 /p:Config=Debug +/t:Deploy` produit et signe `bin\pmserverApk.apk`, et `adb install -r` l'installe. +Le correctif durable serait d'écrire ces entrées une fois dans le `.dproj`. + +> **Place disque.** Le `.so` de debug pèse **91 Mo** (symboles), et le volume +> `Z:` n'en fait que 2 Go. Le dépouiller avec le `strip` du NDK le ramène à +> 54 Mo, et l'APK final à 16 Mo — mais `strip` écrit sa copie temporaire **à +> côté de la cible**, donc il faut écrire vers un autre volume puis recopier. +> Prévoir ~200 Mo libres avant une compilation Android, sinon l'édition de +> liens échoue sans que rien n'indique la vraie cause. + +Pour que le téléphone voie l'endpoint local : + +```bash +adb reverse tcp:8080 tcp:80 +``` + ## Piège de compilation rencontré Cette installation de Delphi ne produisait **aucun** APK FireMonkey