数据的共享,内容提供器就是让一个应用程序来访问其它应用程序的数据。还有一种情况是内容提供器可以提供出自己的数据让其它的应用程序来共享。
③系统运行库层
应用程序框架层的应用程序的运行需要一些必要的库。这些库就是由这层来提供。它包含系统c库、多媒体库、Surface Manager、 LibWebCore和SQLite数据库[7]。每一个Java程序都是运行在自己的虚拟机上的,这些可执行的文件先是通过程序的编译,最后再经过开发包中的工具转化格式,这种转化后的.dex 最终才能在虚拟机上正常的执行[7]。
虚拟机能够高效的执行文件,这样就能够在性能较低的cpu上运行对内存要求较高的文件。Android 操作系统很方便的进行线程的管理以及进程的隔离,每一个软件应用都会在操作系统的底层对应有一个虚拟机运行,这些程序代码就是通过虚拟机之后才能正常的执行[16]。
④系统内核层
Android系统是基于Linux内核开发出来的,但是它只保留了Linux的大部分功能[6]。在这层中,它集成了所有硬件的驱动程序,有:显示驱动、键盘驱动、照相机驱动、内存驱动、蓝牙驱动等等。其实它是软件与硬件之间的抽象层,通过相应的驱动程序来协调软硬件之间的操作问题。
2.1.2搭建Android开发平台
Android平台的搭建需要Eclipse、ADT插件和Android SDK。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。ADT,即Android development tools,它为开发者提供了库文件以及其它开发所用到的工具[5]。Android SDK,即software development kit,是软件开发工具包,被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合[7]。
目前Google公司提供了已经搭建集成好ADT插件的SDK软件,用户只要直接下来再解压即可使用。具体下载地址在:developer.android/sdk/index.html#download。
2.2 Iptables介绍
Iptables是与最新的2.6.x版本Linux 内核集成的IP信息包过滤系统[4]。如果Linux系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器,则该系统有利于在Linux 系统上更好地控制IP信息包过滤和防火墙配置。
其工作原理:防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
2.2.1Iptables的表与链
Iptables可以用于创建过滤(filter)与NAT规则,用来设置、维护和检查Linux内核的IP包过滤规则[4]。由于Android系统是基于Linux来开发出来的,所以对于在Linux上使用iptables来实现防火墙功能的,在Android系统上也可以使用。如下图2.1所示,iptables是由Tables、Chains和Rules构成的。它可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作target(目标),也可以跳向同一个表内的用户定义的链。iptales只读取数据包头,不会给信息流增加负担,也无需进行验证。要想获得更好的安全性,可以将其和一个代理服务器(比如squid)相结合。
图2.1 IPtables结构
Iptables有四个内建表,分别是:Filter、NAT、Mangle和Raw。下面将详细介绍着四个表。
①Filter表
Filter表是Iptables的默认表,因此如果你没有自定义表,那么就默认使用Filter表,它具有以下三条内建链:
1)INPUT链:处理来自外部的数据。
2)OUTPUT链:处理向外发送的数据。
3)FORWARD链:将数据转发到本机的其他网卡设备上。
②Nat表
NAT表有三种内建链:
1)PREROUTING链:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
2)POSTROUTING链:处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
3)OUTPUT链:处理本机产生的数据包。
③Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:PREROUTING、OUTPUT、FORWARD、INPUT和POSTROUTING。每个链的作用与前面两个表的作用一致。
④Raw表
Raw表用于处理异常,它具有2个内建链:PREROUTING和OUTPUT链。每条链的处理方式类似前面的表。
2.2.2Iptables的规则
Iptables的规则指定所检查包的特征和目标。如果包不匹配,将送往该链中的下一条规则检查;如果匹配,那么下一条规则由目标值确定。该目标值可以是用户定义的链名或是某个专用值,如ACCEPT(通过)、DROP(删除)、QUEUE(排队)、REJECT(拒绝)和RETURN(返回)。ACCEPT 表示允许防火墙接收数据包。DROP表示将数据包丢弃。QUEUE表示把数据包传递到用户空间。REJECT表示拒绝该数据包,与DROP相比,它会有回应产生。RETURN表示停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。如果到达了一个内建的链的末端,或者遇到内建链的规则是RETURN,包的命运将由链规则指定的目标决定[4]。
理解Rules的关键是:
①Rules包括一个条件和一个目标(target);
②如果不满足条件,就执行目标(target)中的规则或者特定值;
③如果还不满足条件,就判断下一条Rules。
2.3 SQLite介绍
SQLite是Android内置的轻量级数据库[7],是遵循ACID的关系型数据库管理系统,它的设计目标是嵌入式的。它占用的资源非常的低,这一优点用在手机上,作用很大。因为Android手机电量有限,内存小。并且整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中[17][18]。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
2.4 XML介绍
Xml(可扩展标记语言),标准通用标记语言的子集[8],一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据[9]。
它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,它仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。
2.5 Java反射机制
在运行状态下,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;把这种动态获取的信息以及动态调用对象的方法的功能成为Java的反射机制[10][11]。
在Java中,这种机制提供功能以下功能:它能在运行时判断任意一个对象所属的类;它能在运行时构造任意一个类的对象;它能在运行时判断任意一个类所具有的成员变量和方法;它能在运行时调用任意一个对象的方法;它能生成动态代理[19]。
3 需求分析
3.1引言
3.1.1编制目的
编写需求分析任务书的目的是描述所需开发的软件(Android手机防火墙)所要实现的详细功能模块的要求,为开发者明确项目的开发方向。
3.1.2范围
上一篇:
win7下无线网卡软AP设置_针对android系统
下一篇:
试论APP广告在手机中的应用