Gesteneingabe (Wischen) (auf Fairphone 2) ohne Google-Tastatur aktivieren

Ich habe Fairphone 2, auf dem Fairphone Open OS läuft, und ich unternehme große Anstrengungen, um die Installation unfreier (wie in Freiheit) Software darauf zu vermeiden und die Privatsphäre zu optimieren.

Ich möchte eine Wischeingabe, aber ich möchte die Google-Tastatur nicht installieren (LatimeImeGoogle.apk) Standardmäßig verfügt das Betriebssystem über eine AOSP-Tastatur. Ich habe auch das wunderbar codefreundliche AnySoftKeyboard (das auch tolle Themen hat) und Hacker's Keyboard von F-Droid installiert, aber obwohl sie für mich nützlich sind, haben sie keine Swipe-Eingabe.

Ich habe diesen Beitrag gelesen , was mich denken lässt, dass ich die Quelle bekommen und die Tastatur kompilieren muss. Ich weiß im Moment nicht, wie ich das machen soll, aber ich bin bereit, es zu lernen. Ich habe versucht, die im Beitrag erwähnte Bibliothek zu ersetzen (indem ich betrüge und die richtige Bibliothek aus der Google-APK nehme), und nichts hat sich geändert (wenn ich die Bibliothek lösche, funktioniert die Tastatur nicht mehr vollständig, also nehme ich eindeutig eine Systemänderung vor, indem ich sie ersetze - es macht einfach nicht was ich will).

Ich möchte eines der folgenden, in der Reihenfolge meiner Präferenz

  1. eine schöne Code-freundliche FOSS-Tastatur mit Gesteneingabe
  2. eine einfache* Möglichkeit, die Gesteneingabe für AOSP zu aktivieren
  3. Bestätigung, dass ich AOSP tatsächlich selbst bauen muss, um zu tun, was ich will
  4. alle anderen relevanten Ratschläge (!)

Natürlich habe ich root :)

*Ich habe ein Ubuntu-System, mit dem ich auf meinem Laptop spielen kann, wenn es hilft ...

Die Installation der Google-Tastatur wirkt sich nicht auf Ihre Privatsphäre aus, es sei denn, Sie aktivieren die Synchronisierungsfunktionen.
Hier ist eine FOSS-Tastatur: github.com/AnySoftKeyboard/AnySoftKeyboard
Sie sollten in der Lage sein, das ohne allzu großen Aufwand in Android Studio zu importieren.
@AndroidDev, das verwende ich - es ist großartig und hat schöne Themen im Add-On, aber keine Gesteneingabe
@Zanna - Oh meine Güte ... das in deiner Frage völlig übersehen. Lol. In diesem Fall müssen Sie wahrscheinlich aus der AOSP-Quelle bauen.
@AndroidDev Ich denke :( Und AOSP ist so hässlich ... wann wird AnySoftKeyboard einen Gesteneingabe- Seufzer haben ?
@Zanna - Oh-oh. Siehe diesen Kommentar: stackoverflow.com/questions/33127671/…
@AndroidDev Ich denke, es ist in Ordnung, es muss eine kleine Änderung im Code vorgenommen werden, und Sie müssen nur die Bibliothek aus der Google-Tastatur-Apk einfügen (denken Sie an einen Blob). Es sieht ziemlich einfach aus, ich bin nur faul und hätte lieber eine attraktivere Option
@Zanna - Aber dann ist es nicht mehr FOSS
@AndroidDev schließen, wie es geht :(

Antworten (3)

Das Problem

Die standardmäßige AOSP-Tastatur wird nicht mit Streichen geliefert. Es wird nicht in den Einstellungen angezeigt. Der einfache (aber unangenehme) Grund ist, dass Google diese Funktion für zu "geheim" hielt, um sie im Open-Source-Code zu veröffentlichen, und sie daher in einer proprietären Bibliothek ausliefern.

Die Lösung

Wenn Sie möchten, können Sie diese Bibliothek nach der ROM-Installation (und jedem Update!) auf Ihr Gerät übertragen. Es wird benannt libjni_latinimegoogle.sound muss eingefügt werden /system/lib.

Für mich (Android 7.1, ARM) war diese Bibliothek ein wirklich kleines (944 kB) und veraltetes (aktualisiertes 2008) Ding. (sha256sum: 442a2a8bfcb25489564bc9433a916fa4dc0dba9000fe6f6f03f5939b985091e6)

Detaillierte Anleitung

  1. Laden Sie die richtigen Google Apps von http://opengapps.org/ herunter . (obwohl ich denke, dass die Bibliothek für einige Versionen gleich sein kann, aber naja … laden Sie einfach die richtige herunter)
  2. Jetzt in das ZIP einsteigen, bzw. entpacken. Im OptionalVerzeichnis finden Sie ein weiteres Archiv swypelibs-lib-arm.tar.lz. Extrahieren Sie das und Sie erhalten die libjni_latinimegoogle.soDatei.
  3. Halten Sie Ihr Telefon / Gerät jetzt im Wiederherstellungsmodus bereit. /systemStellen Sie sicher, dass Sie die Partition beschreibbar einhängen . In TWRP müssen Sie zu "Mount" -> (falls erforderlich, deaktivieren) "mount /system in read-only" gehen und es dann mounten, indem Sie das Kontrollkästchen für "/system" aktivieren.
  4. Drücken Sie jetzt einfach die Datei auf Ihr Telefon ( adb push /path/to/libjni_latinimegoogle.so /system/lib) und starten Sie neu.

Es sollte funktionieren!

OTA-Überleben

Ich sagte, Sie müssen dies für jedes Update tun. Sie können aber auch ein kleines OTA-Survival-Skript erstellen, das die Datei sichert, wenn das System aktualisiert wird.

Hier ist mein (derzeit experimenteller) Vorschlag:

#!/sbin/sh
# 
# /system/addon.d/95-latinimegoogle.sh
# During an OS upgrade, this script backs up /system/lib/libjni_latinimegoogle.so,
# /system is formatted and reinstalled, then the file is restored.
#

. /tmp/backuptool.functions

list_files() {
cat <<EOF
lib/libjni_latinimegoogle.so
EOF
}

case "$1" in
  backup)
    list_files | while read FILE DUMMY; do
      backup_file $S/"$FILE"
    done
  ;;
  restore)
    list_files | while read FILE REPLACEMENT; do
      R=""
      [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
      [ -f "$C/$S/$FILE" ] && restore_file $S/"$FILE" "$R"
    done
  ;;
  pre-backup)
    # Stub
  ;;
  post-backup)
    # Stub
  ;;
  pre-restore)
    # Stub
  ;;
  post-restore)
    # Stub
  ;;
