ClementGre / PDF4Teachers

PDF editing software in large quantities. Designed for teachers, this app keeps recorded previous annotations, and offers features like marking scale, PDF conversion, vectorial drawing...
https://pdf4teachers.org/
Apache License 2.0
136 stars 17 forks source link

Portage Android #109

Closed C138 closed 1 year ago

C138 commented 2 years ago

Bonjour Pour compléter la portabilité de l'application, un portage androïd serait stratégique. Pas pour smartphone, plutôt pour tablette et en fait surtout pour (grand) écran télé (type équipement démo/visio, sessions de travail collaboratif)

PS : plus anecdotique, quoique, portage sur architecture ARM/raspberry ? ;-)

ClementGre commented 2 years ago

Bonjour, il existe un moyen de porter PDF4Teachers sur Android (et accessoirement IOS). Gluon permet en effet cela, en proposant une suite de bibliothèques pour interagir avec les différents OS, et adapter ainsi une application JavaFX à un autre OS. Le code est compilé par GraalVM, proposant des fonctionnalités de compilation natives.

Comme GraalVM Native Image compile le code Java directement en code natif. Cela permettrait d'augmenter la vitesse d'exécution et de démarrage de PDF4Teachers sous Windows/Linux/MacOSX.

J'ai créé la branche gluon, dans laquelle j'ai essayé de faire fonctionner GraalVM Native Image, avec le plugin Gradle de Gluon (une fois que la compilation fonctionnera sous Windows/Linux, on pourra envisager de compiler sous Androïd).

La compilation sous Linux a échouée (il y a 2 mois) à cause d'une bibliothèque manquante dans le JDK de GraalVM (je devrais réessayer avec la dernière version). J'ai cependant réussi à faire fonctionner la compilation Windows il y a quelques semaines, mais l'application refuse par la suite de démarrer. En effet, la compilation de GraalVM Native Image met en place beaucoup de restrictions et de fonctionnalités non supportés (à cause de cette compilation native), et parfois, ce n'est pas PDF4Teachers qui utilise ces fonctionnalités non supportées, mais ça peut être des dépendances, rendant le problème encore plus compliqué à résoudre.

Cela dit, PDF4Teachers est presque fonctionnel sous GraalVM Native Image. Il reste juste encore du travail, et j'envisage peut-être par la suite de déployer PDF4Teachers sous Windows/Linux/MacOSX avec GraalVM Native Image, de part sa rapidité incomparable aux autres JVM (si tant est que j'arrive un jour à le faire fonctionner).

Concernant la compilation sous Android/IOS, je doute que l'application fonctionne correctement du premier coup. Gluon propose des services pour accéder au stockage de l'appareil, et je doute qu'utiliser les fonctions classiques de Java fonctionnent sous Android. De même pour le GUI, le système de fenêtrage qu'on a sur PC, est totalement différent sous Android, et un grand travail d'adaptation va devoir être fait (je sais pas comment Gluon se débrouille avec ça, mais je doute que les fenêtres soient automatiquement converties en Activités).

Le portage Android n'est donc pas abandonné, mais c'est évidemment une tâche complexe, qui demande beaucoup de temps. Je réessayerais dans le futur de faire fonctionner Native Image, mais ce n'est pas ma priorité, et il est possible que ce port Android n'arrive jamais.

PS : GraalVM Native Image supporte aussi la compilation sous ARMv8 ou encore Raspberry Pi 4 (le mode de déploiement actuel permet aussi de déployer PDF4Teachers sur des architectures ARM comme par exemple Apple Silicon).

Pour Android, il serait aussi envisageable de faire une semi-compilation Java classique avec le JDK, mais je crois bien que le système de déploiement de Gluon ne fonctionne qu'avec Native Image. Il faudrait alors déployer nous-même l'application sous forme d'un APK. Mais sans compter la complexité de cela, on aurait surtout le problème qu'il faudrait utiliser le JRE Android, qui est un JRE 1.8, alors que PDF4Teachers utilise des fonctions du JDK 17.

Le plus simple reste donc d'utiliser le processus classique de Gluon Substrate avec GraalVM Native Image.

En espérant vous avoir éclairé sur le sujet - Clément Grennerat

ClementGre commented 1 year ago

Bonjour, Je reviens sur cette issue pour expliquer les raisons de la non considération du portage Android de PDF4Teachers.

Tout d'abord, comme expliqué dans mon message précédent, le portage Android nécessite de maîtriser un outil de compilation assez compliqué et demandant de nombreuses adaptations du code :

Cela serait donc un travail très important, demandant la révision de nombreux aspects de l'application.

Aussi, PDF4Teachers a été pensé comme une application permettant d'optimiser la correction de copies numériques, notamment par sa fonctionnalité principale qu'est la mémorisation des annotations les plus utilisées. Cela perd tout son sens sur Android, où la correction sera bien plus efficace à l'écrit. D'autant plus que si PDF4Teachers dispose d'un système d'écriture manuscrite, il reste cependant très limité et devrait évoluer pour répondre aux besoins accru d'écriture manuscrite sur tablette.

Il serait alors bien plus intéressant de développer une application autre que PDF4Teachers supportant cette plateforme, plutôt que d'essayer de porter sur Android un logiciel qui n'a pas du tout été pensé pour Android.

Merci à vous, Clément Grennerat