步步为营_Android开发课[1]_认识Android开发

Focus on technology, enjoy life!—— 杨焕州 QQ:804212028
原文链接:http://blog.csdn.net/y18334702058/article/details/44624305
本文可能存在参考或借助部分外界资源,如有任何侵权行为,请与我联系!


  • 主题:初步认识Android开发

概述:

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。中文名:安卓。

版本:

发条机器人(Android 1.0)
纸杯蛋糕(Android 1.5)
甜甜圈(Android 1.6)
松饼(Android 2.0/2.1)
冻酸奶(Android 2.2)
姜饼(Android 2.3)
蜂巢(Android 3.0)
冰激凌三明治(Android 4.0)
果冻豆(Android4.1和Android 4.2)
棒棒糖(Android5.0)

架构:

分为四层,由上到下分别为:程序应用层,应用框架层,运行库层,Linux内核层。 这里写图片描述

Android中的库

下面是具体的类库:
1、Android.util 核心使用包(看名字就知道啦),包括了低级类,例如,专用的容器、字符串格式化和XML解析程序。
2、Android.os 操作系统包,提供了基本操作系统服务的访问时间,例如,消息传递、进程间通信、始终函数和调试。
3、Android.graphic 图形API提供了支持画布、颜色和绘画原语的低级图行类,让你可以在画布上画画。
4、Android.text 用来显示和解析文本的文本处理工具。
5、Android.database 当使用数据库的时候,提供处理游标(cursor)所要求的低级类。
6、Android.content 内容API通过处理资源、内容提供器和包的服务,来管理数据访问和发布。
7、Android.view View是核心用户界面类。所有的用户界面元素都是使用一系列View来构造的,用来提供交互组件。
8、Android.widget 构建在View包的基础上,Widget类是已经创建好的用户界面元素,可以直接在应用程序中使用,他们包含列表、按键和布局。
9、Com.google.android.maps 一个高级API,提供了对本地地图控件的访问,可以再应用程序中使用这些控件,它包括MapView控件以及用来对嵌入的地图进行注释和控制的Overlay和MapController类。
10、Android.app 一个提供了对应用程序模型进行访问的高级包。应用程序包包含活动(Acitivity)和服务(Service)API,它形成所有应用程序的基础。
11、Android.provider 为了方便开发人员对某些标注的内容提供器进行访问,provider包提供了一些类,从而提供了对所有的android发行版中包含的标准数据库的访问。
12、Android.telephony telephony Api允许直接与蛇鞭的电话栈进行交互,让你可以直接打电话、监控电话状态以及收发SMS消息。
13、Android.webkit webKit 包提供了与基于Web的内容相关的API,包括一个WebView控件,可以再活动或许cookie管理器重嵌入一个浏览器。
除了Android API之外,android栈还包含了一些可以提供程序框架使用的c/c++库集合:
1、OpenGL 基于O喷GL ES ApI 的用来支持3D图形的库。
2、Free Type 支持位图和矢量字体渲染。
3、SGL 用来提供2D图形引擎的核心库。
4、Libc 为基于Linux的嵌入式设备而优化的标注C库。
5、SQLite 用来存储数据的轻量级关系数据库引擎
6、SSL 用来支持使用安全套接字层(Secure Sockets Layer)加密协议的安全Internet通信。
7、Android.location 基于位置的服务API让应用程序可以访问到设备当前的物理位置,不管使用什么样硬件或技术来确定位置,基于位置的服务都提供了对位置信息的通用访问。
8、Android.media 媒体API提供了对音频和视频文件的回收和录制的支持,包括留媒体。
9、Android.opengl android使用OpenGL ES API提供了强大的3d渲染引擎,这种酒可以使用它来创建动态的3D用户界面。
10、Android.hardware 当可用的时候,硬件API就会提供传感器硬件,包括摄像头、加速计和罗盘传感器。
11、Android.buetooth, android.net.wifi和android.telephony android也提供了对硬件平台的低级访问,包括蓝牙,wifi和电话硬件。

Apk结构文件

apk文件实际是一个zip压缩包,可以通过解压缩工具解开。
以下是我们用zip解开helloworld.apk文件后看到的内容,可以看到其结构跟工程结构有些类似,如下图所示:
|– AndroidManifest.xml
|– META.INF
| |– CERT.RSA
| |– CERT.SF
| |– MANIFEST.MF
|– classes.dex
|– res
| |– drawable
| | |–icon.png
| |– layout
| | |–main.xml
1.Manifest 文件
AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。
2.META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个api包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在Android平台上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系 统的安全。
3.classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。
Android模拟器中提供了一个dex文件的反编译工具dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。
目前在网上能找到的另一个dex文件的反编译工具是Dedexer。Dedexer可以读取dex格式的文件,生成一种类似于汇编语言的输出。这种输出与jasmin[]的输出相似,但包含的是Dalvik的字节码。
4.res 目录
res目录存放资源文件。
5.resources.arsc
编译后的二进制资源文件。

SDK目录及它们的作用

1、add-ons
这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。
2、docs
这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。
3、market_licensing
作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。
4、platforms
是每个平台的SDK真正的文件,里面会根据APILevel划分的SDK版本,这里就以Android2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。
5、platform-tools
保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。
6、samples
samples是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主题开发Home则是android m5时代的主题设计原理。
7、tools
作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库,而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。

Dalvik虚拟机

Dalvik虚拟机它对内存的高效使用,和在低速CPU上表现出的高性能,令人刮目相看。它和标准的Java虚拟机是不同的。
1、Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。
2、在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码;
Android应用虽然也是使用Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具(dx)将应用所有的CLASS文件转换成一个DEX文件,最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。

Focus on technology, enjoy life!—— 杨焕州 QQ:804212028
原文链接:http://blog.csdn.net/y18334702058/article/details/44624305

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值