From 50249f660a5699330197f9246c4b7f1e89222237 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Tue, 26 Dec 2017 05:21:25 +0800 Subject: [PATCH] Magisk Module Template 1500 --- .gitattributes | 8 ++ META-INF/com/google/android/update-binary | 153 +++++++++++++++++++++ META-INF/com/google/android/updater-script | 1 + README.md | 8 ++ common/post-fs-data.sh | 7 + common/service.sh | 7 + common/system.prop | 3 + config.sh | 99 +++++++++++++ module.prop | 7 + system/placeholder | Bin 0 -> 78 bytes 10 files changed, 293 insertions(+) create mode 100644 .gitattributes create mode 100755 META-INF/com/google/android/update-binary create mode 100644 META-INF/com/google/android/updater-script create mode 100644 common/post-fs-data.sh create mode 100644 common/service.sh create mode 100644 common/system.prop create mode 100644 config.sh create mode 100644 module.prop create mode 100644 system/placeholder diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8980df1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# Declare files that will always have LF line endings on checkout. +META-INF/** text eol=lf +*.prop text eol=lf +*.sh text eol=lf +*.md text eol=lf + +# Denote all files that are truly binary and should not be modified. +system/** binary diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary new file mode 100755 index 0000000..e07d41d --- /dev/null +++ b/META-INF/com/google/android/update-binary @@ -0,0 +1,153 @@ +#!/sbin/sh +########################################################################################## +# +# Magisk Module Template Install Script +# by topjohnwu +# +########################################################################################## + +# Detect whether in boot mode +ps | grep zygote | grep -v grep >/dev/null && BOOTMODE=true || BOOTMODE=false +$BOOTMODE || ps -A 2>/dev/null | grep zygote | grep -v grep >/dev/null && BOOTMODE=true + +TMPDIR=/dev/tmp +INSTALLER=$TMPDIR/install +MAGISKBIN=/data/adb/magisk + +# Default permissions +umask 022 + +# Initial cleanup +rm -rf $TMPDIR 2>/dev/null +mkdir -p $INSTALLER + +# echo before loading util_functions +ui_print() { echo "$1"; } + +require_new_magisk() { + ui_print "*******************************" + ui_print " Please install Magisk v15.0+! " + ui_print "*******************************" + exit 1 +} + +########################################################################################## +# Environment +########################################################################################## + +OUTFD=$2 +ZIP=$3 + +mount /data 2>/dev/null + +# Utility functions must exist +[ -f $MAGISKBIN/util_functions.sh ] || require_new_magisk +# Load utility fuctions +. $MAGISKBIN/util_functions.sh + +# We can't alter magisk image live, use alternative image if required +$BOOTMODE && IMG=/data/adb/magisk_merge.img +# Always mount under tmp +MOUNTPATH=$TMPDIR/magisk_img + +# Preperation for flashable zips +get_outfd + +# Mount partitions +mount_partitions + +# Detect version and architecture +api_level_arch_detect + +# You can get the Android API version from $API, the CPU architecture from $ARCH +# Useful if you are creating Android version / platform dependent mods + +# Setup busybox and binaries +$BOOTMODE && boot_actions || recovery_actions + +########################################################################################## +# Preparation +########################################################################################## + +# Extract common files +unzip -o "$ZIP" module.prop config.sh 'common/*' -d $INSTALLER >&2 + +[ ! -f $INSTALLER/config.sh ] && abort "! Unable to extract zip file!" +# Load configurations +. $INSTALLER/config.sh + +# Check the installed magisk version +MIN_VER=`grep_prop minMagisk $INSTALLER/module.prop` +[ ! -z $MAGISK_VER_CODE -a $MAGISK_VER_CODE -ge $MIN_VER ] || require_new_magisk +MODID=`grep_prop id $INSTALLER/module.prop` +MODPATH=$MOUNTPATH/$MODID + +# Print mod name +print_modname + +# Please leave this message in your flashable zip for credits :) +ui_print "******************************" +ui_print "Powered by Magisk (@topjohnwu)" +ui_print "******************************" + +########################################################################################## +# Install +########################################################################################## + +# Get the variable reqSizeM. Use your own method to determine reqSizeM if needed +request_zip_size_check "$ZIP" + +# This function will mount $IMG to $MOUNTPATH, and resize the image based on $reqSizeM +mount_magisk_img + +# Create mod paths +rm -rf $MODPATH 2>/dev/null +mkdir -p $MODPATH + +# Extract files to system. Use your own method if needed +ui_print "- Extracting module files" +unzip -o "$ZIP" 'system/*' -d $MODPATH >&2 + +# Remove placeholder +rm -f $MODPATH/system/placeholder 2>/dev/null + +# Handle replace folders +for TARGET in $REPLACE; do + mktouch $MODPATH$TARGET/.replace +done + +# Auto Mount +$AUTOMOUNT && touch $MODPATH/auto_mount + +# prop files +$PROPFILE && cp -af $INSTALLER/common/system.prop $MODPATH/system.prop + +# Module info +cp -af $INSTALLER/module.prop $MODPATH/module.prop +if $BOOTMODE; then + # Update info for Magisk Manager + mktouch /sbin/.core/img/$MODID/update + cp -af $INSTALLER/module.prop /sbin/.core/img/$MODID/module.prop +fi + +# post-fs-data mode scripts +$POSTFSDATA && cp -af $INSTALLER/common/post-fs-data.sh $MODPATH/post-fs-data.sh + +# service mode scripts +$LATESTARTSERVICE && cp -af $INSTALLER/common/service.sh $MODPATH/service.sh + +ui_print "- Setting permissions" +set_permissions + +########################################################################################## +# Finalizing +########################################################################################## + +# Unmount magisk image and shrink if possible +unmount_magisk_img + +$BOOTMODE || recovery_cleanup +rm -rf $TMPDIR + +ui_print "- Done" +exit 0 diff --git a/META-INF/com/google/android/updater-script b/META-INF/com/google/android/updater-script new file mode 100644 index 0000000..11d5c96 --- /dev/null +++ b/META-INF/com/google/android/updater-script @@ -0,0 +1 @@ +#MAGISK diff --git a/README.md b/README.md index 972b473..95e9ca9 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ # Magisk Module Template + +This `README.md` will be shown in Magisk Manager. Place any information / changelog / notes you like. + +**Please update `README.md` if you want to submit your module to the online repo!** + +Github has its own online markdown editor with a preview feature, you can use it to update your `README.md`! If you need more advanced syntax, check the [Markdown Cheat Sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). + +For more information about modules and repos, please check the [official documentations](https://github.com/topjohnwu/Magisk/blob/master/docs/modules.md) diff --git a/common/post-fs-data.sh b/common/post-fs-data.sh new file mode 100644 index 0000000..426ab83 --- /dev/null +++ b/common/post-fs-data.sh @@ -0,0 +1,7 @@ +#!/system/bin/sh +# Please don't hardcode /magisk/modname/... ; instead, please use $MODDIR/... +# This will make your scripts compatible even if Magisk change its mount point in the future +MODDIR=${0%/*} + +# This script will be executed in post-fs-data mode +# More info in the main Magisk thread diff --git a/common/service.sh b/common/service.sh new file mode 100644 index 0000000..4512417 --- /dev/null +++ b/common/service.sh @@ -0,0 +1,7 @@ +#!/system/bin/sh +# Please don't hardcode /magisk/modname/... ; instead, please use $MODDIR/... +# This will make your scripts compatible even if Magisk change its mount point in the future +MODDIR=${0%/*} + +# This script will be executed in late_start service mode +# More info in the main Magisk thread diff --git a/common/system.prop b/common/system.prop new file mode 100644 index 0000000..3d42789 --- /dev/null +++ b/common/system.prop @@ -0,0 +1,3 @@ +# This file will be read by resetprop +# Example: Change dpi +# ro.sf.lcd_density=320 diff --git a/config.sh b/config.sh new file mode 100644 index 0000000..3032eae --- /dev/null +++ b/config.sh @@ -0,0 +1,99 @@ +########################################################################################## +# +# Magisk Module Template Config Script +# by topjohnwu +# +########################################################################################## +########################################################################################## +# +# 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 (config.sh) +# 4. If you need boot scripts, add them into common/post-fs-data.sh or common/service.sh +# 5. Add your additional or modified system properties into common/system.prop +# +########################################################################################## + +########################################################################################## +# Configs +########################################################################################## + +# 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 +# Check the documentations for more info about how Magic Mount works, and why you need this + +# 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 override the example above +# !DO NOT! remove this if you don't need to replace anything, leave it empty as it is now +REPLACE=" +" + +########################################################################################## +# Permissions +########################################################################################## + +set_permissions() { + # Only some special files require specific permissions + # The default permissions should be good enough for most cases + + # Here are some examples for the set_perm functions: + + # set_perm_recursive (default: u:object_r:system_file:s0) + # set_perm_recursive $MODPATH/system/lib 0 0 0755 0644 + + # set_perm (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 + + # The following is default permissions, DO NOT remove + set_perm_recursive $MODPATH 0 0 0755 0644 +} + +########################################################################################## +# Custom Functions +########################################################################################## + +# This file (config.sh) will be sourced by the main flash script after util_functions.sh +# If you need custom logic, please add them here as functions, and call these functions in +# update-binary. Refrain from adding code directly into update-binary, as it will make it +# difficult for you to migrate your modules to newer template versions. +# Make update-binary as clean as possible, try to only do function calls in it. + diff --git a/module.prop b/module.prop new file mode 100644 index 0000000..1e86010 --- /dev/null +++ b/module.prop @@ -0,0 +1,7 @@ +id=template +name=Template Module +version=v1 +versionCode=1 +author=topjohnwu +description=A short description +minMagisk=1500 diff --git a/system/placeholder b/system/placeholder new file mode 100644 index 0000000000000000000000000000000000000000..1a693958c8a149635901cdc55170a0980c24d182 GIT binary patch literal 78 zcmWN{!3}^Q5Cp)#Rcrya;?D+7SYYD?43HSRm)CseEE-61;*~otBGNe-p^C$@#=WSP Y*>`AS?N&Tkh4?R2^T>t<8 literal 0 HcmV?d00001