Android学习(3):认识APK

来源:互联网 发布:梁国平广东广电网络 编辑:程序博客网 时间:2024/06/16 21:53


          Android程序的后缀都是.apk,常简称为APK文件。在学习和编写自己的程序之前,先来看一下apk究竟是什么。

      首先,apk就是一个简单的Zip格式的压缩文件,通过RAR等解压缩程序可以解开。解开后,都会包含一个名称为classes.dex的文件和AndroidManifest.xml的文件。

       classes.dex就是Java代码经过编译后“合成”的文件,由Android定制的专门执行dex文件的java 虚拟机 -- Dalvik虚拟机来执行。

       AndroidManifest.xml是程序的配置文件,在这个配置文件里,声明了程序的唯一标识即包名、支持的Android系统版本、有哪些Activity页面等等。可以看出,这个文件很重要,以后写程序时如果某个页面出不来,某个服务没法启动,首先要做的就是先查看一下是否在这个配置文件里做了声明。下一节会专门讲这个配置文件。

      然后,我们下载到手机上点击就安装了,那程序安装到了哪里?Windows安装程序会提示安装路径,可apk安装时从没给过这个机会…

      前文说过,我们需要有一台Root过的手机,然后安装了Root Explorer文件浏览器,作用首先是我们需要通过这个了解我们手机的目录结构。在根目录下的/data/app/下可以看到很多的.apk文件,而apk安装过程简单来说就是把文件复制到了这个目录下,这也就完成了安装过程。打开/data/app/目录,可以看到另外一些apk, 手机预置应用就在这里了,虽然都是同样的apk,但所处的位置一样,其身价就决然不同,前者能够卸载,而后者无法卸载(不Root情况下)。在Android早期,应用只能安装到这两个目录之一,后来,Android终于支持应用也可以安装到sd卡里,只是在sd里的目录仍然不是我们能选择的,在mnt/aesc下面

     应用运行时必然会产生数据,那数据又是存储在哪呢,答案是分两种,私有目录和共有目录。data/data/包名/下是程序的私有目录,别的应用无法读写这里面的数据,当然,Root后的手机拥有了Root权限的应用可以随便读写了,比如我们现在这在用的Root文件浏览器就可以,浏览下,可以看到这里有几个固定的目录:files, shared_prefs等,打开后,我们甚至可以直接查看里面的存储内容,所以Root后的手机是非常不安全的,但对于我们开发人员来说,当我们读写数据有问题时,需要找到这里查看是否文件有正确的创建和读写。SD卡则是公有,任何程序都可以随意写入文件。产生另外一个问题,应用的安装是由系统控制的,应用的卸载也是,如果在SD卡里随意写数据,那么应用被卸载时,这些数据就成了垃圾数据被遗留在SD卡里了。所以Android希望应用把数据卸载sd卡下的Android/data/包名下,应用被卸载时系统也会清理这里的数据。

     


0 0
原创粉丝点击