У меня есть Fairphone 2 под управлением Fairphone Open OS, и я прилагаю донкихотские усилия, чтобы избежать установки на нем несвободного (как свобода) программного обеспечения и оптимизировать конфиденциальность.
Я хочу ввод свайпом, но не хочу устанавливать Google Keyboard, (LatimeImeGoogle.apk) По умолчанию в ОС установлена клавиатура AOSP. Я также установил удивительно удобную для кода AnySoftKeyboard (у которой также есть потрясающие темы) и клавиатуру хакера от F-Droid, но, хотя они мне полезны, у них нет ввода смахиванием.
Я прочитал этот пост , который заставляет меня думать, что мне нужно получить исходный код и скомпилировать клавиатуру. Я не знаю, как это сделать в данный момент, но я готов учиться. Я попытался просто заменить библиотеку (обманывая и взяв правильную библиотеку из Google apk), упомянутую в посте, и ничего не изменилось (если я удалю библиотеку, клавиатура полностью перестанет работать, поэтому очевидно, что я вношу изменения в систему, заменяя ее) - это просто не делает то, что я хочу).
Я хотел бы что-нибудь из следующего, в порядке предпочтения
Очевидно, у меня есть root :)
* У меня есть система Ubuntu, с которой я могу поиграть на своем ноутбуке, если это поможет...
Клавиатура AOSP по умолчанию не поддерживает смахивание. В настройках не появится. Простая (но неловкая) причина заключается в том, что Google посчитал эту функцию слишком «секретной» или около того, чтобы выпускать ее в открытом исходном коде, и поэтому они поставляют ее в проприетарной библиотеке.
Если вы хотите, вы можете загрузить эту библиотеку на свое устройство после установки ПЗУ (и каждого обновления!). Он назван libjni_latinimegoogle.so
и его нужно вставить /system/lib
.
Для меня (Android 7.1, ARM) эта библиотека была очень маленькой (944 КБ) и старой (обновлено в 2008 году). (sha256sum 442a2a8bfcb25489564bc9433a916fa4dc0dba9000fe6f6f03f5939b985091e6
:)
Optional
каталоге вы найдете еще один архив swypelibs-lib-arm.tar.lz
. Извлеките это, и вы получите libjni_latinimegoogle.so
файл./system
раздел доступным для записи способом. В TWRP вам нужно перейти в «Монтировать» -> (если нужно, снимите флажок) «монтировать / system в режиме только для чтения», а затем смонтировать его, установив флажок «/ system».adb push /path/to/libjni_latinimegoogle.so /system/lib
) и перезапустите.Он должен работать!
Я сказал, что вам нужно делать это для каждого обновления. Однако вы также можете создать небольшой сценарий выживания OTA, который создает резервную копию файла при обновлении системы.
Вот мое (в настоящее время экспериментальное) предложение:
#!/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
Также доступно на GitHub: https://gist.github.com/rugk/a4c9fa11c5c031faf45602d6bf922a1c .
/system/addon.d
( adb push 95-latinimegoogle.sh /system/addon.d
). (Опять же, вы должны убедиться, что /system
он смонтирован.)adb shell
в вашем устройстве перейдите в каталог через cd /system/addon.d
и: chmod +x 95-latinimegoogle.sh
./system/lib64
если вы работаете на ARM64. Мне потребовалось некоторое время, чтобы понять, так как /system/lib
вокруг все еще есть. Конечно, путь нужно настроить и в скрипте выживания ОТА./system
, а затем используйте, например, встроенный файловый менеджер (Aroma), чтобы скопировать файл. После повторной перезагрузки набор жестов доступен.Взлом скрипта выживания / фрагмента конфигурации OTA перестал работать на OnePlus 3T после последнего обновления прошивки OEM от OnePlus. (Несмотря на то, что последнее обновление прошивки OEM для OnePlus 3T было выпущено OnePlus в июле 2019 года, я чувствую себя обязанным написать это, потому что до сих пор я не видел, чтобы кто-то упоминал об этом.) Я думаю, это потому, что разработчики LineageOS oneplus3
начали использовать дайджест-файлы, и это проверяет компоненты системы на соответствие некоторому набору ключей подписи, что всегда приводит к тому, что на телефоне исчезает пользовательский сценарий выживания OTA. Итак, это означает, что вы ограничены «верхней» половиной решения от rugk . Итак, исходя из моего опыта работы с телефонами, которые у меня есть, я думаю, что «нижняя» часть решения работает только на:bacon
) или любые 64-разрядные устройства Android со сборками LOS, которые не используют проверку дайджест-файлов. (Я не знаю, как это проверить на произвольных LOS-доступных устройствах.)
Для libjni_latinimegoogle.so
работы взлома требуется TWRP в качестве вашего пользовательского восстановления. Начиная с LOS 17.1-18.1, Lineage Recovery предлагается для любого устройства со сборками LOS. Однако не используйте Lineage Recovery, если используете этот libjni_latinimegoogle.so
хак. По какой-то причине, если у вас Lineage Recovery, /system/lib64
каталог просто не существует, даже когда вы монтируете хранилище устройства через Lineage Recovery. Это наблюдалось на OnePlus 3T/ oneplus3
.
Основываясь на том, что я прочитал, я делаю вывод, что этот libjni_latinimegoogle.so
хак просто не будет работать на любом пользовательском ПЗУ, который правильно реализует проверенную загрузку через повторную блокировку загрузчика. По состоянию на май 2021 года CalyxOS и GrapheneOS представляют собой два ПЗУ, которые используют проверенную загрузку. Таким образом, сброс libjni_latinimegoogle.so
среди системных файлов, вероятно, будет запрещен. Даже если бы этот взлом библиотеки набора жестов был гипотетически возможен, я чувствую, что это было бы чрезвычайно плохой практикой / ходом безопасности. Вместо этого, если ваша модель использования/угрозы допускает сторонние клавиатуры с открытым исходным кодом, я бы порекомендовал FlorisBoard , который недавно реализовал то, что он называет «скользящим» набором текста, и доступен на F-Droid.. (Просто для ясности: я не связан с CalyxOS, GrapheneOS или FlorisBoard.) AnySoftKeyboard обещала какой-то тип набора текста скольжением/жестами, но это было еще в 2018 году, и ASK так и не реализовал эту функцию полностью, когда я однажды устал от ASK. 2020, МИИР.
Обновление для Lineage OS 17.1 (Android 10.0)
Основываясь на этом Reddit , шаг 4 подробного руководства rugk отличается следующим образом (используя TWRP, поскольку отправка файла с помощью adb не сработала):
libjni_latinimegoogle.so
на телефон ( /sdcard
)system
смонтировано, а «только для чтения» не отмечено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
Приведенное выше решение отлично работает с Samsung S5 Neo (s5neolte/SM-G903F) и Lineage OS 17.1 (Android 10).
Как упоминалось выше, вы можете извлечь libjni_latinimegoogle.so
из Open GApps . Что касается вариантов загрузки, не так уж важно, какую версию Android вы выберете. Кажется, файл не менялся, по крайней мере, с Android 7.1. Я использовал следующие настройки:
ксангуа
Вы AGitForNotUsingGit
Вы AGitForNotUsingGit
Занна
Вы AGitForNotUsingGit
Занна
Вы AGitForNotUsingGit
Занна
Вы AGitForNotUsingGit
Занна