מדריך | קצת על Magisk Modules
-
היי שלום לכולם
לפני תקופה ישבתי על הפורום וראיתי מלא שאלות איך מוסיפים אפליקציית מערכת, איך עושים שסקריפט ירוץ בהפעלת המכשיר, איך מוסיפים שורה ל Bulid.Prop ואיך נותנים הרשאות לקבצים
אז הרמתי את הכפפה והחלטתי לבנות אפליקציה שתריץ את הנ"ל במתן לחיצה אחת, אממה שהפרויקט התעכב ואז גיליתי מחדש את ה-
היום נדבר קצת על Magisk Modules
על המבנה של המודל ואיך בונים אותו, מה הקבצים המשמשים אותו, ומה אפשר לעשות אתו
לפני שנתחיל בואו נעשה קצת סדר בנושאים שאני רוצה לדבר עליהם- מה הם Magisk modules
- סוגי הקבצים ב module
- מבנה הקבצים ב module
- מבנה הקבצים ב module מחולץ
- בניית module משלנו
- פתרונות נפוצים
אז לפני שנתחיל, אני אשא תפילה לפני יושב מרום שלא תבוא תקלה על ידי, וחס ושלום אני לא יחרטט עליכם דברים שאיני מבין בהם דיי (תתכוננו זה אולי קורה...)
#- מודולי Magisk הם דרך פשוטה להחיל שינויים ברמת המערכת על המכשיר שלך מבלי שתצטרך לבצע שינויים בקבצי המערכת שלך באופן ידני . כל שעליך לעשות הוא להוריד את המודול, להפעיל אותו דרך אפליקציית Magisk, ולאחר מכן לאתחל את המכשיר שלך כדי שהשינויים ייכנסו לתוקף
#- ישנם כמה ספריות מודולים ריקות שמופצות לציבור כגון MMT Extended או Magisk Template שאותם נוריד ונערוך
#- דרך המודלים ניתן בקלות לשנות הגדרות בקובץ Bulid.Prop, לשנות הרשאות לקבצים, למחוק/להוסיף אפליקציות מערכת, להעלות סקריפטים בעת טעינת המערכת וכן להריץ קודים לתוך האפליקציות עצמם, ועוד
סוגי הקבצים ב module
(הקבצים הפופולאריים - מתייחס ל- magisk template)
-
module.prop
- זהו קובץ התמיכה של המודל והוא מכיל את השם, תיאור, מפתח, וכד'.
-
- זהו קובץ ההגדרות של המודל
-
תיקיית system
- מכילה את קבצי ההחלפה/הוספה למערכת
-
common (תיקייה)
- system.prop
- מכיל את הגדרות ה Bulid.Prop החדשות
- service.sh
- סקריפט המכיל פקודות שיעלו בעת הפעלת המכשיר בעת הרצת פקודות השירות
- post-fs-data.sh
- סקריפט המכיל פקודות שיעלו בעת הפעלת המכשיר קודם פקודות האתחול
- system.prop
מבנה הקבצים ב module
module.prop
הפורמט המחמיר של module.prop:
id=<string> name=<string> version=<string> versionCode=<int> author=<string> description=<string> updateJson=<url> (optional)
לאלו שלא מונחים בנושא:
string
= טקסט
(integer)int
= מספר שלם
url
= קישור
optional
= לא חובהועכשיו ביותר פירוט:
#- בערךid
נוסיף מזהה לאפליקציה בפורמט התווים האלו^[a-zA-Z][a-zA-Z0-9._-]+$
בלבד, למשל:
#- בערךname
הכניסו את שם המודל
#- בערךversion
הכניסו את מספר הגרסה הפונה לציבור (תוכלו להכניס גם בשילוב מספרים = 1.6V-Bate-alpa
#- בערךversionCode
הכניסו את מספר הגרסה לצורך השוואה בין גרסאות - ניתן להכניס אך ורק ערך מסוג int
#- בערךauthor
הכניסו את שם המפתח
#- בערךdescription
הכניסו תיאור קצר על המודל שלכם
#- בערךupdateJson
הכניסו כתובת URL ששולחת Json עם קובץ מעודכןconfig.sh
########################################################################################## # # Magisk # by topjohnwu # # This is a template zip for developers # ########################################################################################## ########################################################################################## # # Instructions: # # 1. Place your files into system folder (delete the placeholder file) # 2. Fill in your module's info into module.prop # 3. Configure the settings in this file (common/config.sh) # 4. For advanced features, add shell commands into the script files under common: # post-fs-data.sh, service.sh # 5. For changing props, add your additional/modified props into common/system.prop # ########################################################################################## ########################################################################################## # Defines ########################################################################################## # NOTE: This part has to be adjusted to fit your own needs # This will be the folder name under /magisk # This should also be the same as the id in your module.prop to prevent confusion MODID=template # Set to true if you need to enable Magic Mount # Most mods would like it to be enabled AUTOMOUNT=true # Set to true if you need to load system.prop PROPFILE=false # Set to true if you need post-fs-data script POSTFSDATA=false # Set to true if you need late_start service script LATESTARTSERVICE=false ########################################################################################## # Installation Message ########################################################################################## # Set what you want to show when installing your mod print_modname() { ui_print "*******************************" ui_print " Magisk Module Template " ui_print "*******************************" } ########################################################################################## # Replace list ########################################################################################## # List all directories you want to directly replace in the system # By default Magisk will merge your files with the original system # Directories listed here however, will be directly mounted to the correspond directory in the system # You don't need to remove the example below, these values will be overwritten by your own list # This is an example REPLACE=" /system/app/Youtube /system/priv-app/SystemUI /system/priv-app/Settings /system/framework " # Construct your own list here, it will overwrite the example # !DO NOT! remove this if you don't need to replace anything, leave it empty as it is now REPLACE=" " ########################################################################################## # Permissions ########################################################################################## # NOTE: This part has to be adjusted to fit your own needs set_permissions() { # Default permissions, don't remove them set_perm_recursive $MODPATH 0 0 0755 0644 # Only some special files require specific permissions # The default permissions should be good enough for most cases # Some templates if you have no idea what to do: # set_perm_recursive <dirname> <owner> <group> <dirpermission> <filepermission> <contexts> (default: u:object_r:system_file:s0) # set_perm_recursive $MODPATH/system/lib 0 0 0755 0644 # set_perm <filename> <owner> <group> <permission> <contexts> (default: u:object_r:system_file:s0) # set_perm $MODPATH/system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0 # set_perm $MODPATH/system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0 # set_perm $MODPATH/system/lib/libart.so 0 0 0644 }
#- הגדרות המודל -#
#- בערךMODID
נשנה לשם ה id שנתנו למודל בקובץ module.prop
#- בערךAUTOMOUNT
(בוליאני) נבחר האם יש לנו קבצים בתיקיית system שבמודל שטעונים העברה/עדכון ל/במערכת
#- בערךPROPFILE
(בוליאני) נגדיר האם יש לנו שינויים בקובץ system.prop שנרצה שיכנסו לבסוף לקובץ Bulid.Prop
#- בערךPOSTFSDATA
(בוליאני) נגדיר האם יש לנו סקריפטים בקובץ post-fs-data.sh שדורשים הבהוב במצב post-fs-data
#- בערךLATESTARTSERVICE
(בוליאני) נגדיר האם יש לנו סקריפטים בקובץ service.sh שדורשים הבהוב במצב late start#- הדפסת UI -#
#- בערךprint_modname
נכניס במקוםMagisk Module Template
את השם של המודל כדי ליצור הדפסת UI עם השם של המודל שלנו בלוג התקדמות של הצריבה#- החלפת תיקיות במערכת -#
#- מציין דגל.replace
בתיקיית המודל שקורא להחליף את התיקיות המצוינות במודל עם אלו שנמצאות בסיסטם
#- תחת הערךREPLACE
מצוינים כמה דוגמאות להחלפת תיקיות מערכת - לא לגעת בהם - בשביל להוסיף ניתן לנו מחלקה נוספת שלREPLACE
כמה שורות מתחת, שם נוסיף את התיקיות להחלפה כמו בדוגמה...#- שינוי הרשאות לקבצים -#
#- תחת הערךset_permissions
ניתן לנו כמה דוגמאות לשינוי הרשאות לקבצים ניתן להוסיף את השינויים שלכם שם...תיקיית system
בתיקיה הזאת נניח את הקבצים בצורה שברצוננו להניח אותם בסיסטם האמיתי למשל ניקח את אפליקציית systemUI ונרצה להחליף אותה דרך מודל אז נפרוס את הנ"ל לתוך הסיסטם שבמודל בצורה כאילו היה בסיסטם -
system/priv-app/systemUI
וכן כל קובץ(system/media/bootimege.png)
והם באופן רקורסיבי יתעדכנו בסיסטם (עיינו טוב מה זה אופן רקורסיבי...)#- כאמור לעיל ישנו דגל פעולה בשם
.replace
שאם ישנו בתיקיות הסופיות הוא מצביע על החלפת אותה תיקיה עם רעותה בסיסטם ללא מיזוג הקבצים לדוגמה/system/app/YouTube/.replace
יחליף את תיקיית YouTube שבמודל עם זאת שבסיסטםמבנה הקבצים במודל מחולץ
כאשר Magisk טוען את המודלים, הוא מפרק אותם לתיקיית
שם המודל/data/adb/modules
משום שתיקייה זו אינה נגישה ללא הרשאות רוט ואינה סיסטם#- קבצים בפירוק -#
/data/adb/modules ├── . ├── . | ├── $MODID <--- התיקיה נקראת בשם המזהה של המודול │ │ │ │ *** מידע מודל *** │ │ │ ├── module.prop <--- קובץ זה מאחסן את המטא נתונים של המודול │ │ │ │ *** התוכן העיקרי *** │ │ │ ├── system <--- תיקיה זו תותקן אם ציינתם אישור ב AUTOMOUNT │ │ ├── ... │ │ ├── ... │ │ └── ... │ │ │ ├── zygisk <--- תיקיה זו מכילה את הספריות המקוריות של המודול Zygisk │ │ ├── arm64-v8a.so │ │ ├── armeabi-v7a.so │ │ ├── x86.so │ │ ├── x86_64.so │ │ └── unloaded <--- דגל, כשקיים כנראה שהספריות המקוריות אינן תואמות │ │ │ │ *** דגלי מצב *** │ │ │ ├── skip_mount <--- אם הדגל (קובץ) קיים, Magisk לא תטען את השינויים לסיסטם │ ├── disable <--- אם קיים, המודול יושבת │ ├── remove <--- אם קיים, המודול יוסר באתחול מחדש הבא │ │ │ │ *** קבצים אפשריים *** │ │ │ ├── post-fs-data.sh <--- סקריפט זה יבוצע בשירות-post-fs-data │ ├── service.sh <--- סקריפט זה יבוצע בשירות late_start | ├── uninstall.sh <--- סקריפט זה יתבצע כאשר Magisk תסיר את המודול שלך │ ├── system.prop <--- מאפיינים בקובץ זה ייטענו כמאפייני מערכת על ידי resetprop │ ├── sepolicy.rule <--- כללי מדיניות מותאמים אישית נוספים │ │ │ │ *** נוצר אוטומטית, אין ליצור או לשנות באופן ידני *** │ │ │ ├── vendor <--- A symlink to $MODID/system/vendor │ ├── product <--- A symlink to $MODID/system/product │ ├── system_ext <--- A symlink to $MODID/system/system_ext │ │ │ │ *** כל קבצים/תיקיות נוספים מותרים *** │ │ │ ├── ... │ └── ... | ├── מודלים נוספים │ ├── . │ └── . ├── . ├── .
#- דגלי מצב -#
#-skip_mount
/disable
/remove
דגלים אלו מורים ל Magisk לבצע פעולות מסוימות
נסו בבית: התקינו מודל כל שהוא וכנסו לנתיב הזהשם המודל/data/adb/modules
ותזכרו את הקבצים הנוכחים, כעת חיזרו ל Magisk והקליקו להשבתת המודל, כעת חיזרו לסייר ותראו שהתווסף לנו הקובץdisable
שהוא מורה ל Magisk להשבית את המודל תוכלו למחוק אותו משם ולחזור ל Magisk ולראות שהופ המודל כבר לא מושבת, ככה גם בהסרה של המודל יתווסף לנו הדגלremove
בניית module משלנו
המשך יבוא בעזרת ה'
אה רגע לני שאני בורח, יש כמה קרדיטים
#- קרדיט לגרפים תרשימים והגדרות
#- קרדיט על על ה template והicon -
@mefateach כתב במדריך | קצת על Magisk Modules:
לא הבנתי, מה ההבדל בין עריכת מודול קיים ליצירת מודול
לא כתבתי מדריך לעריכת מודל קיים - אולי זה היה נשמע ככה אבל יותר באתי להסביר רק על הקבצים הקיימים במודל
במדריך עריכה בעזרת ה' אני אסביר על תכלס איך לקחת את ה Template להוסיף לו קבצים סקריפטים והגדרות