一.apk是android应用程序的安装包,是个zip的压缩文件
apk主要有以后几个部分组成
1.mate-inf 从java jar引入包信息的描述
2.res/ 资源文件目录
3.libs ndk编出来的os库
4.androidmanifest 配置文件
5.class.dex 最终生成的dalvik字节码
6.resources.ars 编译后的二进制资源文件
二.android的运行原理
android应用程序运行时都会有一个davlik虚拟机实例.代码在虚拟机的解释下运行,提高了效率.
每个虚拟机实例都是一个独立的进程.android应用线程对应一个linucx线程.这样虚拟机就可以
依赖系统线程的调度和管理机制.由于应用在不同的进程中执行,并且不同的来源应用使用不同
的linux用户.这样大大提高了安全性和独立性.Zygote是一个虚拟进程同时,同时也是一个虚拟机
实例.Zygote会在系统启动时进行初始化工作.每当有一个新的应用程序启动时.Zygote会复制自己,
为应用程序提供一个虚拟机,这样大大的提高了效率.另外,对于一些系统只读库,Zygote和虚拟机实例
会公用一块内存区域.这样大大节省了内存开支.apk被发布到手机上之后.dex会放到缓存中,被优化
成dey,被直接运行.如果包不发生变化.dey不会重新生成.
sun jdk将java文件编译成.class文件.DX将class文件变为dex文件.然后appt将dex,资源文件,androidmanifest配置文件打包成apk.
三.android中常用的包以及作用
android.app 提供android的运行环境,程序高级模型
android.content 包含各种的对设备上的数据进行访问和发布的类
android.database :通过内容提供者浏览和操作数据库
android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.
android.location :定位和相关服务的类
android.media :提供一些类管理多种音频、视频的媒体接口
android.net :提供帮助网络访问的类,超过通常的java.net.* 接口
android.os:提供了系统服务、消息传输、IPC机制
android.opengl :提供OpenGL的工具
android.provider:提供类访问Android的内容提供者
android.telephony :提供与拨打电话相关的API交互
android.view:提供基础的用户界面接口框架
android.util:涉及工具性的方法,例如时间日期的操作
android.webkit:默认浏览器操作接口
android.widget:包含各种UI元素(大部分是可见的)