Upload files to "Module/common"
This commit is contained in:
parent
85116dd0b3
commit
e68028e09c
2 changed files with 400 additions and 0 deletions
314
Module/common/functions.sh
Normal file
314
Module/common/functions.sh
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
##########################################################################################
|
||||||
|
#
|
||||||
|
# MMT Extended Utility Functions
|
||||||
|
#
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
require_new_ksu() {
|
||||||
|
ui_print "**********************************"
|
||||||
|
ui_print " Please install KernelSU v0.6.6+! "
|
||||||
|
ui_print "**********************************"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
umount_mirrors() {
|
||||||
|
[ -d $ORIGDIR ] || return 0
|
||||||
|
for i in $ORIGDIR/*; do
|
||||||
|
umount -l $i 2>/dev/null
|
||||||
|
done
|
||||||
|
rm -rf $ORIGDIR 2>/dev/null
|
||||||
|
$KSU && mount -o ro,remount $MAGISKTMP
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
if $KSU || [ $MAGISK_VER_CODE -ge 27000 ]; then umount_mirrors; fi
|
||||||
|
rm -rf $MODPATH/common $MODPATH/install.zip 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
abort() {
|
||||||
|
ui_print "$1"
|
||||||
|
rm -rf $MODPATH 2>/dev/null
|
||||||
|
cleanup
|
||||||
|
rm -rf $TMPDIR 2>/dev/null
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
device_check() {
|
||||||
|
local opt=`getopt -o dm -- "$@"` type=device
|
||||||
|
eval set -- "$opt"
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
|
-d) local type=device; shift;;
|
||||||
|
-m) local type=manufacturer; shift;;
|
||||||
|
--) shift; break;;
|
||||||
|
*) abort "Invalid device_check argument $1! Aborting!";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
local prop=$(echo "$1" | tr '[:upper:]' '[:lower:]')
|
||||||
|
for i in /system /vendor /odm /product; do
|
||||||
|
if [ -f $i/build.prop ]; then
|
||||||
|
for j in "ro.product.$type" "ro.build.$type" "ro.product.vendor.$type" "ro.vendor.product.$type"; do
|
||||||
|
[ "$(sed -n "s/^$j=//p" $i/build.prop 2>/dev/null | head -n 1 | tr '[:upper:]' '[:lower:]')" == "$prop" ] && return 0
|
||||||
|
done
|
||||||
|
[ "$type" == "device" ] && [ "$(sed -n "s/^"ro.build.product"=//p" $i/build.prop 2>/dev/null | head -n 1 | tr '[:upper:]' '[:lower:]')" == "$prop" ] && return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
cp_ch() {
|
||||||
|
local opt=`getopt -o nr -- "$@"` BAK=true UBAK=true FOL=false
|
||||||
|
eval set -- "$opt"
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
|
-n) UBAK=false; shift;;
|
||||||
|
-r) FOL=true; shift;;
|
||||||
|
--) shift; break;;
|
||||||
|
*) abort "Invalid cp_ch argument $1! Aborting!";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
local SRC="$1" DEST="$2" OFILES="$1"
|
||||||
|
$FOL && local OFILES=$(find $SRC -type f 2>/dev/null)
|
||||||
|
[ -z $3 ] && PERM=0644 || PERM=$3
|
||||||
|
case "$DEST" in
|
||||||
|
$TMPDIR/*|$MODULEROOT/*|$NVBASE/modules/$MODID/*) BAK=false;;
|
||||||
|
esac
|
||||||
|
for OFILE in ${OFILES}; do
|
||||||
|
if $FOL; then
|
||||||
|
if [ "$(basename $SRC)" == "$(basename $DEST)" ]; then
|
||||||
|
local FILE=$(echo $OFILE | sed "s|$SRC|$DEST|")
|
||||||
|
else
|
||||||
|
local FILE=$(echo $OFILE | sed "s|$SRC|$DEST/$(basename $SRC)|")
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
[ -d "$DEST" ] && local FILE="$DEST/$(basename $SRC)" || local FILE="$DEST"
|
||||||
|
fi
|
||||||
|
if $BAK && $UBAK; then
|
||||||
|
[ ! "$(grep "$FILE$" $INFO 2>/dev/null)" ] && echo "$FILE" >> $INFO
|
||||||
|
[ -f "$FILE" -a ! -f "$FILE~" ] && { mv -f $FILE $FILE~; echo "$FILE~" >> $INFO; }
|
||||||
|
elif $BAK; then
|
||||||
|
[ ! "$(grep "$FILE$" $INFO 2>/dev/null)" ] && echo "$FILE" >> $INFO
|
||||||
|
fi
|
||||||
|
install -D -m $PERM "$OFILE" "$FILE"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
install_script() {
|
||||||
|
case "$1" in
|
||||||
|
-b) shift;
|
||||||
|
if $KSU; then
|
||||||
|
local INPATH=$NVBASE/boot-completed.d
|
||||||
|
else
|
||||||
|
local INPATH=$SERVICED
|
||||||
|
sed -i -e '1i (\nwhile [ "$(getprop sys.boot_completed)" != "1" ]; do\n sleep 1\ndone\nsleep 3\n' -e '$a)&' $1
|
||||||
|
fi;;
|
||||||
|
-l) shift; local INPATH=$SERVICED;;
|
||||||
|
-p) shift; local INPATH=$POSTFSDATAD;;
|
||||||
|
*) local INPATH=$SERVICED;;
|
||||||
|
esac
|
||||||
|
[ "$(grep "#!/system/bin/sh" $1)" ] || sed -i "1i #!/system/bin/sh" $1
|
||||||
|
local i; for i in "MODPATH" "LIBDIR" "MODID" "INFO" "MODDIR"; do
|
||||||
|
case $i in
|
||||||
|
"MODPATH") sed -i "1a $i=$NVBASE/modules/$MODID" $1;;
|
||||||
|
"MODDIR") sed -i "1a $i=\${0%/*}" $1;;
|
||||||
|
*) sed -i "1a $i=$(eval echo \$$i)" $1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
case $1 in
|
||||||
|
"$MODPATH/post-fs-data.sh"|"$MODPATH/service.sh"|"$MODPATH/uninstall.sh") sed -i "s|^MODPATH=.*|MODPATH=\$MODDIR|" $1;; # MODPATH=MODDIR for these scripts (located in module directory)
|
||||||
|
"$MODPATH/boot-completed.sh") $KSU && sed -i "s|^MODPATH=.*|MODPATH=\$MODDIR|" $1 || { cp_ch -n $1 $INPATH/$MODID-$(basename $1) 0755; rm -f $MODPATH/boot-completed.sh; };;
|
||||||
|
*) cp_ch -n $1 $INPATH/$(basename $1) 0755;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
prop_process() {
|
||||||
|
sed -i -e "/^#/d" -e "/^ *$/d" $1
|
||||||
|
[ -f $MODPATH/system.prop ] || mktouch $MODPATH/system.prop
|
||||||
|
while read LINE; do
|
||||||
|
echo "$LINE" >> $MODPATH/system.prop
|
||||||
|
done < $1
|
||||||
|
}
|
||||||
|
|
||||||
|
mount_mirrors() {
|
||||||
|
$KSU && mount -o rw,remount $MAGISKTMP
|
||||||
|
mkdir -p $ORIGDIR/system
|
||||||
|
if $SYSTEM_ROOT; then
|
||||||
|
mkdir -p $ORIGDIR/system_root
|
||||||
|
mount -o ro / $ORIGDIR/system_root
|
||||||
|
mount -o bind $ORIGDIR/system_root/system $ORIGDIR/system
|
||||||
|
else
|
||||||
|
mount -o ro /system $ORIGDIR/system
|
||||||
|
fi
|
||||||
|
for i in /vendor $PARTITIONS; do
|
||||||
|
[ ! -d $i -o -d $ORIGDIR$i ] && continue
|
||||||
|
mkdir -p $ORIGDIR$i
|
||||||
|
mount -o ro $i $ORIGDIR$i
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for min/max api version
|
||||||
|
[ -z $MINAPI ] || { [ $API -lt $MINAPI ] && abort "! Your system API of $API is less than the minimum api of $MINAPI! Aborting!"; }
|
||||||
|
[ -z $MAXAPI ] || { [ $API -gt $MAXAPI ] && abort "! Your system API of $API is greater than the maximum api of $MAXAPI! Aborting!"; }
|
||||||
|
|
||||||
|
# Min KSU v0.6.6
|
||||||
|
[ -z $KSU ] && KSU=false
|
||||||
|
$KSU && { [ $KSU_VER_CODE -lt 11184 ] && require_new_ksu; }
|
||||||
|
# APatch is fork of KSU, treat same
|
||||||
|
[ -z $APATCH ] && APATCH=false
|
||||||
|
[ "$APATCH" == "true" ] && KSU=true
|
||||||
|
|
||||||
|
# Start debug
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Set variables
|
||||||
|
[ -z $ARCH32 ] && ARCH32="$(echo $ABI32 | cut -c-3)"
|
||||||
|
[ $API -lt 26 ] && DYNLIB=false
|
||||||
|
[ -z $DYNLIB ] && DYNLIB=false
|
||||||
|
[ -z $PARTOVER ] && PARTOVER=false
|
||||||
|
[ -z $SYSTEM_ROOT ] && SYSTEM_ROOT=$SYSTEM_AS_ROOT # renamed in magisk v26.3
|
||||||
|
[ -z $SERVICED ] && SERVICED=$NVBASE/service.d # removed in magisk v26.2
|
||||||
|
[ -z $POSTFSDATAD ] && POSTFSDATAD=$NVBASE/post-fs-data.d # removed in magisk v26.2
|
||||||
|
INFO=$NVBASE/modules/.$MODID-files
|
||||||
|
if $KSU; then
|
||||||
|
MAGISKTMP="/mnt"
|
||||||
|
ORIGDIR="$MAGISKTMP/mirror"
|
||||||
|
mount_mirrors
|
||||||
|
elif [ "$(magisk --path 2>/dev/null)" ]; then
|
||||||
|
if [ $MAGISK_VER_CODE -ge 27000 ]; then # Atomic Mount
|
||||||
|
if [ -z $MAGISKTMP ]; then
|
||||||
|
[ -d /sbin ] && MAGISKTMP=/sbin || MAGISKTMP=/debug_ramdisk
|
||||||
|
fi
|
||||||
|
ORIGDIR="$MAGISKTMP/mirror"
|
||||||
|
mount_mirrors
|
||||||
|
else
|
||||||
|
ORIGDIR="$(magisk --path 2>/dev/null)/.magisk/mirror"
|
||||||
|
fi
|
||||||
|
elif [ "$(echo $MAGISKTMP | awk -F/ '{ print $NF}')" == ".magisk" ]; then
|
||||||
|
ORIGDIR="$MAGISKTMP/mirror"
|
||||||
|
else
|
||||||
|
ORIGDIR="$MAGISKTMP/.magisk/mirror"
|
||||||
|
fi
|
||||||
|
if $DYNLIB; then
|
||||||
|
LIBPATCH="\/vendor"
|
||||||
|
LIBDIR=/system/vendor
|
||||||
|
else
|
||||||
|
LIBPATCH="\/system"
|
||||||
|
LIBDIR=/system
|
||||||
|
fi
|
||||||
|
# Detect extra partition compatibility (KernelSU or Magisk Delta/Kitsune)
|
||||||
|
EXTRAPART=false
|
||||||
|
if $KSU || [ "$(echo $MAGISK_VER | awk -F- '{ print $NF}')" == "delta" ] || [ "$(echo $MAGISK_VER | awk -F- '{ print $NF}')" == "kitsune" ]; then
|
||||||
|
EXTRAPART=true
|
||||||
|
elif ! $PARTOVER; then
|
||||||
|
unset PARTITIONS
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $BOOTMODE; then
|
||||||
|
ui_print "- Only uninstall is supported in recovery"
|
||||||
|
ui_print " Uninstalling!"
|
||||||
|
touch $MODPATH/remove
|
||||||
|
[ -s $INFO ] && install_script $MODPATH/uninstall.sh || rm -f $INFO $MODPATH/uninstall.sh
|
||||||
|
recovery_cleanup
|
||||||
|
cleanup
|
||||||
|
rm -rf $NVBASE/modules_update/$MODID $TMPDIR 2>/dev/null
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
ui_print "- Extracting module files"
|
||||||
|
unzip -o "$ZIPFILE" -x 'META-INF/*' 'common/functions.sh' -d $MODPATH >&2
|
||||||
|
[ -f "$MODPATH/common/addon.tar.xz" ] && tar -xf $MODPATH/common/addon.tar.xz -C $MODPATH/common 2>/dev/null
|
||||||
|
|
||||||
|
# Run addons
|
||||||
|
if [ "$(ls -A $MODPATH/common/addon/*/install.sh 2>/dev/null)" ]; then
|
||||||
|
ui_print " "; ui_print "- Running Addons -"
|
||||||
|
for i in $MODPATH/common/addon/*/install.sh; do
|
||||||
|
ui_print " Running $(echo $i | sed -r "s|$MODPATH/common/addon/(.*)/install.sh|\1|")..."
|
||||||
|
. $i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove files outside of module directory
|
||||||
|
ui_print "- Removing old files"
|
||||||
|
|
||||||
|
if [ -f $INFO ]; then
|
||||||
|
while read LINE; do
|
||||||
|
if [ "$(echo -n $LINE | tail -c 1)" == "~" ]; then
|
||||||
|
continue
|
||||||
|
elif [ -f "$LINE~" ]; then
|
||||||
|
mv -f $LINE~ $LINE
|
||||||
|
else
|
||||||
|
rm -f $LINE
|
||||||
|
while true; do
|
||||||
|
LINE=$(dirname $LINE)
|
||||||
|
[ "$(ls -A $LINE 2>/dev/null)" ] && break 1 || rm -rf $LINE
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done < $INFO
|
||||||
|
rm -f $INFO
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Install
|
||||||
|
ui_print "- Installing"
|
||||||
|
|
||||||
|
[ -f "$MODPATH/common/install.sh" ] && . $MODPATH/common/install.sh
|
||||||
|
|
||||||
|
ui_print " Installing for $ARCH SDK $API device..."
|
||||||
|
# Remove comments from files and place them, add blank line to end if not already present
|
||||||
|
for i in $(find $MODPATH -type f -name "*.sh" -o -name "*.prop" -o -name "*.rule"); do
|
||||||
|
[ -f $i ] && { sed -i -e "/^#/d" -e "/^ *$/d" $i; [ "$(tail -1 $i)" ] && echo "" >> $i; } || continue
|
||||||
|
case $i in
|
||||||
|
"$MODPATH/boot-completed.sh") install_script -b $i;;
|
||||||
|
"$MODPATH/service.sh") install_script -l $i;;
|
||||||
|
"$MODPATH/post-fs-data.sh") install_script -p $i;;
|
||||||
|
"$MODPATH/uninstall.sh") if [ -s $INFO ] || [ "$(head -n1 $MODPATH/uninstall.sh)" != "# Don't modify anything after this" ]; then
|
||||||
|
cp -f $MODPATH/uninstall.sh $MODPATH/$MODID-uninstall.sh # Fallback script in case module manually deleted
|
||||||
|
sed -i "1i[ -d \"\$MODPATH\" ] && exit 0" $MODPATH/$MODID-uninstall.sh
|
||||||
|
echo 'rm -f $0' >> $MODPATH/$MODID-uninstall.sh
|
||||||
|
install_script -l $MODPATH/$MODID-uninstall.sh
|
||||||
|
rm -f $MODPATH/$MODID-uninstall.sh
|
||||||
|
install_script $MODPATH/uninstall.sh
|
||||||
|
else
|
||||||
|
rm -f $INFO $MODPATH/uninstall.sh
|
||||||
|
fi;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
$IS64BIT || for i in $(find $MODPATH/system -type d -name "lib64"); do rm -rf $i 2>/dev/null; done
|
||||||
|
[ -d "/system/priv-app" ] || mv -f $MODPATH/system/priv-app $MODPATH/system/app 2>/dev/null
|
||||||
|
[ -d "/system/xbin" ] || mv -f $MODPATH/system/xbin $MODPATH/system/bin 2>/dev/null
|
||||||
|
if $DYNLIB; then
|
||||||
|
for FILE in $(find $MODPATH/system/lib* -type f 2>/dev/null | sed "s|$MODPATH/system/||"); do
|
||||||
|
[ -s $MODPATH/system/$FILE ] || continue
|
||||||
|
case $FILE in
|
||||||
|
lib*/modules/*) continue;;
|
||||||
|
esac
|
||||||
|
mkdir -p $(dirname $MODPATH/system/vendor/$FILE)
|
||||||
|
mv -f $MODPATH/system/$FILE $MODPATH/system/vendor/$FILE
|
||||||
|
[ "$(ls -A `dirname $MODPATH/system/$FILE`)" ] || rm -rf `dirname $MODPATH/system/$FILE`
|
||||||
|
done
|
||||||
|
# Delete empty lib folders (busybox find doesn't have this capability)
|
||||||
|
toybox find $MODPATH/system/lib* -type d -empty -delete >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set permissions
|
||||||
|
ui_print " "
|
||||||
|
ui_print "- Setting Permissions"
|
||||||
|
set_perm_recursive $MODPATH 0 0 0755 0644
|
||||||
|
for i in /system/vendor /vendor /system/vendor/app /vendor/app /system/vendor/etc /vendor/etc /system/odm/etc /odm/etc /system/vendor/odm/etc /vendor/odm/etc /system/vendor/overlay /vendor/overlay; do
|
||||||
|
if [ -d "$MODPATH$i" ] && [ ! -L "$MODPATH$i" ]; then
|
||||||
|
case $i in
|
||||||
|
*"/vendor") set_perm_recursive $MODPATH$i 0 0 0755 0644 u:object_r:vendor_file:s0;;
|
||||||
|
*"/app") set_perm_recursive $MODPATH$i 0 0 0755 0644 u:object_r:vendor_app_file:s0;;
|
||||||
|
*"/overlay") set_perm_recursive $MODPATH$i 0 0 0755 0644 u:object_r:vendor_overlay_file:s0;;
|
||||||
|
*"/etc") set_perm_recursive $MODPATH$i 0 2000 0755 0644 u:object_r:vendor_configs_file:s0;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for i in $(find $MODPATH/system/vendor $MODPATH/vendor -type f -name *".apk" 2>/dev/null); do
|
||||||
|
chcon u:object_r:vendor_app_file:s0 $i
|
||||||
|
done
|
||||||
|
set_permissions
|
||||||
|
|
||||||
|
# Complete install
|
||||||
|
cleanup
|
86
Module/common/install.sh
Normal file
86
Module/common/install.sh
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
#!/system/bin/sh
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
OVERLAY_APK_FILE="WebViewOverlay.apk"
|
||||||
|
|
||||||
|
# Debloat (code from OpenWebView)
|
||||||
|
ui_print
|
||||||
|
ui_print "----------------------------------------------"
|
||||||
|
ui_print "Replacing Packages that can Cause Conflicts..."
|
||||||
|
ui_print "----------------------------------------------"
|
||||||
|
ui_print
|
||||||
|
for i in "com.android.chrome" "com.android.webview" "com.google.android.webview" "org.mozilla.webview_shell" "com.sec.android.app.chromecustomizations" "com.google.android.trichromelibrary"; do
|
||||||
|
local IS_OLD_WEBVIEW_INSTALLED OLD_WEBVIEW_PATH
|
||||||
|
IS_OLD_WEBVIEW_INSTALLED=$(cmd package dump "$i" | grep codePath)
|
||||||
|
if [[ -n $IS_OLD_WEBVIEW_INSTALLED ]]; then
|
||||||
|
ui_print "Detecting WebView: $i"
|
||||||
|
OLD_WEBVIEW_PATH=${IS_OLD_WEBVIEW_INSTALLED##*=}
|
||||||
|
if [[ ! -z $OLD_WEBVIEW_PATH ]]; then
|
||||||
|
ui_print "WebView: $OLD_WEBVIEW_PATH Detected!"
|
||||||
|
mktouch "$MODPATH"$OLD_WEBVIEW_PATH/.replace
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Auto Install WebView/TrichromeLibrary as User App
|
||||||
|
ui_print
|
||||||
|
ui_print "------------------------------------------"
|
||||||
|
ui_print "Auto Install Chosen WebView as User App..."
|
||||||
|
ui_print "------------------------------------------"
|
||||||
|
ui_print
|
||||||
|
for WVF in CromiteWebView.apk MulchWebView.apk ThoriumWebView.apk TrichromeLibrary.apk VanadiumWebView.apk; do
|
||||||
|
if [[ -f "/sdcard/Download/$WVF" ]]; then
|
||||||
|
cp /sdcard/Download/$WVF /data/local/tmp/
|
||||||
|
su -c pm install --install-location 1 /data/local/tmp/$WVF
|
||||||
|
rm -rf /sdcard/Download/$WVF
|
||||||
|
rm -rf /data/local/tmp/$WVF
|
||||||
|
ui_print "WebView Installed!"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check for Overlay Directory (code from OpenWebview)
|
||||||
|
ui_print
|
||||||
|
ui_print "---------------------------------"
|
||||||
|
ui_print "Checking for Overlay Directory..."
|
||||||
|
ui_print "---------------------------------"
|
||||||
|
ui_print
|
||||||
|
if [[ -d /product/overlay ]]; then
|
||||||
|
OVERLAY_PATH=system/product/overlay/
|
||||||
|
elif [[ -d /system_ext/overlay ]]; then
|
||||||
|
OVERLAY_PATH=system/system_ext/overlay/
|
||||||
|
elif [[ -d /system/overlay ]]; then
|
||||||
|
OVERLAY_PATH=system/overlay/
|
||||||
|
elif [[ -d /system/vendor/overlay ]]; then
|
||||||
|
OVERLAY_PATH=system/vendor/overlay/
|
||||||
|
ui_print "Overlay Directory Found!"
|
||||||
|
else
|
||||||
|
ui_print "Unable to Find a Correct Overlay Path!"
|
||||||
|
clean_up 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make Overlay Directory Inside the Module (code from OpenWebView)
|
||||||
|
ui_print
|
||||||
|
ui_print "-----------------------------------------------"
|
||||||
|
ui_print "Creating Overlay Directory Inside the Module..."
|
||||||
|
ui_print "-----------------------------------------------"
|
||||||
|
ui_print
|
||||||
|
mkdir -p "$MODPATH"/$OVERLAY_PATH
|
||||||
|
cp_ch "$MODPATH"/overlay/$OVERLAY_APK_FILE "$MODPATH"/$OVERLAY_PATH
|
||||||
|
if [[ -d "$MODPATH"/product ]]; then
|
||||||
|
if [[ -d "$MODPATH"/system/product ]]; then
|
||||||
|
cp -rf "$MODPATH"/product/* "$MODPATH"/system/product/
|
||||||
|
rm -rf "$MODPATH"/product/
|
||||||
|
else
|
||||||
|
mv "$MODPATH"/product/ "$MODPATH"/system/
|
||||||
|
ui_print "Directory Structure Created!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove Overlay APK After Install and Placeholder
|
||||||
|
ui_print
|
||||||
|
ui_print "--------------------------------------"
|
||||||
|
ui_print "Removing Unnecessary Files/Directories"
|
||||||
|
ui_print "--------------------------------------"
|
||||||
|
ui_print
|
||||||
|
rm -rf "$MODPATH"/overlay
|
||||||
|
rm -rf "$MODPATH"/system/.placeholder
|
Loading…
Reference in a new issue