您的位置:首页 > 移动开发 > Android开发

Android学习初步

2016-05-24 11:37 316 查看

Android学习初步

刚刚开始学习android,简单记录一下学习过程 ~ ~

Android体系结构

Linux Kernel

Linux Kernel是Android系统的内核,也就是Android手机系统的底层,由C语言编写,管理着手机内的各种硬件的驱动,比如USB驱动,相机驱动,蓝牙驱动等。

Libraries

Libraries是用C语言编写的对硬件进行操作的一套框架,相当于是对Linux Kernel做了一层封装,包含媒体播放,数据库管理,界面绘制等功能

Android Runtime

一种对JVM进行过优化的java虚拟机,Dalvik Virtual Machine,构建在底层的C语言之上,是Java语言运行的环境

Application Framework

应用框架层,用java语言编写,主要功能是对Android系统的上层功能的管理,比如窗口管理,程序包管理,程序资源管理

Applications

应用层,基于Application Framework。一般情况下,开发者都是基于该层和Application Framework进行开发。

Android Dalvik虚拟机和JVM的区别

上一节提到过Android Runtime,其实它由Java的核心类库和DVK(Dalvik虚拟机)构成。由于JVM(Java虚拟机)运行较慢,所以DVK是对JVM的一种优化,具体区别有几点

1、将.java文件编译成字节码的过程不同。

JVM编译过程:JVM先将java源文件编译成class字节码文件,然后将其打包成jar。

DVK编译过程:DVK的不同在于他将class字节码文件进行了优化,生成了.dex文件,并且将其进程odex化。所谓的odex化是指虚拟机在加载字节码之前预先将其提取出来,以加速程序的加载和运行。

2、两者的架构不同

JVM是基于栈的架构,而DVM是基于寄存器的架构

在Android 4.0之后,google又提出了新的ART虚拟机,又是一次全新的优化。

adb介绍

adb 全称android debug bridge,相当于起到了电脑和手机设备的连接作用,通过adb我们直接可以对手机的内部文件进行操纵,比如安装,卸载和文件的转移复制等。当然,如果你的SDK开发工具已经下载的话,那么你就会在platform-tools文件夹下找到一个可执行文件adb.exe,这个就是adb。

有时候我们需要在命令行中对手机进行操作,为了方便,最好给adb.exe配置一个path环境变量。

adb在命令行中的基本用法:

adb devices 查看当前运行的设备

adb start-server 开启adb服务

adb kill-server 关闭adb服务

adb logcat 查看Log

adb -s<手机名字> shell 进入手机根目录

这里操作类似于Linux系统:

dir 获得手机根目录路径

ls 列出所有文件目录

cd 进入下一个文件夹

exit 退出手机根目录

adb install 将要被安装的应用程序路径

adb unistall 将被卸载掉的应用程序包名

adb pull “手机文件路径” “本地存放路径” 将手机端的文件复制到本地

adb push “本地文件路径” “手机存放路径” 将本地文件复制到手机端

emulator -avd <模拟器名称> 启动模拟器,需要配置emulator

ctrl + F11 切换横竖屏

应用程序打包安装过程

1、打包过程

.java文件被编译成.dex

所有的.xml格式文件被编译成二进制

生成一个资源索引表,并将其编译成二进制

将上述文件压缩成后缀为apk的文件

2、加载过程

将apk文件加载都手机目录的“/data/local/tmp/”目录下

3、安装过程

将刚刚加载到“/data/local/tmp/”目录下的apk文件剪切,重命名为“应用程序包名” + “-1.apk”,复制到“/data/app/”目录下。

在“/data/data”目录下创建一个文件夹,用程序的包名命名,用来存储该程序的相关数据

在package.xml文件和packages.list文件中分别添加一条记录。package.xml和packages.list是“/data/system/”目录下的两个文件,作用是什么呢??我刚刚在讲安装过程中是不是提到了在“/data/app/”目录下复制了一个apk,又在“/data/data/”目录下创建了一个文件夹?没错,package.xml和packages.list的作用在于将这个apk和这个文件夹关联起来,当然了,你可以理解为windows系统下注册表的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 手机系统