Διαφήμιση

Οδηγός δημιουργίας custom resources για Mi Band 4/5/6

    • Οδηγός
    • Tool
    • Xiaomi

    Αυτή η σελίδα κάνει χρήση των Cookies. Εάν θέλετε να μάθετε περισσότερα για τα Cookies, κάντε κλικ στις Περισσότερες πληροφορίες

    • Οδηγός δημιουργίας custom resources για Mi Band 4/5/6

      Τα εργαλεία έχουν γίνει διαθέσιμα στο κοινό εδώ και λίγες μέρες. Ευκαιρία λοιπόν να τα χρησιμοποιήσουμε για να προσαρμόσουμε τα Mi Band 4/5 στα δικά μας μέτρα. ;)


      Δημιουργία custom resources για τα Mi Band 4/5/6
      (Με δική σας ευθύνη)


      Η δομή των αρχείων resources

      Κάθε αρχείο firmware είναι συμβατό μόνο με συγκεκριμένη έκδοση αρχείου resources. Είναι ένα συμπιεσμένο πακέτο αρχείων που περιέχει τα κείμενα και τις εικόνες που εμφανίζει το band:



      Τα εικονίδια περιέχονται σε διαφορετικές εικόνες με μορφή 8-bit png και τα κείμενα όλα βρίσκονται πακεταρισμένα σε ένα αρχείο dat. Τα ονόματα των αρχείων είναι τετραψήφιου αριθμοί που ξεκινούν από το 0000. Προηγούνται οι εικόνες (0000.png, 0001.png, κτλ) και τελευταίο είναι το αρχείο της γλώσσας, που έχει τον επόμενο αύξοντα αριθμό από την τελευταία εικόνα (πχ. 2176.png, 2177.dat). Το πακέτο ολοκληρώνεται με το αρχείο header.json, το οποίο περιέχει τη λίστα και τις περιγραφές των προηγούμενων αρχείων:

      XML Source Code: header.json

      1. {
      2. "HasNewHeader": true,
      3. "ResourcesCount": 2178,
      4. "Unknown": 7,
      5. "Version": 62,
      6. "Headers": [
      7. {
      8. "_bitsPerPixel": 8,
      9. "_width": 72,
      10. "_height": 72,
      11. "_paletteColors": 101,
      12. "_rowLengthInBytes": 72,
      13. "_transparency": false,
      14. "index": 0,
      15. "_sign": [
      16. "B",
      17. "M",
      18. "d",
      19. "\u0000"
      20. ]
      21. },
      22. ..................
      23. {
      24. "_bitsPerPixel": 8,
      25. "_width": 116,
      26. "_height": 50,
      27. "_paletteColors": 33,
      28. "_rowLengthInBytes": 116,
      29. "_transparency": false,
      30. "index": 2176,
      31. "_sign": [
      32. "B",
      33. "M",
      34. "d",
      35. "\u0000"
      36. ]
      37. }
      38. ]
      39. }
      Προβολή όλων
      Μη σας ανησυχεί, το αρχείο αυτό δε θα χρειαστεί να το πειράξετε. ;)

      Αποσυμπίεση των αρχείων resources

      Όπως προανέφερα, ένα αρχείο resources είναι ένα συμπιεσμένο πακέτο αρχείων (με αλγόριθμο QuickLZ). Άρα πρώτο μας βήμα είναι να το αποσυμπιέσουμε.

      Αρχικά κατεβάζουμε το απαραίτητο πρόγραμμα: MB4 Resource Tool, δημιουργία του Gualdimar, και το αποσυμπιέζουμε σε έναν κατάλογο, ο οποίος καλό θα ήταν να μην περιέχει ελληνικούς χαρακτήρες, πχ. C:\MiBand4\Resources και όχι C:\Users\Μήτσος\Τα έγγραφά μου\Το Band μου\Τα resources μου\, κτλ. Θα εμφανιστούν πολλά αρχεία exe, dll, xml, κτλ, αλλά εμάς μας ενδιαφέρουν μόνο τα εκτελέσιμα: mb4_resource_tool.exe και WatchFace.exe.

      Τοποθετήστε το αρχείο με τα resources στον ίδιο φάκελο. Αν δεν έχει επέκταση bin, αλλά res ή κάτι άλλο, αλλάξτε την επέκταση σε .bin.

      Έστω έχουμε το αρχείο resources.bin. Με τον explorer πετάξτε (drag'n'drop) το αρχείο resources.bin πάνω στο αρχείο mb4_resource_tool.exe ή χρησιμοποιήστε τη γραμμή εντολών: mb4_resource_tool resources.bin. Αν όλα πήγαν καλά, θα έχετε στον ίδιο φάκελο ένα αρχείο resources.res με μεγαλύτερο μέγεθος. Πετάξτε (drag'n'drop) τώρα το αρχείο resources.res πάνω στο αρχείο WatchFace.exe ή χρησιμοποιήστε τη γραμμή εντολών: WatchFace resources.res. Μόλις δημιουργήθηκε ο κατάλογος resources με τα αποσυμπιεσμένα αρχεία!


      Αλλαγή των εικονιδίων

      Τώρα μπορείτε να αλλάξετε οποιοδήποτε από τα αρχεία png με ένα δικό σας, προσέχοντας όμως να ΜΗΝ αλλάξετε την ανάλυση και να κρατήσετε το ίδιο 8-bit format.


      Αλλαγή των κειμένων της γλώσσας
      Δείτε το επόμενο ποστ...


      Δημιουργία των νέων resources

      Η διαδικασία είναι ακριβώς η αντίστροφη. Χρησιμοποιήστε τη γραμμή εντολών για να πακετάρετε τον κατάλογο: WatchFace resources. Δημιουργείται το αρχείο resources_packed.res. Με τον explorer πετάξτε (drag'n'drop) το αρχείο resources_packed.res πάνω στο αρχείο mb4_resource_tool.exe ή χρησιμοποιήστε τη γραμμή εντολών: mb4_resource_tool resources_packed.res. Έχετε δημιουργήσει το αρχείο resources_packed.res.bin, το οποίο είναι έτοιμο για φλασάρισμα στο Mi Band σας.

      Καλή επιτυχία!
      Files
      • mb4_resource_tool.zip

        (803,74 kB, λήφθηκε 304 φορές, τελευταία )
    • Αφού έχετε αποπακετάρει το αρχείο των resources με την παραπάνω μέθοδο, ώρα να παίξουμε και με τις μεταφράσεις:

      Τροποποίηση του αρχείου γλωσσών

      Όπως ανέφερα παραπάνω, κατά το αποπακετάρισμα των αρχείων resources, εκτός από τις εικόνες παίρνουμε κι ένα αρχείο dat το οποίο περιέχει πακεταρισμένα τα κείμενα των γλωσσών. Για την εξαγωγή τους χρησιμοποιούμε το εργαλείο MB4 Language Tool επίσης του Gualdimar. Το αποσυμπιέζουμε κι αυτό σε φάκελο χωρίς ελληνικούς χαρακτήρες στο path.

      Έχοντας το αρχείο dat (πχ. 2377.dat για τα resources v70), απλά το βάζουμε στον ίδιο φάκελο με το εργαλείο και πετάμε (drag'n'drop) το αρχείο 2377.dat πάνω στο mb4_lang_tool.exe ή γράφουμε στη γραμμή εντολών: mb4_lang_tool 2377.dat. Αυτόματα δημιουργείται ο φάκελος με το όνομα 2377 με τα αρχεία txt της κάθε γλώσσας και το αρχείο header.json με την περιγραφή τους:

      Source Code: header.json

      1. {
      2. "filename": "2177.dat",
      3. "strings_count": 247,
      4. "languages_count": 24,
      5. "languages": [
      6. {
      7. "number": 0,
      8. "device_language": "Chinese (zh)",
      9. "name": "zh-rCN"
      10. },
      11. {
      12. "number": 1,
      13. "device_language": "繁体(台湾)",
      14. "name": "繁体(台湾)"
      15. },
      16. {
      17. "number": 2,
      18. "device_language": "English (en)",
      19. "name": "English en"
      20. },
      21. {
      22. "number": 3,
      23. "device_language": "Spanish (es)",
      24. "name": "Spanish es_ES"
      25. },
      26. {
      27. "number": 4,
      28. "device_language": "Russian (ru)",
      29. "name": "Russian ru"
      30. },
      31. {
      32. "number": 5,
      33. "device_language": "Korean (ko)",
      34. "name": "Korean ko"
      35. },
      36. {
      37. "number": 6,
      38. "device_language": "French (fr)",
      39. "name": "French fr"
      40. },
      41. {
      42. "number": 7,
      43. "device_language": "German (de)",
      44. "name": "German de"
      45. },
      46. {
      47. "number": 8,
      48. "device_language": "Indonesia (in)",
      49. "name": "Indonesia in"
      50. },
      51. {
      52. "number": 9,
      53. "device_language": "Polish (pl)",
      54. "name": "Polish pl"
      55. },
      56. {
      57. "number": 10,
      58. "device_language": "Italian (it)",
      59. "name": "Italian it"
      60. },
      61. {
      62. "number": 11,
      63. "device_language": "Japanese (ja)",
      64. "name": "Japanese ja"
      65. },
      66. {
      67. "number": 12,
      68. "device_language": "Thai (th)",
      69. "name": "Thai th"
      70. },
      71. {
      72. "number": 13,
      73. "device_language": "Arabic (ar)",
      74. "name": "Arabic ar-rEG"
      75. },
      76. {
      77. "number": 14,
      78. "device_language": "Vietnamese (vi)",
      79. "name": "Vietnamese Vi"
      80. },
      81. {
      82. "number": 15,
      83. "device_language": "Portuguese (pt)",
      84. "name": "Portuguese pt"
      85. },
      86. {
      87. "number": 16,
      88. "device_language": "Dutch",
      89. "name": "Dutch"
      90. },
      91. {
      92. "number": 17,
      93. "device_language": "Turkish (tr)",
      94. "name": "Turkish"
      95. },
      96. {
      97. "number": 18,
      98. "device_language": "Ukrainian(uk)",
      99. "name": "Ukrainian"
      100. },
      101. {
      102. "number": 19,
      103. "device_language": null,
      104. "name": "Empty language cell"
      105. },
      106. {
      107. "number": 20,
      108. "device_language": null,
      109. "name": "Empty language cell"
      110. },
      111. {
      112. "number": 21,
      113. "device_language": "Romanian",
      114. "name": "Romanian"
      115. },
      116. {
      117. "number": 22,
      118. "device_language": "Czech (cs)",
      119. "name": "Czech"
      120. },
      121. {
      122. "number": 23,
      123. "device_language": "Greek",
      124. "name": "Greek"
      125. }
      126. ]
      127. }
      Προβολή όλων
      Τώρα μπορούμε να επεξεργαστούμε το κάθε αρχείο (πχ. Greek.txt για τα ελληνικά), βάζοντας τα δικά μας αντίστοιχα κείμενα. Προσοχή στο ότι κάθε σειρά περιέχει ένα συγκεκριμένο κείμενο (string). Δεν αλλάζουμε γραμμή με το enter, αλλά χρησιμοποιούμε τους χαρακτήρες \n για να τη δηλώσουμε.

      Αν θέλουμε να αντικαταστήσουμε μια γλώσσα με μια άλλη, πχ. ρώσικα με ελληνικά, υπάρχουν 2 τρόποι: είτε αντιγράφουμε την ελληνική μετάφραση "Greek.txt" πάνω στη ρώσικη "Russian ru.txt", είτε αλλάζουμε το πεδίο "name" στο header.json από "name": "Russian ru" σε "name": "Greek" (λέγοντας ουσιαστικά ότι τα ρώσικα βρίσκονται στο αρχείο Greek.txt).

      Mόλις είμαστε έτοιμοι, απλά τρέχουμε στη γραμμή εντολών: mb4_lang_tool 2377 (το όνομα του φακέλου - όχι το αρχείο dat) και μέσα στον φάκελο 2377 δημιουργείται το νέο αρχείο 2377.dat με τις νέες μεταφράσεις. Μεταφέρουμε το αρχείο αυτό στον φάκελο των resources και τα πακετάρουμε σύμφωνα με το προηγούμενο post.

      Με τη συγκεκριμένη μέθοδο δεν γίνεται αλληλεπικάλυψη των γλωσσών και λειτουργούν όλες κανονικά. Υπόψην πως αν θέλετε να αλλάξετε την κινέζικη γλώσσα με την ελληνική, αυτή δεν έχει κείμενα στο βασικό μενού (Ειδοποιήσεις, Καιρός, Άσκηση, κτλ) αλλά εικόνες με τα κινέζικα λογογράμματα. Οπότε θα πρέπει να γράψετε και τα ελληνικά κείμενα σε εικόνα png και να αντικαταστήσετε την αντίστοιχη κινέζικη.

      Προσοχή: Όλες οι γλώσσες είναι UTF-8 εκτός από τα αγγλικά. Αυτό σημαίνει πως ΔΕΝ μπορείτε να βάλετε ελληνικούς χαρακτήρες στην αγγλική μετάφραση, παρά μόνο λατινικούς. Άρα στην αγγλική γλώσσα μπορούμε να έχουμε μόνο ...greeklish!
      Files
      • mb4_lang_tool.zip

        (219,67 kB, λήφθηκε 274 φορές, τελευταία )
    • Ευχαριστω πολύ! Τέλειος οδηγός! Απλα έχω ενα θέμα με τα εικονίδια που προσπαθώ να αλλάξω..! Αποθηκευω το αρχείο 84x84 στα 8bit με το photoshop όπως περιγραφείς και κάνω αντικατασταση με το παλιό και όταν πάω να ξαναδημιουργησω το αρχείο bin μου βγάζει στο log σφάλμα οτι το αρχείο δεν είναι 8 bit! Δεν ξέρω αν εξήγησαν σωστα το πρόβλημα μου... Τι κάνω λαθώς?
    • Διαφήμιση
    • Το σφάλμα είναι ξεκάθαρο: Το αρχείο δεν αποθηκεύεται ως 8bit (256 χρώματα). Ξανακοίτα τις ρυθμίσεις αποθήκευσης του PNG.
    • Άψογος οδηγός !!!!

      Ευχαριστούμε :thumbsup:
      Γίνε και εσύ εύκολα V.I.P μέλος !



      ή επέλεξε να κάνεις μία δωρεά
      Δωρεά προς την κοινότητα (Donation)
    • Παρακαλώ! Και συμπληρώθηκε και το 2ο ποστ με οδηγίες για την τροποποίηση των μεταφράσεων. ;)
    • Διαφήμιση
    • Μπράβο φίλε πολύ καλή δουλειά θα δοκιμαστεί οσονούπω!! :D
      Η ζωή είναι ωραία αρκεί να ξέρεις να την ζεις με εκείνον που σε αγάπησε και θυσιάστηκε για εσένα στην θέση την δικιά σου...


      Xiaomi Redmi note 12 Pro :thumbsup: s21u Γιώργος






    • Θα ήθελα να προσθέσω (ένα χρόνο μετά) πως ο οδηγός αυτός ισχύει και για το Mi Band 5, οπότε προσάρμοσα αντίστοιχα και το κείμενο! :)
    • Διαφήμιση
    • Ευχαριστούμε πάρα πολύ για την προσφορά σου !!! :thumbsup:
      Γίνε και εσύ εύκολα V.I.P μέλος !



      ή επέλεξε να κάνεις μία δωρεά
      Δωρεά προς την κοινότητα (Donation)