第一章 安卓开发整体介绍 | 《第一行代码》笔记

第一章 安卓开发整体介绍(启程)

欢迎光临我的个人博客

1. 简介

1.1 系统架构

Android架构图

1.1.1 Linux内核层
  • 允许写底层硬件驱动
  • 依靠Linux执行底层功能,例如线程和低层内存管理
1.1.2 硬件抽象层(HAL)
  • 为特定类型硬件实现界面,例如相机和蓝牙模块。在API框架层要访问该硬件时,Android系统就是向API框架层提供此界面。
1.1.3 系统运行库层
  • 本层中系统组件等(例如ART和HAL)使用到的是C/C++库提供的特性支持。例如SQLite提供的数据库,OpenGL ES 提供的2D/3D绘图,Webkit提供的浏览器内核。
    如果在应用层需要使用到C/C++的代码,则需要Android NDK来访问这些原生库。

  • 除了上述的库,还有Android运行时库。Android的核心库中可提供Java API框架的大部分功能,我们也可以使用Java语言编Android应用。此外,Android还包含了一款虚拟机——ART(Android Runtime),在Android 5.0前使用的是Dalvik,现在的ART是Dalvik的改进版。ART使得每一个应用都能运行在独立的进程中。

  • ART 编写执行 DEX 文件,DEX可以在低内存设备上运行多个虚拟机,其是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。其中编译工具链(例如 Jack))将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运行。

ART特性
1. 预编译

Dalvik 中的应用每次运行时,字节码都需要通过即时编译器 JIT 转换为机器码,这会使得应用的运行效率降低。在 ART 中,系统在安装应用时会进行一次预编译(AOT,Ahead-Of-Time),将字节码预先编译成机器码并存储在本地,这样应用就不用在每次运行时执行编译了,运行效率也大大提高。

2. 垃圾回收算法

在 Dalvik 采用的垃圾回收算法是标记-清除算法,启动垃圾回收机制会造成两次暂停(一次在遍历阶段,另一次在标记阶段)。而在 ART 下,GC 速度比 Dalvik 要快,这是因为应用本身做了垃圾回收的一些工作,启动 GC 后,不再是两次暂停,而是一次暂停,而且 ART 使用了一种新技术(packard pre-cleaning),在暂停前做了许多事情,减轻了暂停时的工作量。

3. 64 位

Dalvik 是为 32 位 CPU 设计的,而 ART 支持 64 位并兼容 32 位 CPU,这也是 Dalvik 被淘汰的主要原因。

1.1.4 应用框架层(Java API框架)
  • 提供构建程序的各种API框架,Android系统自身会用到,我们开发应用也会用到
1.1.5 应用层
  • 本层包括系统自身的应用,也包括我们开发或者下载安装的应用。就是手机软件,是对使用者最直观的体现。

1.2 Android应用开发特性

  • 四大组件

Activity: 程序的页面
Service:后台服务,例如后台闹钟,自动定位
Broadcast Receiver:接收来自各处的广播
Content Provider:使得程序之间可以共享数据,例如读取电话簿的联系人

  • 各种系统控件,例如按钮输入框啥的
  • SQLite数据库,也可借用第三方库(LitePal)更容易上手
  • 多媒体,使用程序控制音乐、视频等
  • 定位,可借用定位开发很多功能

2. 开发工具

  • 现在的Android studio 已经更新到4的版本了,界面相比以前更美观,多了许多功能等,实际上手体验即可

3. 资源文件

3.1 无需过多关心的文件

  • .gradle 和.idea
  • build
  • gradle:支持gradle自下载
  • gradle.properties
  • gradlew/gradlew.bat:第一个mac/Linux系统的,第二个win系统的
  • xxx.iml:IDEA自生成
  • setting.gradle

3.2 .gitignore

  • 在这可指定啥目录不关联到git

3.3 local.properties

  • 本机的Android SDK路径,我之前把sdk安装到了d盘,那么这里就需要更改一下路径

3.4 app

  • build:不用理
  • libs:使用到第三方jar包的时候放这
  • androidTest:可在此对项目编写一些自动化测试
  • main/java:所有java代码
  • main/res:各种资源目录
  • main/AndroidManifest.xml:项目的配置文件,四大组件、各种权限都要在这里注册
  • test:另一种自动测试
  • .gitignore:和上边的作用一样
  • app.xml:IDEA自生成
  • build.gradle
  • proguard-rule.pro:指定代码的混淆规则,如果不希望代码被破解者容易阅读的话

3.5 build.gradle

  • AS是采用Gradle来构建整个项目的
3.5.1 外层

外层build.gradle

  • 由上图可以看出两处的repositories都包含google()和jcenter(),这是我们声明要引用这些代码仓库的开源项目
  • 接下来dependencies处使用classpath声明了一个插件,是因为需要使用这样一个Android插件来利用Gradle构建项目(Gradle不是专为Android开发的)
3.5.2 内层

内层build.gradle

3.6 AndroidManifest.xml

AndroidManifest.xml

3.7 res资源文件

res

4. 使用日志

按升序的log级别

  • Log.v():verbose级别
  • Log.d():debug级别
  • Log.i():info级别
  • Log.w():warn级别
  • Log.e():error级别
  • 小tips

    可以使用logd+Tab/Enter,快捷编写日志打印

    可以在外部使用lodt+Tab/Enter,快捷编写String TAG私有类

相关链接:

探索 Android 内存优化方法 - 掘金 (juejin.cn)

平台架构 | Android 开发者 | Android Developers

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值