前提SD安装的应用是每装一个应用分一个区出来的。
在packagemanagerservice.java的
getDataPathForPackage中可以得到应用的data路径,即/data/data/app/,下面存有file,lib,cache,databaset等。
在getDataPathForPackage可以把除lib库以外的文件夹移到其它的地方。
OptInvocation.c生成执行时的dalvik-cache目录,即/data/dalvik-cache
dexOptGenerateCacheFileName
必须要改变SD卡的属性为777,如果不想改变,有如下方案,改变应用安装时分区的属主。但有如果问题:
InstallParams->HandlerParams -> handleReturnCode->processPendingInstall调用installPackageLI
scanPackageLI的pkg.applicationInfo.uid = pkgSetting.userId;
中才得到UID,installPackageLI的doRename(SD的情况mountSecureContainer)却是在scanPackageLI前执行的,似乎要改
/mnt/asec/下应用的属主是不可能的。而只能在doRename使用默认的Process.SYSTEM中的这个属主。
似乎要改变/mnt/asec/下应用的属主的计划要破产???只能打开SD卡的所有权限才能搞定吗???
再想想吧,应该还有其它的方法。
现在手机都有内置SD卡,听说framework有对其读写的权限,没有拿到手机,有手机再试吧。
改安装在SD卡应用存DATA分区/data/dalvik-cache
Commands.c的create_cache_path生成cache目录。
OptInvocation.c生成执行时的dalvik-cache目录,即/data/dalvik-cache,
改变dexOptGenerateCacheFileName,可以改/data/dalvik-cache,把它移出DATA分区。
把SD卡改成777的话,有很多问题会首先,在产品上似乎不可行。
实现成功,但没添加进行,就是会有其它的问题产生。
如果DATA分区足够大,没有必要这样做。
阅读(5327) | 评论(0) | 转发(0) |