Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

#!/system/bin/sh # # Fix Alignment Script (ZipAlign AND Fix Permissions) created by zeppelinrox.

# # Combines my "ZepAlign" / Wheel Alignment Script (ZipAlign) with my Fix Emissio ns Script (Fix Permissions) # ############################### # Wheel Alignment Information # ############################### # ZipAligns all data and system apks (apps) that have not yet been ZipAligned # ZipAlign optimizes all your apps, resulting in less RAM comsumption and a fast er device! ;^] # # Props: Automatic ZipAlign by Wes Garner (original script) # oknowton for the change from MD5 to zipalign -c 4 # # Tweaks & Enhancements by zeppelinrox... # - Added support for /vendor/app (for ICS) # - Added support for /mnt/asec # - Added support for more data directories ie. dbdata, datadata, etc. # - Added debugging # - Tweaked interface a bit ;^] # ############################# # Fix Emissions Information # ############################# # Sets permissions for android data directories and apks. # This should fix app force closes (FCs). # It's quite fast - setting permissions for 300 apps in approximately 1 minute. # # Props: Originally and MOSTLY (erm... something like 90% of it lol) by Jared Ru mmler (JRummy16). # However, I actually meshed together 3 different Fix Permissions scripts ;^] # # Tweaks & Enhancements by zeppelinrox... # - Removed the usage of the "pm list packages" command - it didn't work on boot. # - Added support for /vendor/app (for ICS) # - No longer omits framework-res.apk or com.htc.resources.apk # - Added support for more data directories ie. dbdata, datadata, etc. # - Added debugging # - Tweaked interface a bit ;^] # # For debugging, delete the # at the beginning of the following 2 lines, and che ck /data/Log_FixAlign.log file to see what may have fubarred. # set -x # exec > /data/Log_FixAlign.log 2>&1 # line================================================= zipalign="yes" clear echo "" echo $line echo " -=Fix Alignment=- script by -=zeppelinrox=-" echo $line echo "" sleep 2 id=`id`; id=`echo ${id#*=}`; id=`echo ${id%%\(*}`; id=`echo ${id%%gid*}` if [ "$id" != "0" ] && [ "$id" != "root" ]; then

sleep 1 echo " You are NOT running this script as root..." echo "" sleep 3 echo $line echo " ...No SuperUser for you!!" echo $line echo "" sleep 3 echo " ...Please Run as Root and try again..." echo "" echo $line echo "" sleep 3 exit 69 elif [ ! "`which zipalign`" ]; then zipalign= sleep 1 echo " Doh... zipalign binary was NOT found..." echo "" sleep 3 echo $line echo " ...No ZepAligning for you!!" echo $line echo "" sleep 3 echo " Load the XDA SuperCharger thread..." echo "" sleep 3 echo " ...and install The SuperCharger Starter Kit!" echo "" echo $line echo "" sleep 3 su -c "LD_LIBRARY_PATH=/vendor/lib:/system/lib am start http://goo.gl/qM 6yR" echo "" echo $line echo "" sleep 3 echo $line echo " So... for now... can ONLY Fix Emissions!" echo $line echo "" sleep 3 fi 2>/dev/null busybox mount -o remount,rw /data 2>/dev/null busybox mount -o remount,rw /system 2>/dev/null busybox mount -o remount,rw `busybox mount | grep system | awk '{print $1,$3}' | sed -n 1p` 2>/dev/null rm /data/fixaligntemp 2>/dev/null LOG_FILE=/data/Ran_FixAlign.log LOG_FILE2=/data/Ran_ZepAlign.log START=`busybox date +%s` BEGAN=`date` TOTAL=`cat /d*/system/packages.xml | grep -E "^<package.*serId" | wc -l` INCREMENT=3 PROGRESS=0 PROGRESS_BAR="" echo " Start Fix Alignment: $BEGAN" > $LOG_FILE