esac

Auch auf GitHub verfügbar: https://gist.github.com/rugk/a4c9fa11c5c031faf45602d6bf922a1c

  1. Speichern Sie einfach diese Datei und schieben Sie sie auf Ihr Gerät in das /system/addon.dVerzeichnis ( adb push 95-latinimegoogle.sh /system/addon.d). (Auch hier müssen Sie sicherstellen, dass /systemes montiert ist.)
  2. Und machen Sie es ausführbar: adb shellGehen Sie in Ihrem Gerät über cd /system/addon.dund zum Verzeichnis: chmod +x 95-latinimegoogle.sh.
Der Zielordner muss sein, /system/lib64wenn Sie auf einem ARM64 laufen. Es hat eine Weile gedauert, bis ich es herausgefunden habe, da es immer noch eine gibt /system/lib. Natürlich muss der Pfad auch im OTA Survival Script angepasst werden.
Ihre Anleitung scheint leider nicht zu funktionieren, wenn Magisk installiert ist: Nach einem Neustart ist die Datei wieder weg. Lösung: Nachdem Sie die Datei auf Ihre SD-Karte kopiert haben, booten Sie in die Wiederherstellung (TWRP), mounten Sie /systemund verwenden Sie dann z. B. den integrierten Dateimanager (Aroma), um die Datei zu kopieren. Nach dem erneuten Neustart ist die Gesteneingabe verfügbar.
PS: „altes (aktualisiertes 2008) Ding“ – lassen Sie sich davon nicht täuschen. Die für 8.1 hat den gleichen Zeitstempel, ist aber größer (1,1 MB statt 944 KB). Anscheinend ist der Zeitstempel immer auf das fiktive "Geburtsdatum" von Android gesetzt. // „Laden Sie die richtigen Google Apps herunter“ – dafür scheint das kleinste Paket (pico) ausreichend zu sein.
  1. Der OTA Survival Script/Configuration Fragment Hack funktionierte auf dem OnePlus 3T nach dem letzten OEM-Firmware-Update von OnePlus nicht mehr. (Obwohl das letzte OEM-Firmware-Update für das OnePlus 3T im Juli 2019 von OnePlus veröffentlicht wurde, fühle ich mich gezwungen, dies dennoch zu schreiben, da ich bisher niemanden gesehen habe, der dies erwähnt hat.) Ich denke, das liegt daran, dass die LineageOS-Betreuer mit der oneplus3Verwendung begonnen haben Digest-Dateien und dies verifiziert Systemkomponenten anhand eines Satzes von Signaturschlüsseln, was immer dazu führt, dass das Telefon das benutzerdefinierte OTA-Überlebensskript verschwindet. Das bedeutet also, dass Sie auf die „obere“ Hälfte der Lösung von rugk beschränkt sind . Also, nach meiner Erfahrung mit den Telefonen, die ich habe, denke ich, dass der "untere" Teil der Lösung nur auf beiden funktioniert:bacon) oder alle 64-Bit-Android-Geräte mit LOS-Builds, die keine Digest-Dateiprüfung verwenden. (Ich weiß nicht, wie ich dies auf beliebigen LOS-verfügbaren Geräten überprüfen kann.)

  2. Der libjni_latinimegoogle.soHack erfordert TWRP als Ihre benutzerdefinierte Wiederherstellung, um zu funktionieren. Seit LOS 17.1-18.1 wird Lineage Recovery für alle Geräte mit LOS-Builds angeboten. Verwenden Sie Lineage Recovery jedoch nicht, wenn Sie diesen libjni_latinimegoogle.soHack verwenden. Wenn Sie über Lineage Recovery verfügen, existiert das /system/lib64Verzeichnis aus irgendeinem Grund einfach nicht, selbst wenn Sie den Gerätespeicher über Lineage Recovery mounten. Dies wurde auf einem OnePlus 3T/ beobachtet oneplus3.

  3. Basierend auf dem, was ich gelesen habe, schließe ich, dass dieser libjni_latinimegoogle.soHack einfach nicht auf einem benutzerdefinierten ROM funktioniert, das den verifizierten Start durch erneutes Sperren des Bootloaders ordnungsgemäß implementiert. Ab Mai 2021 sind CalyxOS und GrapheneOS zwei ROMs, die einen verifizierten Start verwenden. Daher wird das Ablegen libjni_latinimegoogle.sozwischen Systemdateien wahrscheinlich verboten sein. Selbst wenn dieser Hack der Gesteneingabe-Bibliothek hypothetisch möglich wäre, wäre das meiner Meinung nach eine extrem schlechte Sicherheitspraxis/-maßnahme. Wenn Ihr Anwendungsfall/Bedrohungsmodell Open-Source-Tastaturen von Drittanbietern zulässt, würde ich stattdessen FlorisBoard empfehlen , das kürzlich das so genannte „Gleitschreiben“ implementiert hat und auf F-Droid verfügbar ist. (Nur um das klarzustellen, ich bin nicht mit CalyxOS, GrapheneOS oder FlorisBoard verbunden.) AnySoftKeyboard versprach eine Art Gleit-/Gesteneingabe, aber das war im Jahr 2018 und ASK hat diese Funktion nie vollständig implementiert, als ich ASK einmal müde wurde 2020, IIRC.

Update für Lineage OS 17.1 (Android 10.0)

Basierend auf diesem Reddit unterscheidet sich Schritt 4 der detaillierten Anleitung von rugk wie folgt (unter Verwendung von TWRP, da das Übertragen der Datei mit adb nicht funktionierte):

  • Übertragung libjni_latinimegoogle.soauf Ihr Telefon ( /sdcard)
  • TWRP starten, unter „Mount“ prüfen, ob systemgemountet ist und „read-only“ nicht angehakt ist
  • Starten Sie die Befehlszeile unter "Erweitert » Terminal" und geben Sie die folgenden Befehle ein:
  • 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

Die obige Lösung funktioniert wie ein Zauber mit einem Samsung S5 Neo (s5neolte/SM-G903F) und Lineage OS 17.1 (Android 10).

libjni_latinimegoogle.soWie oben erwähnt, können Sie aus Open GApps extrahieren . Bei den Download-Möglichkeiten spielt es keine so große Rolle, für welche Android-Version Sie sich entscheiden. Es scheint, dass die Datei zumindest seit Android 7.1 nicht geändert wurde. Folgende Einstellungen habe ich verwendet:

  • Plattform: Arm
  • Android: 10.0
  • Variante: nano