Salut à tous,

Passé Freelance depuis quelques temps, j'ai résolu de ne plus utiliser Windows pour passer sous Linux (Rocky Linux 9 pour ceux que ça intéresse avec le bureau KDE) car j'en ai soupé des multiples versions de Windows.

Il m'a fallu cependant, pour reprendre un projet Android sous Delphi configurer une machine virtuelle Windows et pouvoir lancer l'application en debug avec Delphi, sur un périphérique Android, les émulateurs c'est bien mais ça a ses limites comme tout le monde le sait.

J'ai une licence Delphi 11

Pour la virtualisation j'ai choisi VirtualBox, que je connais bien pour l'avoir de nombreuses fois utilisée.

La machine invitée est un Windows 10 pro, après avoir essayer un échec avec Windows 11, qui ne fait que consommer du processeur et qui est peu réactif, même avec beaucoup de RAM (16 go) et très lourd par rapport à Windows 10

Donc installation de Delphi 11 (merci mon fichier .slip) avec la plateforme Android, jusque là tout va bien

Maintenant il faut connecter le périphérique Android et la machine virtuelle Windows, c'est là que ça se gâte un peu...

Mon périphérique est bien détecté par Linux, j'ai installé Android Studio et je peux déployer une application depuis Linux sans problème, mais pas depuis Windows

1. Bon déjà j'ai oublié d'installer l'extension pack de VirtualBox pour que celui-ci puisse voir et adopter les périphériques USB 2.0, c'était la fin de journée

2. Le lendemain, après avoir installé le pack d'extension, je ne vois toujours aucun périphérique USB (alors que j'ai un disque externe, une caméra, un casque, etc... le tout sur USB)

Après ceci, le client n'étant pas pressé, je vague à d'autres occupations...

3. De retour sur le sujet, je me dis que c'est pas normal de ne pas voir les périphériques USB sur VirtualBox (alors que Linux les voient lui) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
[sergio@device-13 ~]$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04f2:b729 Chicony Electronics Co., Ltd Chicony USB2.0 Camera
Bus 001 Device 003: ID 0d8c:0289 C-Media Electronics, Inc. USB Advanced Audio Device
Bus 001 Device 005: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 001 Device 009: ID 0480:0900 Toshiba America Inc MQ04UBF100
Bus 001 Device 008: ID 8086:0808 Intel Corp. USB PnP Sound Device
Bus 001 Device 017: ID 12d1:107e Huawei Technologies Co., Ltd. P10 smartphone
Bus 001 Device 006: ID 248a:8353 Maxxter Wireless Receiver
Bus 001 Device 002: ID 0424:2744 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Quelques recherches plus loin (et quelques essai infructueux), je tombe sur une discussion (sur StackOverFlow qui traite de ce sujet)

En résumé, sous Linux, VirtualBox s'exécute dans la session utilisateur avec vboxusers comme groupe, et pour pourvoir accéder aux périphériques USB, votre compte utilisateur Linux doit appartenir au groupe vboxusers, pour se faire, rien de plus facile :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
sudo usermod -aG vboxusers <monuserlinux>
Après fermeture, réouverture de la session et relance de la machine virtuelle, celle-ci voit enfin les périphériques USB, je me dis, que c'est OK maintenant

QUE NENNI !!

Dans la machine virtuelle Windows, bien que j'ai capturé mon périphérique Android, Delphi refuse de le détecter, pire à la compilation il demande si je veux mettre à jour le SDK Android ?

4. Je désinstalle et réinstalle la plateforme Android, mais idem, impossible de compiler déjà, sans parler de déployer

Bon là je me dis que je vais déjà lancer un adb list pour voir s'il voit au moins quelque chose... Et là impossible de trouver adb.exe sur le disque de la machine virtuelle, normalement avec Delphi il est dans C:\Users\Documents\Embarcadero\Studio\<Version>\CatalogRepository\<version du SDK Android>\Platform-tools\

En fait je ne sais pas pourquoi, mais une grosse partie du SDK n'est pas là, alors que pour le NDK c'est OK

5. Pour ne pas me faire suer à installer un JDK j'ai opté pour "Eclipse Terumin OpenJDK 11" à l'installation de RAD Studio me disant que c'était bon pour ce que j'ai à faire...

Grossière erreur :


A l'installation, GetIt installe le JDK puis les outils du sdkmanager d'Android, or il s'avère qu'il s'agit de la dernière version du SDK manager et celle-ci n'est pas compatible avec Eclipse Terumin OpenJDK 11, il faut au moins JDK 17 pour qu'elle fonctionne
Mais ce qui est encore plus retors, c'est qu'il n'y pas de message d'erreur lorsque l'installeur va lancer les commandes suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
sdkmanager -install "platform-tools" 
sdkmanager -install "build-tools;32.0.0"
sdkmanager -install "platforms;android-32"
Tout semble se passer bien mais il manque en fait la moitié des outils pour Android !!!

6. Après avoir compris et installé un JDK plus récent, j'ai pu installé ce qui manquait avec sdkmanager et maintenant je peux développer sous Android dans une machine virtuelle Windows 10 sous Linux !!!

Bref, après avoir un temps, envisager de remonter une machine physique Windows, je peux développer tranquillement en restant principalement le reste du temps sous Linux !!!

Nom : Screenshot_20240628_143107.png
Affichages : 201
Taille : 16,1 Ko

Voila c'était un petit résumé de mes péripéties, si un jour ça peux servir à quelqu'un !