如何将应用安装到/system/app下

来源:互联网 发布:win32系统编程 pdf 编辑:程序博客网 时间:2024/06/07 18:19
安卓的系统一般会有4个重要的分区:boot,system,cache,data。system分区存放的是系统应用(system app)和系统所需要的库文件(lib/*.so),而大家平时安装的软件是装到data分区(用户区)的。装在system区的就是系统应用,data分区的是用户应用。应用程序都安装在/app子目录下。

  但是,不管是系统应用还是用户应用,安卓会建立缓存以加速应用的启动,该缓存是在/data/dalvik-cache下面。注意了,是在data分区上的,所以应用安装的越多,data分区可用的空间就越少。

  一般ROOT之后,我们会删除/卸载部分系统的应用,从而system分区就空出了部分的空间,尤其是定制机,删了系统应用之后,会空出多达60M的空间。假如本身机器的ROM比较小,data分区不够用的话,就最好把部分的app移动到system空间,当然一旦移动到了system分区,就是系统应用了!

 

好,下面介绍哪些应用是可以移动到system分区的:

1) 开机就要启动的程序,比如权限管理啊,Widget啊。

2) 常常用到的程序,比如文件管理器。

3) 一些不会有内存驻留的小程序,比如autostarts,SD Maid啊。

 

有一些应用是不适合移动到system空间的:

1) 退出仍然会驻留内存的程序(比如数米基金宝),因为这些程序一旦变成了system应用,杀进程的软件就拿他们没办法了。

2) 应用程序内含lib库的,这个可以用压缩工具(windows下的zip工具、安卓下的ES文件管理器、RootExplorer)查看该apk,假如内部有lib文件夹的,里面有*.so文件的,那就说明他用到了这些lib。当然,若硬要移动到system空间也是可以的,只要把lib/*.so拷贝到system/lib下即可,但是本人觉得一是会造成重复,二是将来维护起来比较麻烦。不过有一法,可以在system/app下面建立文件夹,把*.so拷贝到该文件夹下,然后通过链接文件的方式将其拷贝到lib下。(这个我没试过)

 

移动方法:

1) 将该apk先卸载,然后将apk文件拷贝到system/app下,修改权限,有必要的话,重启一下。这样做的好处是,该软件的缓存会在卸载是自动删除。

2) 为防止有些应用卸载后数据丢失,可以不卸载,方法是:将apk拷贝到system/app下,然后删除data/app的apk,最后手动把/data/dalvik-cache/下该程序的缓存清除。

3) 假如要移动的应用太多,可以进入recovery,清除一下dalvik-cache,让启动的时候自动再生成cache。

 

 

附:
1. 查看各个分区的使用情况:http://blog.csdn.net/puncha/article/details/7670727

 

其他资料:

在 Android 中,如果要使用系统限制的权限(比如 android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到 /system/app/ 下。

一般手机/system目录是mount成只读的,所以我们需要重新mount成读写的

下面以 SecureSetting.apk 为例,演示这个操作。需要准备一台已经获得 Root 权限的手机。

1、通过 USB 连接手机和电脑。

2、使用 adb 控制手机。


[Java] view plaincopyprint?
  1. $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安装做准备。  
  2. nbsp;$ adb shell $ su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。  
  3. # mount //显示当前mount情况   
  4. nbsp;# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。   
  5. # cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk // 这一步可以用 cp 实现,但一般设备中没有包含该命令。如果使用 mv 会出现错误:failed on '/sdcard/NetWork.apk' - Cross-device link。   
  6. # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 还原分区属性,只读。   
  7. # exit $ exit  

重启,可以看到 SecureSetting 已经安装好。

0 0
原创粉丝点击