מדריך | קצת על 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
 מבנה הקבצים ב modulemodule.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
- 
היי שלום לכולם 
 לפני תקופה ישבתי על הפורום וראיתי מלא שאלות איך מוסיפים אפליקציית מערכת, איך עושים שסקריפט ירוץ בהפעלת המכשיר, איך מוסיפים שורה ל 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
 מבנה הקבצים ב modulemodule.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
- 
היי שלום לכולם 
 לפני תקופה ישבתי על הפורום וראיתי מלא שאלות איך מוסיפים אפליקציית מערכת, איך עושים שסקריפט ירוץ בהפעלת המכשיר, איך מוסיפים שורה ל 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
 מבנה הקבצים ב modulemodule.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 להוסיף לו קבצים סקריפטים והגדרות
 




