diff --git a/APK/com.freestylelibre.app.de_2019-04-22.apk.md5 b/APK/com.freestylelibre.app.de_2019-04-22.apk.md5 new file mode 100644 index 0000000..8f031f6 --- /dev/null +++ b/APK/com.freestylelibre.app.de_2019-04-22.apk.md5 @@ -0,0 +1 @@ +420735605bacf0e18d2570079ebaa238 APK/com.freestylelibre.app.de_2019-04-22.apk diff --git a/APK/com.freestylelibre.app.de_2020-02-15.apk.md5 b/APK/com.freestylelibre.app.de_2020-02-15.apk.md5 new file mode 100644 index 0000000..7f71a43 --- /dev/null +++ b/APK/com.freestylelibre.app.de_2020-02-15.apk.md5 @@ -0,0 +1 @@ +da50eb029158d81461cdf042a2490648 APK/com.freestylelibre.app.de_2020-02-15.apk diff --git a/README.md b/README.md index efade26..1ee59dd 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,85 @@ +# Anleitung zum Patchen der App "LibreLink" unter Windows # + +**Grundsätzliches:** + +Wenn LibreLink als erstes "Gerät" mit einem FreeStyle Libre 2 gekoppelt wird, empfängt es permanent Bluetooth-Daten, um den aktuellen Gewebezucker-Wert zu berechnen und ggf. Alarm zu geben. Angezeigt werden diese Daten jedoch nur, wenn "klassisch" gescannt (der Sensor per NFC ausgelesen) wird. Dieser Patch ermöglicht es, dass [xDrip+](https://github.com/jamorham/xDrip-plus) die errechneten Werte von LibreLink auslesen und permanent anzeigen kann - ein Scannen per NFC ist nicht mehr nötig. + +Um die gepatchte App auf einem Android Smartphone installieren zu können, muss auf selbigem in den Einstellungen das "Installieren aus unbekannten Quellen" erlaubt, bzw. unter neueren Android-Versionen eine entsprechende App berechtigt werden, "unbekannte Apps zu installieren". + +Die original LibreLink App muss vor der Installation deinstalliert werden. **Dabei geht die Bluetooth-Kopplung zum aktuell laufenden Sensor verloren!** Sinnvollerweise wird der Wechsel der App daher beim Wechsel eines Sensors durchgeführt (falls der Alarm bis dahin per LibreLink erfolgte). Sobald die gepatchte App installiert wurde, müssen ihr noch Rechte auf "Standort" (für Bluetooth-Nutzung) und "Speicher" gewährt werden (in neueren Android-Versionen unter "Einstellungen - Apps & Benachrichtigungen - LibreLink - Berechtigungen", ansonsten ggf. den Menüpunkt "Alarme" in der App öffnen und prüfen, ob man dort nach Rechten gefragt wird). Danach kann ein neuer Sensor gestartet/gekoppelt und die App wie gewohnt genutzt werden. + +In den neueren Versionen von xDrip+ (ab ["Nightly Build" vom 15. Juli 2019 oder später](https://github.com/NightscoutFoundation/xDrip/releases) (auf das obere "Assets" klicken und die APK Datei herunterladen)) gibt es in den Einstellungen die Datenquelle "Libre2 (patched App)". Diese ist auszuwählen, um die Werte ohne klassisches Scannen angezeigt zu bekommen. In xDrip+ selbst muss der Sensor ebenfalls gestartet werden, wobei dies kein "Starten" im klassischen (LibreLink) Sinn ist. Es kann etwas dauern, bis die ersten Werte in xDrip+ erscheinen. + +**Vorgehen:** + +Wer Linux nutzt, kann sich an die englische original Anleitung des [ursprünglichen Projekts](https://github.com/user987654321resu/Libre2-patched-App) halten oder die hier enthaltene `patch.sh` nutzen. Für Windows-Nutzer ist folgende Anleitung eventuell hilfreich, welche im Grunde ein Linux SubSystem in Windows installiert und den Patch innerhalb dieses Systems ausführt. + +* Installation des Linux SubSystems + +In der Windows Systemsteuerung den Punkt "Windows-Features aktivieren oder deaktivieren" wählen (oder dies einfach in der Cortana-Suchleiste eingeben), dort am Ende den Haken bei "Windows-Subsystem für Linux" auswählen und mittels Klick auf "OK" bestätigen. Den anschließend verlangten Neustart unbedingt durchführen. +Im "Microsoft Store" die App "Debian" installieren bzw. in der [Microsoft Dokumentation](https://docs.microsoft.com/de-de/windows/wsl/install-win10) zu dem Thema den Link "Debian GNU/Linux" auswählen und durch den Store bis zur Installation führen lassen. Anschließend das SubSystem Debian starten. + +* Einrichtung des Linux SubSystems + +Beim ersten Start des SubSystems wird nach einem Benutzernamen gefragt, der frei wählbar ist (hier aber bitte nur Kleinbuchstaben verwenden, ggf. Ziffern dahinter - keine Großbuchstaben). Sinnvollerweise nutzt man hier seinen eigenen Windows-Benutzernamen. Ebenso muss ein Passwort für diesen Benutzer vergeben werden (nicht überspringen, sondern wirklich ein Passwort setzen - dieses sieht man während der Eingabe nicht, davon nicht irritieren lassen). Hier macht es ggf. auch Sinn, das eigene Windows-Passwort zu setzen (muss aber beides nicht zwingend sein). +Das Grundsystem ist nun vorhanden und muss mit benötigten Werkzeugen (Tools) versorgt werden. Dazu wird mittels dem Befehl `sudo apt-get update` die Paketliste auf den neuen Stand gebracht. Das eben vergebene Passwort wird dabei einmal abgefragt und ist einzugeben. Anschließend wird der Git-Client mittels `sudo apt-get install git` installiert. Die Frage, ob alle aufgeführten Pakete installiert werden sollen, wird bestätigt (Enter/Return-Taste drücken reicht dazu aus). + +* Clone dieses Repositories + +Mittels `git clone https://github.com/TinoKossmann/LibreLink-xDrip-Patch` wird dieses Repository heruntergeladen und anschließend per `cd LibreLink-xDrip-Patch` in das neue Verzeichnis gewechselt (Tipp: `cd Li` eintippen und Tabulator-Taste drücken). Bei Bedarf kann nun mit `ls -l` der Inhalt geprüft werden. + +* Installation weiterer Tools + +Weitere, benötigte Tools werden nun mittels `./install-apt-dependencies.sh` (Tipp: auch hier, `./inst` eintippen und Tabulator-Taste drücken) installiert. Sollte auch hier wieder nach einem Passwort gefragt werden, handelt es sich um das vorhin vergebene (i.d.R. wird aber nicht mehr danach gefragt). Die Frage nach der Paketliste wird wieder bestätigt. + +* Laden der original LibreLink App + +Wer die original APK-Datei nicht selbst herunterladen möchte, kann diese mittels `./download.sh` herunterladen. Dabei wird auch das zusätzlich benötigte Tool apktool installiert, welches im Debian-Repository in einer hier nicht ohne weiteres funktionierenden Version enthalten ist. + +* Patchen und Signieren der App + +Mittels `./patch.sh` wird alles nötige erledigt. Dies nimmt einige Zeit in Anspruch. Normalerweise sollten alle Schritte mit grünem "okay" abgeschlossen werden und am Ende der Hinweis erscheinen, dass die gepatchte APK-Datei im Verzeichnis C:\APK\ zu finden ist. Per `exit` kann das Fenster nun geschlossen werden. + +**Video Walkthrough:** + +In [diesem Video](https://www.youtube.com/watch?v=ezpGM2jR89A) ist die Anleitung einmal durchgespielt worden. + +**Weitere Hinweise:** + +Sollten auf dem PC "Internet Sicherheitssoftware" installiert sein (v.a. "Kaspersky Internet Security 2019" o.ä.), kann es nötig sein, diese temporär zu deaktivieren, da das Linux-Subsystem ansonsten keine Verbindung zum Internet erhält. + +Die gepatchte App läuft als sog. "Vordergrunddienst". Es ist daher normal, dass oben in der Taskleiste eine "Foreground Service Notification" erscheint. + +Die Verbindung zu LibreView bzw. allen Onlinediensten von Abbott wurden entfernt. + +Weiterhin gilt die Einschränkung, dass ein per Smartphone gestarteter Sensor nicht mit dem Lesegerät ausgelesen werden kann. Die Nutzung der gepatchten App und ihrer Vorteile bedeutet zwangsweise, dass das Lesegerät nicht mehr für diesen Sensor genutzt werden kann. + +LibreLink 2.3.0 erfordert Android 5.0 oder höher. + +Eine gute Anleitung zum Umgang mit xDrip+ in Verbindung mit der gepatchten App findet man u.a. [hier](https://androidaps.readthedocs.io/en/latest/CROWDIN/de/Hardware/Libre2.html). + +**Grundsätzliches Vorgehen:** + +(nur rudimentär, dies soll nur die Anleitung zum Patchen der App sein) + +- original LibreLink deinstallieren +- Installation von Anwendungen aus "unbekannten Quellen" auf dem Smartphone erlauben, ggf. sogar "Play Protect" im PlayStore deaktiviern +- gepatchte LibreLink App installieren +- die Rechte "Standort" und "Speicher" für LibreLink erteilen +- Bluetooth und GPS einschalten und eingeschaltet lassen (im Flugmodus funktioniert das ganze nicht, teilweise auch nicht ohne GPS) +- Mindestens einen Alarm in LibreLink aktivieren +- xDrip in aktueller Version installieren +- "Libre2 (patchted App)" in xDrip als Datenquelle auswählen +- Libre2 Sensor mit gepatchter LibreLink App starten +- in xDrip Sensor "starten" +- eine Stunde warten +- Ruhe- bzw. Stomsparmodus deaktivieren, falls die Werte nachts auch durchgängig erscheinen sollen +- Sobald Werte erscheinen, kann der Alarm in LibreLink deaktiviert werden - sinnvoll, wenn xDrip mit (ggf. kalibrierten Werten) Alarm schlagen soll + +--- + +# Original Anleitung in Englisch # + # How to patch the Librelink app to provide xDrip with Value received by bluetooth directly from sensor diff --git a/ToDo/Bluetooth/README.docx b/ToDo/Bluetooth/README.docx new file mode 100644 index 0000000..ab01689 Binary files /dev/null and b/ToDo/Bluetooth/README.docx differ diff --git a/ToDo/Bluetooth/changes_compared_to_original_app_code.patch b/ToDo/Bluetooth/changes_compared_to_original_app_code.patch new file mode 100644 index 0000000..d261734 --- /dev/null +++ b/ToDo/Bluetooth/changes_compared_to_original_app_code.patch @@ -0,0 +1,2633 @@ + AndroidManifest.xml | 55 +---- + build/apk/AndroidManifest.xml | Bin 31396 -> 25096 bytes + build/apk/classes.dex | Bin 7963204 -> 7966360 bytes + build/apk/classes2.dex | Bin 9541576 -> 9541936 bytes + build/apk/res/layout/eventlog_activity.xml | Bin 1392 -> 1412 bytes + build/apk/res/menu/default_menu.xml | Bin 1000 -> 760 bytes + build/apk/res/menu/navdrawer.xml | Bin 2560 -> 2440 bytes + res/layout/eventlog_activity.xml | 2 +- + res/menu/default_menu.xml | 2 - + res/menu/navdrawer.xml | 1 - + ...reamingPreviouslyStartedSensorPredicate$2.smali | 8 +- + ...JoiningPreviouslyStartedSensorPredicate$2.smali | 8 +- + .../DefaultSensorAbstractionService.smali | 249 ++++++++++++++++++++- + .../sensorabstractionservice/Sensor.smali | 8 +- + .../com/librelink/app/ThirdPartyIntegration.smali | 240 ++++++++++++++++++++ + smali_classes2/com/librelink/app/core/App.smali | 55 ++--- + .../librelink/app/core/App_MembersInjector.smali | 33 --- + .../com/librelink/app/core/BleManager$3$2.smali | 4 + + .../com/librelink/app/core/BleManager$3.smali | 41 +++- + .../com/librelink/app/core/BleManager$5.smali | 2 + + .../com/librelink/app/core/BleManager.smali | 50 ++++- + .../com/librelink/app/core/FirebaseTree.smali | 55 ----- + .../app/core/PatchEventFirebaseUploader.smali | 54 +---- + .../app/core/components/DaggerAppComponent.smali | 26 --- + .../librelink/app/core/modules/AppModule$2$1.smali | 13 +- + .../librelink/app/core/modules/AppModule$2.smali | 20 +- + .../com/librelink/app/core/modules/AppModule.smali | 173 +------------- + .../librelink/app/core/modules/SensorModule.smali | 48 ++-- + .../app/types/ApplicationConfigurationValues.smali | 68 +++++- + .../app/ui/common/ScanSensorActivity.smali | 86 ------- + .../app/ui/common/ScanSensorFragment.smali | 72 +++++- + .../librelink/app/ui/help/EventLogActivity.smali | 7 - + .../com/librelink/app/ui/help/HelpActivity.smali | 40 ---- + 33 files changed, 791 insertions(+), 629 deletions(-) + +diff --git a/AndroidManifest.xml b/AndroidManifest.xml +index f4161f5..09c01bc 100644 +--- a/AndroidManifest.xml ++++ b/AndroidManifest.xml +@@ -3,9 +3,6 @@ + + + +- +- +- + + + +@@ -15,9 +12,10 @@ + + + ++ + + +- ++ + + + +@@ -86,6 +84,7 @@ + + + ++ + + + +@@ -109,21 +108,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + +@@ -132,33 +116,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + +@@ -176,12 +133,6 @@ + + + +- +- +- +- +- + +- + + +\ No newline at end of file +diff --git a/build/apk/AndroidManifest.xml b/build/apk/AndroidManifest.xml +index 4414f7b..a3d2b20 100644 +Binary files a/build/apk/AndroidManifest.xml and b/build/apk/AndroidManifest.xml differ +diff --git a/build/apk/classes.dex b/build/apk/classes.dex +index 8c07a60..7ec9379 100644 +Binary files a/build/apk/classes.dex and b/build/apk/classes.dex differ +diff --git a/build/apk/classes2.dex b/build/apk/classes2.dex +index 6f14c39..974ebad 100644 +Binary files a/build/apk/classes2.dex and b/build/apk/classes2.dex differ +diff --git a/build/apk/res/layout/eventlog_activity.xml b/build/apk/res/layout/eventlog_activity.xml +index 23b2837..0dfc335 100644 +Binary files a/build/apk/res/layout/eventlog_activity.xml and b/build/apk/res/layout/eventlog_activity.xml differ +diff --git a/build/apk/res/menu/default_menu.xml b/build/apk/res/menu/default_menu.xml +index 7031330..70872ad 100644 +Binary files a/build/apk/res/menu/default_menu.xml and b/build/apk/res/menu/default_menu.xml differ +diff --git a/build/apk/res/menu/navdrawer.xml b/build/apk/res/menu/navdrawer.xml +index 1400a79..bee67f6 100644 +Binary files a/build/apk/res/menu/navdrawer.xml and b/build/apk/res/menu/navdrawer.xml differ +diff --git a/res/layout/eventlog_activity.xml b/res/layout/eventlog_activity.xml +index 55f194a..ad90bc0 100644 +--- a/res/layout/eventlog_activity.xml ++++ b/res/layout/eventlog_activity.xml +@@ -4,7 +4,7 @@ + + + +- ++ +