if [ "$zipalign" ]; then echo " Start Wheel Alignment ( \"ZepAlign\" ): $BEGAN" > $LOG_FILE2; echo "" >> $LOG_FILE2; fi sync cat /d*/system/packages.xml | grep -E "^<package.*serId" | while read pkgline; d o if [ ! -f "/data/fixaligntemp" ]; then ALIGNED=0; FAILED=0; ALREADY=0; S KIPPED=0; fi PKGNAME=`echo $pkgline | sed 's%.* name="\(.*\)".*%\1%' | cut -d '"' -f1 ` CODEPATH=`echo $pkgline | sed 's%.* codePath="\(.*\)".*%\1%' | cut -d ' "' -f1` DATAPATH=/d*/d*/$PKGNAME PKGUID=`echo $pkgline | sed 's%.*serId="\(.*\)".*%\1%' | cut -d '"' -f1` PROGRESS=$(($PROGRESS+1)) PERCENT=$(( $PROGRESS * 100 / $TOTAL )) if [ "$PERCENT" -eq "$INCREMENT" ]; then INCREMENT=$(( $INCREMENT + 3 )) PROGRESS_BAR="$PROGRESS_BAR=" fi clear echo "" echo -n " >" echo -e "\r $PROGRESS_BAR>" echo " \"Fix Alignment\" by -=zeppelinrox=-" echo -n " >" echo -e "\r $PROGRESS_BAR>" echo "" echo " Processing Apps - $PERCENT% ($PROGRESS of $TOTAL)" echo "" | tee -a $LOG_FILE echo " Fix Aligning $PKGNAME..." | tee -a $LOG_FILE echo "" if [ -e "$CODEPATH" ]; then if [ "$zipalign" ]; then if [ "$(busybox basename $CODEPATH )" = "framework-res.a pk" ] || [ "$(busybox basename $CODEPATH )" = "com.htc.resources.apk" ]; then echo " NOT ZipAligning (Problematic) $CODEPATH.. ." | tee -a $LOG_FILE $LOG_FILE2 SKIPPED=$(($SKIPPED+1)) else zipalign -c 4 $CODEPATH ZIPCHECK=$? if [ "$ZIPCHECK" -eq 1 ]; then echo " ZipAligning $CODEPATH..." | tee a $LOG_FILE $LOG_FILE2 zipalign -f 4 $CODEPATH /cache/$(busybox basename $CODEPATH ) rc="$?" if [ "$rc" -eq 0 ]; then if [ -e "/cache/$(busybox basena me $CODEPATH )" ]; then busybox cp -f -p /cache/ $(busybox basename $CODEPATH ) $CODEPATH | tee -a $LOG_FILE $LOG_FILE2 ALIGNED=$(($ALIGNED+1)) else echo " ZipAligning $CODE PATH... Failed (No Output File!)" | tee -a $LOG_FILE $LOG_FILE2 FAILED=$(($FAILED+1)) fi else echo "ZipAligning $CODEPATH... Fail ed (rc: $rc!)" | tee -a $LOG_FILE $LOG_FILE2

FAILED=$(($FAILED+1)) fi if [ -e "/cache/$(busybox basename $CODE PATH )" ]; then busybox rm /cache/$(busybox basename $CODEPATH ); fi else echo " ZipAlign already completed on $CO DEPATH " | tee -a $LOG_FILE $LOG_FILE2 ALREADY=$(($ALREADY+1)) fi echo "$ALIGNED $FAILED $ALREADY $SKIPPED" > /dat a/fixaligntemp fi fi APPDIR=`busybox dirname $CODEPATH` if [ "$APPDIR" = "/system/app" ] || [ "$APPDIR" = "/vendor/app" ] || [ "$APPDIR" = "/system/framework" ]; then busybox chown 0 $CODEPATH busybox chown :0 $CODEPATH busybox chmod 644 $CODEPATH elif [ "$APPDIR" = "/data/app" ]; then busybox chown 1000 $CODEPATH busybox chown :1000 $CODEPATH busybox chmod 644 $CODEPATH elif [ "$APPDIR" = "/data/app-private" ]; then busybox chown 1000 $CODEPATH busybox chown :$PKGUID $CODEPATH busybox chmod 640 $CODEPATH fi if [ -d "$DATAPATH" ]; then busybox chmod 755 $DATAPATH busybox chown $PKGUID $DATAPATH busybox chown :$PKGUID $DATAPATH DIRS=`busybox find $DATAPATH -mindepth 1 -type d` for file in $DIRS; do PERM=755 NEWUID=$PKGUID NEWGID=$PKGUID FNAME=`busybox basename $file` case $FNAME in lib)busybox chmod 755 $f ile NEWUID=1000 NEWGID=1000 PERM=755;; shared_prefs)busybox chmod 771 $file PERM=660;; databases)busybox chmod 771 $file PERM=660;; cache)busybox chmod 771 $file PERM=600;; files)busybox chmod 771 $file PERM=775;; *)busybox chmod 771 $f ile PERM=771;; esac busybox chown $NEWUID $file busybox chown :$NEWGID $file busybox find $file -type f -maxdepth 2 ! -perm $ PERM -exec busybox chmod $PERM {} ';'

