Android学习初步

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系统下注册表的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值