diff --git a/CHANGELOG.md b/CHANGELOG.md index 748b070ab..a25b8ee75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,11 @@ ### Changelog +#### Version 0.37.1 +* Amazfit Bip Lite: Support flashing firmware and watchfaces + #### Version 0.37.0 * Initial Makibes HR3 support -* Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing) +* Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing) * Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access * Find Phone now also vibration in addition to playing the ring tone * ID115: All settings are now per-device diff --git a/README.md b/README.md index ca48beca8..69de8555c 100644 --- a/README.md +++ b/README.md @@ -62,41 +62,6 @@ vendor's servers. Please see [FEATURES.md](https://codeberg.org/Freeyourgadget/Gadgetbridge/src/master/FEATURES.md) -## Getting Started (Pebble) - -Please [this wiki article](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Pebble-Getting-Started) - -## How to use (Mi Band 1+2) - -* Invoke the discovery activity manually via the "+" button. It will ask you for some personal info that appears - to be needed for proper steps calculation on the band. If you do not provide these, - some hardcoded default "dummy" values will be used instead. - - When your Mi Band starts to vibrate and blink during the pairing process, - tap it quickly a few times in a row to confirm the pairing with the band. - -1. Configure other notifications as desired -2. Go back to the "Gadgetbridge" activity -3. Tap the Mi Band item to connect if you're not connected yet -4. To test, chose "Debug" from the menu and play around - -**Known Issues:** - -* The initial connection to a Mi Band sometimes takes a little patience. Try to connect a few times, wait, - and try connecting again. This only happens until you have "bonded" with the Mi Band, i.e. until it - knows your MAC address. This behavior may also only occur with older firmware versions. -* If you use other apps like Mi Fit, and "bonding" with Gadgetbridge does not work, please - try to unpair the band in the other app and try again with Gadgetbridge. -* While all Mi Band devices are supported, some firmware versions might work better than others. - You can consult the [projects wiki pages](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Mi-Band) - to check if your firmware version is fully supported or if an upgrade/downgrade might be beneficial. -* In order to display text notifications on the Mi Band 2, you have to [install a font on the band](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Mi-Band-2). - -## Features (Liveview) - -* set time (automatically upon connection) -* display notifications and vibrate - ## Authors ### Core Team (in order of first code contribution) diff --git a/app/build.gradle b/app/build.gradle index d90123492..b7ced0b40 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,8 +25,8 @@ android { targetSdkVersion 27 // Note: always bump BOTH versionCode and versionName! - versionName "0.37.0" - versionCode 158 + versionName "0.37.1" + versionCode 159 vectorDrawables.useSupportLibrary = true } buildTypes { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java index b2ce87a0b..7a252c054 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java @@ -55,7 +55,8 @@ public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator { @Override public InstallHandler findInstallHandler(Uri uri, Context context) { - return null; + AmazfitBipLiteFWInstallHandler handler = new AmazfitBipLiteFWInstallHandler(uri, context); + return handler.isValid() ? handler : null; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java new file mode 100644 index 000000000..812ce5bda --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java @@ -0,0 +1,44 @@ +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele + Gobbetti + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip; + +import android.content.Context; +import android.net.Uri; + +import androidx.annotation.NonNull; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipLiteFirmwareInfo; + +public class AmazfitBipLiteFWHelper extends HuamiFWHelper { + + public AmazfitBipLiteFWHelper(Uri uri, Context context) throws IOException { + super(uri, context); + } + + @NonNull + @Override + protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) { + firmwareInfo = new AmazfitBipLiteFirmwareInfo(wholeFirmwareBytes); + if (!firmwareInfo.isHeaderValid()) { + throw new IllegalArgumentException("Not a an Amazifit Bip Lite firmware"); + } + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java new file mode 100644 index 000000000..0266eb49a --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip; + +import android.content.Context; +import android.net.Uri; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; + +class AmazfitBipLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { + AmazfitBipLiteFWInstallHandler(Uri uri, Context context) { + super(uri, context); + } + + @Override + protected String getFwUpgradeNotice() { + return mContext.getString(R.string.fw_upgrade_notice_amazfitbip_lite, helper.getHumanFirmwareVersion()); + } + + @Override + protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + return new AmazfitBipLiteFWHelper(uri, context); + } + + @Override + protected boolean isSupportedDeviceType(GBDevice device) { + return device.getType() == DeviceType.AMAZFITBIP_LITE; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java new file mode 100644 index 000000000..f567362f4 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java @@ -0,0 +1,94 @@ +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip; + +import java.util.HashMap; +import java.util.Map; + +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; +import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils; + +public class AmazfitBipLiteFirmwareInfo extends HuamiFirmwareInfo { + + // this is the same as Bip and Cor + private static final byte[] FW_HEADER = new byte[]{ + 0x00, (byte) 0x98, 0x00, 0x20, (byte) 0xA5, 0x04, 0x00, 0x20, (byte) 0xAD, 0x04, 0x00, 0x20, (byte) 0xC5, 0x04, 0x00, 0x20 + }; + + + private static Map crcToVersion = new HashMap<>(); + + static { + // firmware + crcToVersion.put(11059, "1.1.6.02"); + + // Latin Firmware + + + // resources + crcToVersion.put(57510, "1.1.6.02"); + + // font + crcToVersion.put(61054, "8"); + crcToVersion.put(59577, "9 (Latin)"); + } + + public AmazfitBipLiteFirmwareInfo(byte[] bytes) { + super(bytes); + } + + @Override + protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { + if (ArrayUtils.startsWith(bytes, NEWRES_HEADER)) { + if ((bytes.length <= 100000) || (bytes.length > 700000)) { // dont know how to distinguish from Cor/Mi Band 3 .res + return HuamiFirmwareType.INVALID; + } + return HuamiFirmwareType.RES; + } + if (ArrayUtils.startsWith(bytes, FW_HEADER)) { + if (searchString32BitAligned(bytes, "Amazfit Bip Lite")) { + return HuamiFirmwareType.FIRMWARE; + } + return HuamiFirmwareType.INVALID; + } + if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) { + return HuamiFirmwareType.WATCHFACE; + } + if (ArrayUtils.startsWith(bytes, NEWFT_HEADER)) { + if (bytes[10] == 0x01) { + return HuamiFirmwareType.FONT; + } else if (bytes[10] == 0x02 || bytes[10] == 0x0A) { + return HuamiFirmwareType.FONT_LATIN; + } + } + + return HuamiFirmwareType.INVALID; + } + + @Override + public boolean isGenerallyCompatibleWith(GBDevice device) { + return isHeaderValid() && device.getType() == DeviceType.AMAZFITBIP_LITE; + } + + @Override + protected Map getCrcMap() { + return crcToVersion; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java index fb6c6bb61..339e9317d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java @@ -20,7 +20,10 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip; import android.content.Context; import android.net.Uri; +import java.io.IOException; + import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteFWHelper; public class AmazfitBipLiteSupport extends AmazfitBipSupport { @@ -35,7 +38,7 @@ public class AmazfitBipLiteSupport extends AmazfitBipSupport { } @Override - public HuamiFWHelper createFWHelper(Uri uri, Context context) { - return null; + public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException { + return new AmazfitBipLiteFWHelper(uri, context); } } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 20c321318..7609c9530 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -433,7 +433,7 @@ Temps de sommeil préféré en heures Activer tâche de fond JS Si activé, autorise l\'affichage de la météo, niveau de batterie, etc. Activité Web View - Connexion + Connexion … Vous êtes sur le point d\'installer le micrologiciel %s sur votre Amazfit Cor. \n \nVeuillez installer le fichier .fw, puis le fichier .res. Votre montre redémarrera après installation du fichier .fw. @@ -626,7 +626,7 @@ Temps de sommeil préféré en heures Mode Filtre Mode Configuration Sauvegarder la configuration - Non connecté, l\'alarme n\'est pas définie + Non connecté, l’alarme n’est pas définie. Notification de déconnexion Paramètres ZeTime Paramètres Fréquence Cardiaque @@ -684,14 +684,14 @@ Temps de sommeil préféré en heures Changez la clé auteur à une clé générale sur tous vos appareils Android sur lesquels vous souhaitez vous connecter. La précédente clé par défaut était 0123456789@ABCDE BFH-16 Vous êtes sur le point d\'installer le micrologiciel %s sur votre Amazfit Cor 2. -\n +\n \nVeuillez installer le fichier .fw, puis le fichier .res. Votre montre redémarrera après installation du .fw. \n -\nNote : Il n\'est pas nécessaire d\'installer le fichier .res si celui-ci est identique à celui installé précédemment. -\n -\nCONTINUEZ À VOS RISQUES ! +\nNote : il n\'est pas nécessaire d\'installer le fichier .res si celui-ci est identique à celui installé précédemment. \n -\nNON TESTÉ, IL PEUT ÊTRE NÉCESSAIRE DE FLASH UN micrologiciel BEATS_W SI LE NOM DE L\'APPAREIL EST \"Amazfit Band 2\" +\nCONTINUEZ À VOS RISQUES ! +\n +\nNON TESTÉ, IL PEUT ÊTRE NÉCESSAIRE DE FLASHER UN MICROLOGICIEL BEATS_W SI LE NOM DE L\'APPAREIL EST « Amazfit Band 2 » Néerlandais Turc Ukrainien @@ -720,4 +720,49 @@ Temps de sommeil préféré en heures Gamme des graphiques Pas par mois Sommeil par mois + NFC + Utiliser une police personnalisée + Exportation de la base de données … + Exportation et importation + Étapes : %1$02d + État et alarmes + Régler l’alarme après : + 5 minutes + 10 minutes + 20 minutes + 1 heure + Toujours visible + Visible uniquement si aucun appareil n\'est ajouté + Durée de la sonnerie en secondes + Durée + La portée des graphs est réglée sur un mois + La portée des graphs est réglée sur une semaine + Mijia Smart Clock + Permettre aux autres applis d\'accéder aux données de fréquence cardiaque en temps réel lorsque Gadgetbridge est connecté + Accès tiers fréq. cardiaque + À activer si votre appareil a une police spéciale embarquée pour prendre en charge les émoticônes + L\'export automatique des données est réglé vers : + Export auto + Export de données + Import de données + Lancer l\'export maintenant + Supprimer les anciennes données + Vider la base de données + Vide la base de données + Attention ! Ce bouton détruit votre base de données et réinitialise. + Réveil + "Dormir %1$ s" + + %d heure + %d heures + + Bouton pour connecter un nouvel appareil + Pour visualiser votre géolocalisation, installez une appli qui lit les fichiers GPX. + Réglages Makibes HR3 + Makibes HR3 + Amazfit Bip Lite + Trouver le téléphone + Activer « Trouver le tél. » + Utilisez votre bande pour lire l\'alarme de votre téléphone. + Cet appareil a besoin d\'une clé d\'auth. Pression longue sur celui-ci pour la saisir. Lisez le wiki. \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index d60ff5c45..2a292a311 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -759,4 +759,5 @@ ניתן להשתמש בצמיד כדי שהטלפון שלך ישמיע צלצול. משך זמן הצלצול בשניות משך + למכשיר זה נדרש מפתח אימות סודי, יש לגעת נגיעה ארוכה על המכשיר כדי להזין אותו. פרטים נוספים בוויקי. \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 8670be201..2d903e5a1 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -755,4 +755,11 @@ For å vise aktivitetsspor, installer et program som kan håndtere GPX-filer. Makibes HR3-innstillinger Makibes HR3 + Amazfit Bip Lite + Finn telefon + Skru på \"Finn telefon\" + Bruk båndet ditt til å spille av telefonens ringetone. + Anropsvarighet i sekunder + Varighet + Denne enheten trenger en hemmelig identitetsbekreftelsesnøkkel. Trykk lenge på enheten for å skrive den inn. Les wiki-en. \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2fb2246c2..af03566fd 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -347,7 +347,7 @@ Tijd Tijd & datum Knoppen acties - Specificeer actie voor de Mi Band knopdruk + Specificeer actie voor de Mi Band 2 knopdruk Aantal knopdrukken Aantal knopdrukken nodig om een bericht te sturen Uit te sturen bericht diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 3cf8f2bce..db4592514 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -765,8 +765,9 @@ Makibes HR3 Amazfit Bip Lite Encontrar telefone - Ativar encontrar telefone + Ativar \"Encontrar telefone\" Use sua pulseira para reproduzir o toque sonoro do seu celular. Duração do toque sonoro em segundos Duração + Esse dispositivo precisa de sua chave de autenticação secreta, realize pressionamento longo no dispositivo para inseri-lo. Leia o wiki. \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3bf151cf2..3cdd4d045 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -766,4 +766,5 @@ 使用您的手环以在手机上播放铃声。 铃声将持续数秒 持续 + 此设备需要认证密钥,请在设备上长按以输入密钥。具体请阅读 Wiki 。 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb7e648cc..aac54509f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -55,6 +55,7 @@ FW/App installer You are about to install the %s. You are about to install the %s firmware on your Amazfit Bip.\n\nPlease make sure to install the .fw file, then the .res file, and finally the .gps file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res and .gps if these files are exactly the same as the ones previously installed.\n\nPROCEED AT YOUR OWN RISK! + You are about to install the %s firmware on your Amazfit Bip Lite.\n\nPlease make sure to install the .fw file, and after that the .res file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Amazfit Cor.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Amazfit Cor 2. \n @@ -447,7 +448,7 @@ Use heart rate sensor to improve sleep detection Device time offset in hours (for detecting sleep of shift workers) Find phone - Enable find phone + Turn on \\\'Find phone\\\' Use your band to play your phone\'s ringtone. Ring duration in seconds Date format diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index de4646768..3b07ec6db 100644 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -1,8 +1,11 @@ + + Amazfit Bip Lite: Support flashing firmware and watchfaces + Initial Makibes HR3 support - Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing) + Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing) Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access Find Phone now also vibration in addition to playing the ring tone ID115: All settings are now per-device diff --git a/fastlane/metadata/android/en-US/changelogs/158.txt b/fastlane/metadata/android/en-US/changelogs/158.txt index ea026740a..7cefbc2e6 100644 --- a/fastlane/metadata/android/en-US/changelogs/158.txt +++ b/fastlane/metadata/android/en-US/changelogs/158.txt @@ -1,5 +1,5 @@ * Initial Makibes HR3 support -* Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing) +* Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing) * Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access * Find Phone now also vibration in addition to playing the ring tone * ID115: All settings are now per-device diff --git a/fastlane/metadata/android/en-US/changelogs/159.txt b/fastlane/metadata/android/en-US/changelogs/159.txt new file mode 100644 index 000000000..7aba1f760 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/159.txt @@ -0,0 +1 @@ +* Amazfit Bip Lite: Support flashing firmware and watchfaces