Android的系统架构图如图2-1所示。
图2-1 Android系统架构图
如上图所示,下面依次按照顺序介绍具体内容。
应用程序框架,即供给在创建程序时必要使用的各类高级构建块。活动管理器是控制应用程序生命周期的模块,内容提供者封装了需要在应用程序享的数据,比如电话。
本机库界面管理器,是指将绘制命令传给位图,将该位图与其他位图结合,形成用户看到的显示内容。SQLLite即SQL数据库,是轻量级的SQL数据库引擎,能在应用程序中实现持续存储。Web kit即浏览器引擎,能够快速显示HTML内容[5、6]。
LINUX内核,提供一般操作系统的4大管理。重点其实是Android提供的硬件抽象层,这使得Android以后可以更加方便的进行移植。
本次毕设使用的是adt-bundle-windows和eclipse环境。本质上来说与 Android-sdk-windows 和ADT的功能基本相同。这样就能够在windows 电脑操作系统下写安卓程序,并利用虚拟机进行测试。但是虚拟机一般运行比较慢,现在基本直接在手机上进行测试。
2。2 Java 开发语言
现代的高级程序设计语言林林总总,有如C、C++、Matlab、Java、Ruby、Perl、Python等等。程序界一直流传着C语言最难学,如今,Java语言的应用也丝毫不逊于C。Sun公司于1995年正式发布Java语言,在将近20年的发展中,发展成为拥有Java SE(J2SE,Java2 Platform Standard Edition,标准版)、Java EE(J2EE,Java 2 Platform, Enterprise Edition,企业版)、Java ME(J2ME,Java 2 Platform Micro Edition,微型版)三大开发体系架构的业界热门技术,主要类库JDK包括Java开发包(JDK)和Java运行时环境(JRE),前者提供Java程序的编译和解释等命令,后者为Java程序的运行提供相应的环境[8]。
Java语言具有众多的特点,主要包含如下:
(1)简单性。Java摒弃了C/C++中复杂混乱的特性,例如指针的概念;
(2)面向对象。与面向过程不同,程序的基本构成单位是类;
(3)安全性。采用面向对象技术封装了细节问题,还有异常处理机制来维护;
(4)多线程。能够实现真正的并发执行;
(5)跨平台。即平台无关性。通过Java 虚拟机(JVM)技术,Java的字节码文件只需要运行在JVM之上即可,在不同的平台上不需要重新编译,只要这个平台支持JVM即可。
Java源程序以。java作为后缀名。Java SE主要面向桌面和中小型Web开发,包含了Java的所有核心类库;Java EE面向企业级,包含用于企业级开发的拓展类库; Java ME主要面向移入式系统开发的类库。论文网
Java支持对绝大部分数据库的操作,例如Access、MySQL、SQL Server、Oracle等[9]。对于本文所使用的SQLite数据库下文还有更加详细的介绍。
Android作为第一个支持Java的非桌面操作系统,所以它的计算机语言除了少数用C来写,大部分的应用程序使用Java语言编排。这也是本节介绍JAVA语言的原因。
2。3 AES加解密算法
2。3。1 透明加密技术
前面概要介绍了透明加密技术,通俗的来理解就是对于已加密的文件,在其他任何别的设备上都是不可见的,受保护的,加密的,而在本机上看似是没有进行任何操作即加密操作的,其实在用户不可见的范围内,是系统自动进行加解密,在SD卡中是密文,用户实际看到的界面上显示的是明文。虽然目前很多SD卡都被嵌套在内存卡上无法拆卸,但是透明加密的思想还是具有里程碑的意义,而且作为后续的基础,我们有必要去掌握。透明加密技术涉及到了文件读写监控,加解密算法,数据库等重要模块,下面章节便会具体介绍。本章主要是简介一下钩子函数,即钩子透明加密技术。应用层和内核中间是API接口类库,内核层下部是存储介质。所谓的钩子函数就是在API进行读写的时候运用的一类函数,它执行用户看来自动的加解密操作[7、14]。