#!/system/bin/sh
#Malive Booster by JynAlek @XDA
#Thanks Marilia de Oliveira @XDA
#Thanks Elerson Carvalho

### Battery Savings
echo 0 > /proc/sys/vm/laptop_mode;
echo 500 > /proc/sys/vm/dirty_expire_centisecs;
echo 1000 > /proc/sys/vm/dirty_writeback_centisecs;
echo 60 > /proc/sys/vm/dirty_ratio;
echo 45 > /proc/sys/vm/dirty_background_ratio;

### Configure touchscreen sensitivity
echo 7035 > /sys/class/touch/switch/set_touchscreen;
echo 8002 > /sys/class/touch/switch/set_touchscreen;
echo 11000 > /sys/class/touch/switch/set_touchscreen;
echo 13060 > /sys/class/touch/switch/set_touchscreen;
echo 14005 > /sys/class/touch/switch/set_touchscreen;

### SD-Card read ahead
WIN=$(find /sys/devices/virtual/bdi/*/ -name read_ahead_kb)

 echo "4096" | tee $WIN
 
### Ext4 File-Systems optimization & instant-mount
busybox mount -o remount,noatime,noauto_da_alloc,nodiratime,barrier =0,nobh /system
busybox mount -o remount,noatime,noauto_da_alloc,nosuid,nodev,nodir atime,barrier=0,nobh /data
busybox mount -o remount,noatime,noauto_da_alloc,nosuid,nodev,nodir atime,barrier=0,nobh /cache
 

### Wireless Speed Tweaks
setprop net.tcp.buffersize.default 4096,87380,256960,4096,16384,256960
setprop net.tcp.buffersize.wifi 4096,87380,256960,4096,16384,256960
setprop net.tcp.buffersize.umts 4096,87380,256960,4096,16384,256960
setprop net.tcp.buffersize.gprs 4096,87380,256960,4096,16384,256960
setprop net.tcp.buffersize.edge 4096,87380,256960,4096,16384,256960

### Sysctl loader
sysctl -p /system/etc/sysctl.conf


### Optimize SqLite Databases

for i in \
`busybox find /data -iname "*.db"`; 
do \
	/system/xbin/sqlite3 $i 'VACUUM;'; 
	/system/xbin/sqlite3 $i 'REINDEX;'; 
done;

if [ -d "/dbdata" ]; then
	for i in \
	`busybox find /dbdata -iname "*.db"`; 
	do \
		/system/xbin/sqlite3 $i 'VACUUM;'; 
		/system/xbin/sqlite3 $i 'REINDEX;'; 
	done;
fi;


if [ -d "/datadata" ]; then
	for i in \
	`busybox find /datadata -iname "*.db"`; 
	do \
		/system/xbin/sqlite3 $i 'VACUUM;'; 
		/system/xbin/sqlite3 $i 'REINDEX;'; 
	done;
fi;


for i in \
`busybox find /sdcard -iname "*.db"`; 
do \
	/system/xbin/sqlite3 $i 'VACUUM;'; 
	/system/xbin/sqlite3 $i 'REINDEX;'; 
done;
echo "SqLite Database Optimized"

### APK Zipalign, by: Ne.Xt @ XDA Forum's

function mountrw {
  mount|grep "/system "|grep rw >/dev/null
  [ $? -eq 1 ] && mount -o remount,rw $(mount|grep "/system "|awk '{ print $1 }') /system
}
function mountro {
  mount|grep "/system "|grep ro >/dev/null
  [ $? -eq 1 ] && mount -o remount,ro $(mount|grep "/system "|awk '{ print $1 }') /system
}

echo " Starting package optimization"

echo "Starting Velocity ZipAlign $( date +"%m-%d-%Y %H:%M:%S" )"
    for apk in /system/app/*.apk ; do
        zipalign -c 4 $apk;
        ZIPCHECK=$?;
        if [ $ZIPCHECK -eq 1 ]; then
                mountrw;
                echo ZipAligning $(basename $apk)
                zipalign -f 4 $apk /cache/$(basename $apk);
                        if [ -e /cache/$(basename $apk) ]; then
                                cp -f -p /cache/$(basename $apk) $apk
                                rm /cache/$(basename $apk);
                        else
                                echo ZipAligning $(basename $apk) Failed DC
                        fi;
        else
                echo Velocity ZipAlign already completed on $apk
        fi;
       done;
    for apk in /data/app/*.apk ; do
        zipalign -c 4 $apk;
        ZIPCHECK=$?;
        if [ $ZIPCHECK -eq 1 ]; then
                echo ZipAligning $(basename $apk)
                zipalign -f 4 $apk /cache/$(basename $apk);
                        if [ -e /cache/$(basename $apk) ]; then
                                cp -f -p /cache/$(basename $apk) $apk
                                rm /cache/$(basename $apk);
                        else
                                echo ZipAligning $(basename $apk) Failed DC
                        fi;
        else
                echo Velocity ZipAlign already completed on $apk
        fi;
       done;
mountro;

### FPs Estabilizer by Lenarox's
setprop debug.sf.showupdates 0
setprop debug.sf.showcpu 0
setprop debug.sf.showbackground 0
setprop debug.sf.showfps 0