Tengo Fairphone 2 con Fairphone Open OS y estoy haciendo un esfuerzo quijotesco para evitar instalar software no libre (como en freedom) en él y optimizar la privacidad.
Quiero entrada de deslizamiento, pero no quiero instalar el teclado de Google, (LatimeImeGoogle.apk) De manera predeterminada, el sistema operativo tiene un teclado AOSP. También instalé AnySoftKeyboard, maravillosamente amigable con el código (que también tiene temas increíbles) y Hacker's Keyboard de F-Droid, pero aunque son útiles para mí, no tienen entrada de deslizamiento.
He leído esta publicación que me hace pensar que tengo que obtener la fuente y compilar el teclado. No sé cómo hacer esto en este momento, pero estoy preparado para aprender. Intenté simplemente reemplazar la biblioteca (haciendo trampa y tomando la biblioteca correcta de Google apk) mencionada en la publicación, y nada cambió (si elimino la biblioteca, el teclado deja de funcionar por completo, así que claramente estoy haciendo un cambio de sistema al reemplazarlo) - simplemente no hace lo que quiero).
Me gustaría alguno de los siguientes, en orden de preferencia
Obviamente, tengo root :)
*Tengo un sistema Ubuntu para jugar en mi computadora portátil si ayuda...
El teclado AOSP predeterminado no se envía con deslizamiento. No aparecerá en la configuración. La razón fácil (pero incómoda) es que Google consideró que esta función era demasiado "secreta" para publicarla en el código fuente abierto y, por lo tanto, la envían en una biblioteca propietaria.
Si lo desea, puede enviar esa biblioteca a su dispositivo después de la instalación de la ROM (¡y cada actualización!). Se nombra libjni_latinimegoogle.so
y necesita ser puesto en /system/lib
.
Para mí (Android 7.1, ARM) esta biblioteca era realmente pequeña (944 kB) y anticuada (actualizada en 2008). (sha256sum 442a2a8bfcb25489564bc9433a916fa4dc0dba9000fe6f6f03f5939b985091e6
:)
Optional
directorio encontrarás otro archivo swypelibs-lib-arm.tar.lz
. Extraiga eso y obtendrá el libjni_latinimegoogle.so
archivo./system
partición de forma que se pueda escribir. En TWRP, debe ir a "Montar" -> (si es necesario, desmarque) "montar / sistema en solo lectura" y luego montarlo marcando la casilla "/ sistema".adb push /path/to/libjni_latinimegoogle.so /system/lib
) y reinicie.¡Deberia de funcionar!
Dije que necesitas hacer esto para cada actualización. Sin embargo, también puede crear un pequeño script de supervivencia OTA, que realiza una copia de seguridad del archivo cuando se actualiza el sistema.
Aquí está mi propuesta (actualmente, experimental):
#!/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
También disponible en GitHub: https://gist.github.com/rugk/a4c9fa11c5c031faf45602d6bf922a1c
/system/addon.d
directorio ( adb push 95-latinimegoogle.sh /system/addon.d
). (Una vez más, debe asegurarse de que /system
esté montado).adb shell
en tu dispositivo, ve al directorio vía cd /system/addon.d
y: chmod +x 95-latinimegoogle.sh
./system/lib64
si está ejecutando en un ARM64. Me tomó un tiempo averiguarlo ya que todavía hay un /system/lib
alrededor. Por supuesto, la ruta también debe ajustarse en el guión de supervivencia de OTA./system
y luego use, por ejemplo, el administrador de archivos incorporado (Aroma) para copiar el archivo. Después de reiniciar nuevamente, la escritura gestual está disponible.El truco del fragmento de configuración/secuencia de comandos de supervivencia de OTA dejó de funcionar en OnePlus 3T después de la última actualización de firmware OEM de OnePlus. (Aunque OnePlus lanzó la última actualización de firmware OEM para OnePlus 3T en julio de 2019, me siento obligado a seguir escribiendo esto porque hasta ahora no he visto a nadie mencionar esto). Creo que esto se debe a que los mantenedores de LineageOS oneplus3
comenzaron a usar digerir los archivos y esto verifica los componentes del sistema con algún conjunto de claves de firma, lo que siempre hará que el teléfono desaparezca el script de supervivencia OTA personalizado. Entonces, esto significa que está limitado a la mitad "superior" de la solución de rugk . Entonces, según mi experiencia con los teléfonos que tengo, creo que la parte "inferior" de la solución solo funciona en:bacon
) o cualquier dispositivo Android de 64 bits con compilaciones LOS que no utilicen la comprobación de archivos de resumen. (No sé cómo verificar esto en dispositivos arbitrarios disponibles en LOS).
El libjni_latinimegoogle.so
truco requiere TWRP como recuperación personalizada para funcionar. Desde LOS 17.1-18.1, Lineage Recovery se ha ofrecido para cualquier dispositivo con compilaciones LOS. Sin embargo, no use Lineage Recovery si usa este libjni_latinimegoogle.so
truco. Por alguna razón, si tiene Lineage Recovery, el /system/lib64
directorio simplemente no existe, incluso cuando monta el almacenamiento del dispositivo a través de Lineage Recovery. Esto se observó en un OnePlus 3T/ oneplus3
.
Según lo que he leído, infiero que este libjni_latinimegoogle.so
truco simplemente no funcionará en ninguna ROM personalizada que implemente correctamente el arranque verificado al volver a bloquear el gestor de arranque. A partir de mayo de 2021, CalyxOS y GrapheneOS son 2 ROM que utilizan un arranque verificado. Por lo tanto, libjni_latinimegoogle.so
es probable que se prohíba colocarlos entre los archivos del sistema. Incluso si este truco de la biblioteca de escritura de gestos fuera hipotéticamente posible, creo que sería una práctica/movimiento de seguridad extremadamente malo. En cambio, si su caso de uso/modelo de amenaza permite teclados de terceros de código abierto, recomendaría FlorisBoard , que implementó recientemente lo que llama escritura "deslizante" y está disponible en F-Droid. (Para que quede claro, no estoy afiliado a CalyxOS, GrapheneOS o FlorisBoard). AnySoftKeyboard prometía algún tipo de escritura deslizante/gestual, pero eso fue en 2018 y ASK nunca implementó completamente esta función, cuando cansé ASK una vez en 2020, IIRC.
Actualización para Lineage OS 17.1 (Android 10.0)
Basado en este Reddit , el paso 4 de la guía detallada de rugk difiere de la siguiente manera (usando TWRP ya que empujar el archivo con adb no funcionó):
libjni_latinimegoogle.so
a su teléfono ( /sdcard
)system
está montado y "solo lectura" no está marcadomv /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 solución anterior funciona de maravilla con un Samsung S5 Neo (s5neolte/SM-G903F) y Lineage OS 17.1 (Android 10).
Como se mencionó anteriormente, puede extraer libjni_latinimegoogle.so
de Open GApps . En cuanto a las opciones de descarga, no importa mucho la versión de Android que elijas. Parece que el archivo no ha cambiado al menos desde Android 7.1. Utilicé la siguiente configuración:
xanguá
EresAGitPorNoUsarGit
EresAGitPorNoUsarGit
Zanna
EresAGitPorNoUsarGit
Zanna
EresAGitPorNoUsarGit
Zanna
EresAGitPorNoUsarGit
Zanna