zoukankan      html  css  js  c++  java
  • 安卓减肥

        本方法自己发现,大家都知道G13的rom小,最后整得可用空间只有150MB。使用了link2SD,可以安装大的软件了,可是最后还是发现内存急剧减少,没办法就又删除system/app中的程序,起码节省了系统程序会在data目录下创建的文件。

    内存仍会减少,然后学着把一些自己认为必备的程序移到system/app下面,后面移得多了发现可用空间还是经常不足。

    最后是自己发现的方法了。把移到了system/app下面的APK里面的class.dex和lib删掉,减小体积。之所以这么做是因为我们往往在移到system/app时都把lib释放到lib文件夹里面了,而安装时生成在data/dalvik-cache目录中的dex也改名odex移到了system/app中了,这些文件在系统恢复时也不会被删掉,那APK中的文件便不再有用了。试着删除之后果然体积减少很多,非常有效。推荐一下。然后精简了etc下WPDB.zip的文件删除了非中文,英文的地名,因为中文系统当然不可能用到了,就又减了3M多。

    用G13就是得省的,现在我手机里可用空间保持在七八十MB了,基本大多数软件不会出现内存不足了

    发现了一种新方法省内存
        首先是安装了link2SD和RE,针对link2SD做了内存卡分区,然后再RE中就多了一个分区可用啦,好了,把 /data/data目录中的任意一个占内存的文件夹移动到第二分区中,然后在移过去的文件夹上长按,选择【链接到此文件夹】,把链接创建回/data /data,好了,这个文件夹所占的内存释放了。不过还是建议只把非常用常开程序移动了。

        需要注意的是,对于有lib文件夹且lib文件夹中有so文件的程序不能把整个程序数据文件夹使用上面方法移动,这种lib文件夹必须存在才能保证link2SD的正常工作.因而只能把程序数据文件夹内的各个子文件夹分别链接到sdext2里面啦.

     

    写了个脚本来移动数据文件的,可以节省很多内存,可以看看

    #!/system/xbin/sh 
    # folder not followed by /
    dataappfolder=/data/app
    datadatafolder=/data/data
    sdext2datafolder=/data/sdext2/data2
    dataapps=`ls $dataappfolder` 
    
    isdataapp(){
        local key=$1
        if [ $key == "" ]
        then
            return 0
        fi
        
        local dataapp
        for dataapp in $dataapps
        do
            if [ -d $dataappfolder"/"$dataapp ]
            then
            continue
            fi
            
            if [ ! -L $dataappfolder"/"$dataapp ] 
            then
            continue
            fi
            
            #if [[ $dataapp == *$key*apk ]] not support,only support the following check method
            if [ ${dataapp/$key/} != $dataapp ]
            then
                return 1
            fi
        done
        
        return 0
    } 
    
    getfullpath(){
        local currentpath=`pwd`
        cd "$1"
        local fullpath=`pwd`
        cd $currentpath
        return 0
    }
    
    ergodic(){
        local folder=$1
        local file
        for file in ` ls $folder `
        do
            if [ -d $folder"/"$file ] && [ ! -L $folder"/"$file ]
                then
                ergodic $folder"/"$file
            else
                if [ -L $folder"/"$file ]
                then
                    echo $folder"/"$file
                fi
            fi
        done
    }
    #ergodic .
    
    rmfileorfolder(){
        local path=$1
        if [ -d $path ]
        then
            echo "rm -r $path <rmfileorfolder>"
            rm -r $path
        else
            echo "rm $path <rmfileorfolder>"
            rm $path
        fi
    }
    
    setprop(){
        local topath=$1
        local frompath=$1
        chmod -rwxXst topath
    }
    
    moveandlink(){
        local frompath=$1
        if [ ! -e $frompath ] || [ -L $frompath ]
        then
            echo "from file do not exist or is link. $frompath <moveandlink>"
            return
        fi
    
        local fromname=`basename $frompath`
        local fromdir=`dirname $frompath`
    
        local todir=$2
        if [ ! -d $todir ]
        then
            echo "to dir do not exist. $todir <moveandlink>"
            return
        fi
        
        if [ -e $todir"/"$fromname ] && [ -L $todir"/"$fromname ]
        then
            echo "dest file has exist, delete it. $todir"/"$fromname <moveandlink>"
            rm $todir"/"$fromname
        fi
    
        mv $frompath $todir
        ln -s $todir"/"$fromname $frompath
    }
    
    moveandlinkchildwithoutlib(){
        local fromdir=$1
        if [ ! -d $fromdir ]
        then
            echo "from dir do not exist. $fromdir <moveandlinkchildwithoutlib>"
            return
        fi
    
        local todir=$2
        if [ ! -d $todir ]
        then
            echo "to dir do not exist. $todir <moveandlinkchildwithoutlib>"
            return
        fi
    
        local fromdirname=`basename $fromdir`
        local finaltodir=$todir"/"$fromdirname
    
        if [ ! -e $finaltodir ]
        then
            mkdir $finaltodir
        fi
    
        local file
        for file in ` ls $fromdir `
        do
            if [ $file == "lib" ]
            then
                continue
            fi 
            
            if [ -L $fromdir"/"$file ]
            then
                continue
            fi
            
            moveandlink $fromdir"/"$file $finaltodir
        done
    }
    
    #moveandlink /home/dongzhiquan/a /home/dongzhiquan/b
    
    haslibinfolder(){
        local folder="$1"
        local file
        for file in ` ls $folder `
        do
            if [ "$file" != "lib" ]
            then
                continue
            fi
            
            if [ ! -d $folder"/"$file ]
            then
                continue
            fi
            
            if [ "`ls $folder/$file`" = "" ]
            then
                continue
            fi
            return 1
        done
        
        return 0
    }
    
    link(){
        local basefolder=$1
        local destfolder=$2
        
        for file in ` ls $basefolder `
        do
            local childfile=$basefolder"/"$file
            
            if [ ! -d $childfile ]
            then
                echo "not folder. $childfile <link>"
                continue
            fi
            
            if [ -L $childfile ]
            then
                echo "been linked. $childfile <link>"
                continue
            fi 
            
            isdataapp $file
            local ret=$?
            if [ $ret -eq 0 ]
            then
                echo "not data app. $childfile <link>"
                continue
            fi
            
            haslibinfolder $childfile
            ret=$?
            if [ $ret -eq 0 ]
            then
                moveandlink $childfile $destfolder
                echo "linked. $childfile <link>"
            else
                moveandlinkchildwithoutlib $childfile $destfolder
                echo "child linked. $childfile <link>"
            fi
        done
    }
    link $datadatafolder $sdext2datafolder

    换MT887后的自动mount脚本

    moveandmount(){
        local frompath=$1
        if [ ! -d $frompath ]
        then
            echo "from file do not exist or is link. $frompath <moveandmount>"
            return
        fi
    
        umount $frompath
    
        local fromname=`basename $frompath`
    
        local todir=/home2/dongzhiquan/b
        if [ ! -d $todir ]
        then
            echo "to dir do not exist. $todir <moveandmount>"
            return
        fi
    
        if [ ! -e $todir"/"$fromname ]
        then
            echo "dest file not exist, make it. $todir"/"$fromname <moveandmount>"
            mkdir $todir"/"$fromname
            if [ $? -ne 0 ]
            then
                echo "mkdir failed. $todir"/"$fromname <moveandmount>"
                return
            fi
        fi
    
        mv -f $frompath/* $todir"/"$fromname/
        if [ $(ls -A $frompath/ | wc -w) -ne 0 ]
        then
            echo "move failed. $frompath/* $todir"/"$fromname/ <moveandmount>"
            return
        fi
        mount -o bind $todir"/"$fromname $frompath
        if [ $? -ne 0 ]
        then
            echo "mount failed. <moveandmount>"
            return
        fi
    }
    
    moveandmount /home2/dongzhiquan/a
  • 相关阅读:
    html基础知识点
    uni-app之tabBar的自己配置
    uni-app之导航配置pages.json
    js获取链接?后边的参数名称或者值
    验证码输入自动聚焦下一个input或者删除自动聚焦上一个input
    VUE中/deep/深度作用域
    vue环境下新建项目
    vue中展示数据
    VUE环境项目搭建以及简单的运行例子
    ios设置音乐audio自动播放
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/2236351.html
Copyright © 2011-2022 走看看