3 votes

Activer l'entrée gestuelle (balayage) (sur Fairphone 2) sans le clavier Google

J'ai un Fairphone 2 fonctionnant sous Fairphone Open OS, et je fais un effort quixotique pour éviter d'installer des logiciels non libres (au sens de la liberté) et pour optimiser la vie privée.

Je veux une saisie par balayage, mais je ne veux pas installer Google Keyboard, (LatimeImeGoogle.apk) Par défaut, le système d'exploitation a le clavier AOSP. J'ai également installé le AnySoftKeyboard incroyablement convivial pour le code (qui a aussi des thèmes géniaux) et le Hacker's Keyboard de F-Droid, mais bien qu'ils me soient utiles, ils n'ont pas de saisie par balayage.

J'ai lu ce post qui me fait penser que je dois obtenir la source et compiler le clavier. Je ne sais pas comment faire cela pour le moment, mais je suis prêt à apprendre. J'ai juste essayé de remplacer la bibliothèque (en trichant et en prenant la bonne bibliothèque de l'apk Google) mentionnée dans le post, et rien n'a changé (si je supprime la bibliothèque, le clavier arrête de fonctionner complètement, donc clairement je fais un changement système en la remplaçant - il ne fait tout simplement pas ce que je veux).

J'aimerais n'importe laquelle des options suivantes, par ordre de préférence

  1. un clavier FOSS convivial pour le code avec une saisie gestuelle
  2. un moyen simple* d'activer la saisie gestuelle pour l'AOSP
  3. confirmation que je dois, en fait, construire l'AOSP moi-même pour faire ce que je veux
  4. tout autre conseil pertinent(!)

Évidemment, j'ai un accès root :)

*J'ai un système Ubuntu avec lequel jouer sur mon ordinateur portable si cela peut aider...

0 votes

Installer le clavier Google n'affectera pas votre vie privée, sauf si vous activez les fonctionnalités de synchronisation.

0 votes

0 votes

Vous devriez pouvoir l'importer dans Android Studio sans trop de complications.

4voto

rugk Points 230

Le problème

Le clavier par défaut de l'AOSP ne dispose pas de la fonction de glissement. Il n'apparaîtra pas dans les paramètres. La raison facile (mais maladroite) est que Google a considéré cette fonctionnalité comme trop "secrète" pour la publier dans le code source ouvert et qu'ils la livrent donc dans une bibliothèque propriétaire.

La solution

Si vous le souhaitez, vous pouvez pousser cette bibliothèque sur votre appareil après l'installation de la ROM (et à chaque mise à jour !). Elle est nommée libjni_latinimegoogle.so et doit être placée dans /system/lib.

Pour moi (Android 7.1, ARM) cette bibliothèque était vraiment petite (944 ko) et ancienne (mise à jour en 2008). (sha256sum: 442a2a8bfcb25489564bc9433a916fa4dc0dba9000fe6f6f03f5939b985091e6)

Guide détaillé

  1. Téléchargez les bonnes applications Google depuis http://opengapps.org/. (bien que je suppose que la bibliothèque puisse être la même pour certaines versions, mais bon... téléchargez simplement la bonne)
  2. Maintenant entrez dans le ZIP, respectivement extrayez-le. Dans le répertoire Optionnel, vous trouverez une autre archive swypelibs-lib-arm.tar.lz. Extrayez-la et vous obtiendrez le fichier libjni_latinimegoogle.so.
  3. Maintenant, ayez votre téléphone/appareil prêt en mode de récupération. Assurez-vous de monter la partition /system de manière accessible en écriture. Dans TWRP, vous devez aller dans "Monter" -> (si nécessaire, décochez) "monter /system en lecture seule" puis montez-le en cochant la case pour "/système".
  4. Il suffit maintenant de pousser le fichier sur votre téléphone (adb push /chemin/vers/libjni_latinimegoogle.so /system/lib) et redémarrez.

Cela devrait fonctionner !

Survie en OTA

J'ai dit que vous devez faire cela pour chaque mise à jour. Cependant, vous pouvez également créer un petit script de survie en OTA, qui sauvegarde le fichier lorsque le système est mis à jour.

Voici ma proposition (actuellement expérimentale) :

#!/sbin/sh
# 
# /system/addon.d/95-latinimegoogle.sh
# Lors d'une mise à jour du système d'exploitation, ce script sauvegarde /system/lib/libjni_latinimegoogle.so,
# /system est formaté et réinstallé, puis le fichier est restauré.
#

. /tmp/backuptool.functions

list_files() {
cat <

``

Aussi disponible sur GitHub : https://gist.github.com/rugk/a4c9fa11c5c031faf45602d6bf922a1c

  1. Sauvegardez simplement ce fichier, poussez-le sur votre appareil dans le répertoire /système/addon.d (adb push 95-latinimegoogle.sh /system/addon.d). (Encore une fois, assurez-vous que /système est monté.)
  2. Et rendez-le exécutable : adb shell sur votre appareil, allez dans le répertoire via cd /system/addon.d et : chmod +x 95-latinimegoogle.sh.

``

2 votes

Le dossier de destination doit être /system/lib64 si vous exécutez sur un ARM64. Il m'a fallu un certain temps pour comprendre car il y a toujours un /system/lib autour. Bien sûr, le chemin doit également être ajusté dans le script de survie OTA.

1 votes

Malheureusement, vos instructions semblent ne pas fonctionner lorsque Magisk est installé : après un redémarrage, le fichier disparaît à nouveau. Solution : après avoir copié le fichier sur votre carte SD, démarrez en mode récupération (TWRP), montez /system, puis utilisez par exemple le gestionnaire de fichiers intégré (Aroma) pour copier le fichier. Après un autre redémarrage, la saisie gestuelle est disponible.

1 votes

PS: "vieille chose (mise à jour en 2008)" - ne vous laissez pas tromper par cela. Celui pour 8.1 a le même horodatage, mais est plus grand (1.1M au lieu de 944k). Il semble que l'horodatage soit toujours réglé sur la "date de naissance" fictive d'Android. // "Téléchargez les bonnes applications Google" - il semble que le plus petit package (pico) soit suffisant pour cela.

4voto

taivlam Points 41
  1. Le script de survie OTA/le hack de fragment de configuration a cessé de fonctionner sur le OnePlus 3T après la dernière mise à jour du firmware OEM de OnePlus. (Même si la dernière mise à jour du firmware OEM pour le OnePlus 3T a été publiée par OnePlus en juillet 2019, je ressens le besoin d'écrire cela car je n'ai vu personne en parler jusqu'à présent.) Je pense que c'est parce que les mainteneurs de LineageOS de oneplus3 ont commencé à utiliser des fichiers de contrôleur d'intégrité, et cela vérifie les composants du système par rapport à un ensemble de clés de signature, ce qui fera toujours disparaître le script de survie OTA personnalisé du téléphone. Donc, cela signifie que vous êtes limité à la "partie" supérieure de la solution de rugk. Donc, selon mon expérience avec les téléphones que j'ai, je pense que la "partie" inférieure de la solution ne fonctionne que sur : les anciens appareils Android 32-bit (comme le OnePlus One/bacon) ou tout appareil Android 64-bit avec des versions de LOS qui n'utilisent pas de contrôle de fichier de contrôle d'intégrité. (Je ne sais pas comment vérifier cela sur des appareils LOS disponibles de manière arbitraire.)

  2. Le hack de libjni_latinimegoogle.so nécessite TWRP comme votre récupération personnalisée pour fonctionner. Depuis LOS 17.1-18.1, Lineage Recovery est proposé pour tout appareil avec des versions de LOS. Cependant, n'utilisez pas Lineage Recovery si vous utilisez ce hack de libjni_latinimegoogle.so. Pour une raison quelconque, si vous avez Lineage Recovery, le répertoire /system/lib64 n'existe tout simplement pas, même lorsque vous montez le stockage de l'appareil via Lineage Recovery. Cela a été observé sur un OnePlus 3T/oneplus3.

  3. Sur la base de ce que j'ai lu, j'en déduis que ce hack de libjni_latinimegoogle.so ne fonctionnera tout simplement pas sur une ROM personnalisée qui implémente correctement le démarrage vérifié en re-verrouillant le chargeur de démarrage. En mai 2021, CalyxOS et GrapheneOS sont 2 ROM qui utilisent le démarrage vérifié. Donc, le fait de supprimer libjni_latinimegoogle.so parmi les fichiers système sera probablement interdit. Même si ce hack de la bibliothèque de saisie par geste était hypothétiquement possible, j'ai l'impression que ce serait une très mauvaise pratique/situation en termes de sécurité. Au lieu de cela, si votre cas d'utilisation/modèle de menace permet l'utilisation de claviers tiers open source, je recommanderais FlorisBoard, qui a récemment implémenté ce qu'il appelle la saisie "glide" et est disponible sur F-Droid. (Juste pour être clair, je ne suis pas associé à CalyxOS, GrapheneOS ou FlorisBoard.) AnySoftKeyboard a promis une sorte de saisie gestuelle ou par glissement, mais c'était en 2018 et ASK n'a jamais complètement implémenté cette fonctionnalité, lorsque j'ai essayé ASK une fois en 2020, si je me souviens bien.

1voto

Dave Points 131

Une solution pré-construite simple est désormais disponible sous la forme de OpenBoard avec saisie gestuelle, un fork d'OpenBoard qui, je crois, ajoute simplement la bibliothèque de balayage propriétaire. De plus, AnySoft Keyboard propose désormais la saisie gestuelle, mais je ne l'ai pas trouvée aussi efficace.

1voto

Lineage OS 17.1 Points 11

Mise à jour pour Lineage OS 17.1 (Android 10.0)

D'après ce Reddit, l'étape 4 du guide détaillé de rugk diffère comme suit (en utilisant TWRP car le transfert du fichier avec adb n'a pas fonctionné) :

  • transférer libjni_latinimegoogle.so sur votre téléphone (/sdcard)
  • démarrer TWRP, vérifier sous "Mount" que system est monté et que "lecture seule" n'est pas cochée
  • lancer la ligne de commande sous "Advanced » Terminal" et entrer les commandes suivantes :
  • mv /sdcard/libjni_latinimegoogle /system/product/lib/
  • chmod 644 /system/product/lib/libjni_latinimegoogle
  • cd /system/product/app/LatinIME/lib/arm/
  • rm libjni_latinime.so
  • ln -s /system/product/lib/libjni_latinimegoogle.so libjni_latinime.so

La solution ci-dessus fonctionne parfaitement avec un Samsung S5 Neo (s5neolte/SM-G903F) et Lineage OS 17.1 (Android 10).

Comme mentionné ci-dessus, vous pouvez extraire libjni_latinimegoogle.so depuis Open GApps. Concernant les options de téléchargement, peu importe la version d'Android que vous choisissez. Il semble que le fichier n'ait pas été modifié au moins depuis Android 7.1. J'ai utilisé les paramètres suivants :

  • Plateforme : arm
  • Android : 10.0
  • Variant : nano

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X