busybox find $file -type f -maxdepth 1 ! -user $ NEWUID -exec busybox chown $NEWUID {} ';' busybox find $file -type f -maxdepth 1 ! -group $NEWGID -exec busybox chown :$NEWGID {} ';' done fi echo " Fixed Permissions..." | tee -a $LOG_FILE fi 2>/dev/null done sync echo "" | tee -a $LOG_FILE echo $line busybox mount -o remount,ro /system 2>/dev/null busybox mount -o remount,ro `busybox mount | grep system | awk '{print $1,$3}' | sed -n 1p` 2>/dev/null STOP=`busybox date +%s` ENDED=`date` RUNTIME=`busybox expr $STOP - $START` HOURS=`busybox expr $RUNTIME / 3600` REMAINDER=`busybox expr $RUNTIME % 3600` MINS=`busybox expr $REMAINDER / 60` SECS=`busybox expr $REMAINDER % 60` RUNTIME=`busybox printf "%02d:%02d:%02d\n" "$HOURS" "$MINS" "$SECS"` if [ "$zipalign" ]; then ALIGNED=`awk '{print $1}' /data/fixaligntemp` FAILED=`awk '{print $2}' /data/fixaligntemp` ALREADY=`awk '{print $3}' /data/fixaligntemp` SKIPPED=`awk '{print $4}' /data/fixaligntemp` echo "" | tee -a $LOG_FILE2 sleep 1 rm /data/fixaligntemp echo " Done \"ZepAligning\" ALL data and system APKs..." | tee -a $LOG_F ILE $LOG_FILE2 echo "" | tee -a $LOG_FILE $LOG_FILE2 sleep 1 echo " $TOTAL Apps were processed!" | tee -a $LOG_FILE $LOG_FILE2 echo "" echo " $ALIGNED Apps were zipaligned..." | tee -a $LOG_FILE $LOG_FILE2 echo " $FAILED Apps were NOT zipaligned due to error..." | tee -a $LOG_F ILE $LOG_FILE2 echo " $SKIPPED Apps were skipped..." | tee -a $LOG_FILE $LOG_FILE2 echo " $ALREADY Apps were already zipaligned..." | tee -a $LOG_FILE $LOG _FILE2 echo "" | tee -a $LOG_FILE sleep 1 echo " ...Say Hello To Optimized Apps!" echo "" echo $line fi echo "" sleep 1 echo " FIXED Permissions For ALL $TOTAL Apps..." | tee -a $LOG_FILE echo "" | tee -a $LOG_FILE sleep 1 echo " ...Say Buh Bye To Force Close Errors!" echo "" echo $line echo "" sleep 1 echo " Start Time: $BEGAN" | tee -a $LOG_FILE

echo " Stop Time: $ENDED" | tee -a $LOG_FILE echo "" | tee -a $LOG_FILE echo " Completion Time: $RUNTIME" | tee -a $LOG_FILE echo "" sleep 1 echo " See $LOG_FILE for more detail!" echo "" sleep 1 if [ "$zipalign" ]; then echo " And see $LOG_FILE2 for even more!"; fi echo "" sleep 1 echo " ==============================" echo " ) Fix Alignment Completed! (" echo " ==============================" echo "" exit 0

You might also like