docs(android): building and installing the APK without the IDE
This commit is contained in:
@@ -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.
|
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é
|
## Piège de compilation rencontré
|
||||||
|
|
||||||
Cette installation de Delphi ne produisait **aucun** APK FireMonkey
|
Cette installation de Delphi ne produisait **aucun** APK FireMonkey
|
||||||
|
|||||||
Reference in New Issue
Block a user