项目中需要将开发出来的Apk预置到某款手机里面,如果是不可卸载,就将Apk放到/system/app/下面,如果可以卸载,那就放到/data/app/下面。
但遇到了一个问题:apk中包含so文件,这个时候需要将so文件预置到/system/lib/下面,在apk中删除so文件。
关于Android系统的分区以及含义,网上的分析如下:
安卓的系统一般会有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系统中,用户可以自由选择各种输入法来满足自己的输入需求,但有时为了特定应用场景,我们可能需要将Google拼音输入法设为默认输入法,并将其预置到系统中。在高通平台8909上操作这个过程涉及到对Android...
在Android系统中,将应用程序安装至system/app目录下,使其成为系统级应用,是一项高级操作,主要用于开发者在进行ROM定制、应用预装或是系统级调试时。以下将深入解析这一过程,涵盖技术背景、实现步骤及注意事项。...
在深入探讨预置三方APK的SO文件及其执行权限之前,我们先来理解一下SO文件的基本概念以及其在Android系统中的作用。 #### SO文件简介 SO文件是Shared Object的简称,在Linux或类Unix系统中通常用于实现动态链接库...
在本源码包`CellBroadcastReceiver`中,我们将深入探讨如何在Android应用程序中实现这样的功能。 首先,让我们了解`BroadcastReceiver`的基本概念。在Android中,`BroadcastReceiver`是Android四大组件之一,它负责...
在Android系统中,调用网络设置界面是开发者经常会遇到的需求,比如...理解这些基础知识对于开发涉及网络功能的Android应用至关重要。通过研究`ConnectNetDemo`项目,开发者可以深入学习如何在实际项目中应用这些知识。
《健身助手Android应用代码解析》 在这个数字化时代,健康管理已经成为日常生活的重要组成部分,而移动应用则为这一领域提供了极大的便利。本文将深入剖析“健身助手Android应用代码”,揭示其背后的编程逻辑和技术...
通过深入学习和分析"Android应用源码之Provision.zip",开发者不仅可以了解Android系统的核心运作机制,还能提升在实际项目中进行高效、稳定、安全的初始化处理的能力。这不仅对个人技术成长有益,也是提升团队开发...
1. **包名(Package Name)**:这是每个Android应用的唯一标识符,由开发者在创建应用时定义。它遵循反向域名的规则,例如"com.nubia.app.example",可以帮助用户识别应用的来源和归属。 2. **功能(Function)**:...
`WallpaperPicker` 是 Android 8.0(API 级别26)系统中预装的一个应用程序,用于帮助用户设置壁纸。它提供了丰富的功能,让用户可以从内置的壁纸库中选择,或者使用自己的图片来定制手机或平板电脑的背景。下面我们...
Android Q,正式命名为Android 10,是Google推出的一款重要的移动操作系统更新,标志着安卓系统进入了一个新的里程碑。作为Android Pie的后续版本,Android 10不仅带来了诸多视觉和功能上的改进,还对用户隐私和安全...
该系统由三层构成:上层是Android应用层,即普通的APK程序;中间层是Android框架层,向上为应用开发者提供SDK API,向下与系统底层服务或硬件驱动交互;下层是智能卡硬件,包含各种Javacard程序。在应用程序访问智能...
在Android开发过程中,经常会遇到需要增加系统未预置的语言支持的需求。例如,客户可能要求支持波斯语(Farsi),而该语言在某些Android版本中并未内置。本文将详细介绍在Android 2.3.1 Gingerbread版本中添加波斯语...
在Android系统源码中预置APK是一项关键的定制化操作,这通常涉及到对系统镜像的修改,以便在设备启动时预装特定的应用。以下是一个详细的步骤指南,讲解如何将一个无源码的Google Play APK预置到Android系统的源码中...
本篇将详细介绍如何在Android平台上使用Valgrind,以及它能为Android应用开发带来的好处。 Valgrind的核心功能包括: 1. **Memcheck**:这是Valgrind的基础工具,用于检测内存错误,如未初始化的内存读取、内存...
在这个名为"Android-RealmAssetHelper"的项目中,我们找到了一个工具类,帮助开发者更方便地在Android应用中集成Realm.IO。 集成Realm.IO通常涉及以下几个步骤: 1. **添加依赖**:首先,你需要在项目的build....
任何人都可以成为开发者,免费获取开发工具,这使得Android应用生态得到了极大的丰富和扩展。开放手机联盟的成立,汇聚了运营商、手机厂商和软硬件公司,共同推动了Android的发展。开放性不仅意味着无限的创新空间,...
在Android系统中,为了使第三方应用能够被系统识别并预装在设备上,我们需要通过特定的构建机制将这些应用编译并集成到系统的镜像中。`Android.mk`文件是Android构建系统的关键部分,用于定义模块属性和编译规则。在...
【标题】"MTK10.0竖屏壁纸居中补丁.zip" 是一个针对MTK(MediaTek)芯片平台的Android系统,具体版本为MRK10.0的优化补丁,主要用于解决竖屏模式下壁纸无法居中的问题。在Android系统中,壁纸的显示效果直接影响到...
7.0/8.0/9.0/10.0app在运行时都需要申请运行时权限 默认给与app所要申请的权限 不会弹出授权的申请框