Android简介

Android系统架构

(图片源自维基百科)

Android大致分为四层架构,五块区域。

  1. Linux内核层

Android系统基于Linux2.6,这一层为Android设备的各种硬件提供底层的驱动,如显示驱动,银屏驱动,照相机驱动,蓝牙驱动等。

  2. 系统运行库层

通过一些C/C++库来为Android系统提供主要的特性支持

同样在这一层还有Android运行时库,它提供了一些核心库,允许开发者使用java语言来编写Android应用。另外Android运行时库还包含了Dalvik虚拟机,使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。

  3. 应用框架层

主要提供了构建应用程序时可能用到的各种API

  4. 应用层

所有安装在手机上的应用程序都属于这一层

Android四大组件

Android系统四大组件是活动(Activity),服务(Service),

广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。

Android项目目录结构

  1. src

src目录是放置所有Java代码的地方

  2. gen

这个目录里的内容都是自动生成的,主要有一个R.java文件。在项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。

  3. assets

主要可以存放一些随程序打包的文件,在程序运行时可以动态读取到这些文件的内容。另外如果在程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都放在这个目录下

  4. bin

包含了一些在编译时自动生成的文件,其中会有一个当前项目编译好的安装包(.apk)

  5. libs

如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会自动添加到构建路径里去。

  6. res

在项目中使用到的所有图片,布局,字符串等资源文件都要存放在这个目录下,R.java中的内容也是根据这个目录下的文件自动生成的。

  7. AndroidManifest.xml

这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明。

  8. project.properities

通过一行代码制定了编译程序时所使用的SDK版本

Android项目中的资源

  1. 以values开头的文件都是用来放字符串的。

  以drawable开头的文件都是用来放图片的。

  以layout开头的文件都是用来放布局的。

  以menu开头的文件都是用来放菜单文件的。

  如果美工只提供一份图片,就把所有图片放在drawable-hdpi文件夹下。

  2. Android程序的设计讲究逻辑和视图的分离,因此不推荐在活动中直接编写界面,更通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。

  3. Android不推荐在程序中对字符串进行硬编码,更好的一般做法是把字符串定义在res.values.strings.xml里,然后在布局文件或代码中引用。

  4. 引用字符串的两种方式

在代码中通过R.string.hello_world可以获得该字符串的引用

在XML文件中通过@string/hello_world可以获得该字符串的引用

Android的日志工具Log

  1. Android的日志工具是Log(android.util.Log),这个类提供了如下几个方法(方法中传入两个参数,第一个参数是tag,一般传入当前的类名就好,主要用于对打印信息进行过滤。第二个参数是msg,即想要打印的具体内容):

1)    Log.v()

打印最为琐碎的,意义最小的日志信息

2)    Log.d()

打印一些调剂信息

3)    Log.i()

打印一些比较重要的数据

4)    Log.w()

打印一些警告信息,提示程序在这个地方可能会有潜在的风险

5)    Log.e()

打印程序中的错误信息

  2. 如果LogCat中没有打印出任何信息,有可能是因为你当前的设备失去焦点了,这是你只需进入DDMS视图,在Devices窗口中点击一下你当前的设备,打印信息就会出来。

  3. 使用Log而不使用System.out打印日志

System.out打印日志不可控制,打印时间无法确定,不能添加过滤器,日志没有级别区分

《第一行代码》之——1.Android简介的更多相关文章

  1. 通过《第一行代码》学习 Android 开发

    第一行代码 Android --第 2 版-- 郭霖 著 第 1 章:开始启程--你的第一行 Android 代码 •1.2 手把手带你搭建开发环境  Android Studio 的安装及配置  A ...

  2. 《第一行代码——Android》

    <第一行代码——Android> 基本信息 作者: 郭霖 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115362865 上架时间:2014-7-14 出版日期:2014 ...

  3. Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  4. 第一行代码Android(第3版).pdf下载

    2020年人民邮电出版社出版的图书 <第一行代码Android(第3版)>是2020年4月人民邮电出版社出版的图书,作者是郭霖. 封面: 内容简介: <第一行代码 Android 第 ...

  5. 【java学习系列】 Android第一本书《第一行代码》

    开始Java的学习,从Android,开始吧.<第一代码>开始阅读和调试demo例子. 下面是 <第一行代码>的思维导图:

  6. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  7. 第一行代码 Android 第二版到货啦

    今日android第一行代码[第二版]已到,收获的季节到了 先看一下封面 书签: 以后就把空闲时间送给它吧 先来看一下本书的目录: 第1章 开始启程--你的第1行Android代码 第2章 先从看得到 ...

  8. Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  9. Android Studio 单刷《第一行代码》系列目录

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  10. Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

随机推荐

  1. 开方运算的DSP实现

    //=============================================== //函数名:VSqrt3 //功能:  实现对32位定点数的开方 //性能:  60M主频28015 ...

  2. Spring.之.报错:Caused by: java.lang.IllegalArgumentException: No Spring Session store is configured: set the 'spring.session.store-type' property

    Spring.之.报错 No Spring Session store is configured springboot在启动的时候报如下错误: Error starting ApplicationC ...

  3. 5+App 基于HTML、JS、CSS编写的运行于手机端的App(DCloud开发)

    HTML5 Plus移动App(5+App) 工具: 开发工具HBuilder下载下载地址 开发工具HBuilderX下载下载地址(替代HBuilder) 框架: uni-app :是一个使用 Vue ...

  4. Ubuntu 解压和压缩总结

    1..rar文件 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具非常简单,下面是具体方法: ubuntu 下r ...

  5. 单元测试神器Mockito

    Mockit是一种mock工具/框架.mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应 1.工程中引入Mockito #以gradle的方式为例 testCompile("o ...

  6. Crontab 入门

    参考网址: http://www.centoscn.com/CentOS/help/2014/0820/3524.html 简单命令 service crond restart //重启crontab ...

  7. JavaScript 实现回文解码

    题目也是源自今日头条前端工程师笔试题.题目描述: 现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子 ...

  8. IOS下的 click 点击失效

    当委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. demo: & ...

  9. mybatis深入理解(七)-----MyBatis缓存机制的设计与实现

    缓存设计 MyBatis将数据缓存设计成两级结构,分为一级缓存.二级缓存: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存.一级缓存是 ...

  10. pip在多个python版本中将包安装到制定版本

    $ pip install -t /usr/local/lib/python3./site-package/ beautifulsoup4 利用pip install -t 制定到具体位置