一 、Android 系统架构

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

1.Linux 内核层

Android 系统是基于 Linux 2.6 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi 驱动、电源管理等。

2.系统运行库层

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

  • SQLite 库提供了数据库的支持
  • OpenGL|ES 库提供了 3D 绘图的支持
  • Webkit库提供了浏览器内核的支持等。

同样在这一层还有 Android 运行时库,它主要提供了一些核心库,能够允许开发者使用 Java 语言来编写 Android 应用。另外 Android 运行时库中还包含了 Dalvik 虚拟机, 它使得每一个 Android 应用都能运行在独立的进程当中,并且拥有一个自己的 Dalvik 虚拟机实例。相较于 Java 虚拟机,Dalvik 是专门为移动设备定制的,它针对手机内存、
CPU 性能有限等情况做了优化处理。

3.应用框架层

这一层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API 来构建自己的应用程序。

4.应用层

所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从 Google Play 上下载的小游戏,当然还包括你自己开发的程序。

二、安卓的目录结构

1.src

毫无疑问,src 目录是放置我们所有 Java 代码的地方,它在这里的含义和普通 Java 项目下的 src 目录是完全一样的,展开之后你将看到我们刚才创建的 HelloWorldActivity 文件就在里面。

2.gen

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

3.assets

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

4.bin

这个目录你也不需要过多关注,它主要包含了一些在编译时自动产生的文件。其中会有一个你当前项目编译好的安装包,展开 bin 目录你会看到 HelloWorld.apk,把这个文件拷到手机上就可以直接安装了。

5.libs

如果你的项目中使用到了第三方 Jar 包,就需要把这些 Jar 包都放在 libs 目录下,放在这个目录下的 Jar 包都会被自动添加到构建路径里去。你可以展开上图中 Android 4.0、Android Private Libraries、Android Dependencies 这些库,其中显示的 Jar 包都是已经被添加到构建路径里的。

6.res

这个目录下的内容就有点多了,简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下,前面提到的 R.java 中的内容也是根据这个目录下的文件自动生成的。当然这个目录下还有很多的子目录,图片放在 drawable 目录下, 布局放在 layout 目录下,字符串放在 values 目录下,所以你不用担心会把整个 res 目录弄得乱糟糟的。

7.AndroidManifest.xml

这是你整个 Android 项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明,也可以重新指定你创建项目时指定的程序最低兼容版本和目标版本。由于这个文件以后会经常用到,我们用到的时候再做详细说明。

8.project.properties

这个文件非常地简单,就是通过一行代码指定了编译程序时所使用的 SDK 版本。

三、安卓的目录结构

所有以drawable 开头的文件夹都是用来放图片的,所有以 values 开头的文件夹都是用来放字符串的,
layout 文件夹是用来放布局文件的,menu 文件夹是用来放菜单文件的。

之所以有这么多 drawable 开头的文件夹,其实主要是为了让程序能够兼容更多的设备。在制作程序的时候最好能够给同一张图片提供几个不同分辨率的副本,分别放 在这些文件夹下,然后当程序运行的时候会自动根据当前运行设备分辨率的高低选择加载哪 个文件夹下的图片。当然这只是理想情况,更多的时候美工只会提供给我们一份图片,这时你就把所有图片都放在 drawable-hdpi 文件夹下就好了。

四、Android 的日志工具 LogCat

1.Log.v()

这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是
Android 日志里面级别最低的一种。

2.Log.d()

这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助 的。对应级别 debug,比 verbose 高一级。

3.Log.i()

这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮 你分析用户行为的那种。对应级别 info,比 debug 高一级。

4.Log.w()

这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好 去修复一下这些出现警告的地方。对应级别 warn,比 info 高一级。

5.Log.e()

这个方法用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error,比 warn 高一级。

安卓学习 之 概述(一)相关推荐

  1. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  2. 安卓学习笔记13:安卓触摸事件

    文章目录 零.学习目标 一.安卓触摸事件概述 1.触摸分类 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 二.安卓单点触摸 三.教学案例--通过单点触摸移动米老鼠 (一)运行效果 ( ...

  3. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  4. 安卓学习日志 Day11 — JSON 解析

    文章目录 概述 USGS 网站 导入项目 JSON JSON 处理 Unix 时间 位置信息拆分 震级信息 震级显示一位小数 震级的圆圈背景 改进界面 添加地震Intent 总结 参考 概述 我们将设 ...

  5. .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示

    原文:.Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示 xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块:•android中的io ...

  6. 安卓学习专栏——百度地图(6)移动到我的位置(图文+代码)

    步骤 系列文章 前言 介绍api 实现效果 activity_main.xml AndroidManifest.xml MainActivity.java(修改) 附录.参考资料 下载资源 总结 系列 ...

  7. 【安卓学习之互动直播】 腾讯云直播 1 - 注册/登录/个人信息

    █ [安卓学习之互动直播] 腾讯云直播 1 - 注册/登录/个人信息 █ 相关文章: ● [安卓学习之互动直播] 腾讯云直播 1 - 注册/登录/个人信息 ● [安卓学习之互动直播] 腾讯云直播 2 ...

  8. 【安卓学习之常见问题】百度地图卫星地图精度不够

    █ [安卓学习之常见问题]百度地图卫星地图精度不够 █ 系列文章目录 提示:这里是收集了和文件分享有关的文章 [安卓学习之常见问题]android路径及文件问题 [安卓学习之常见问题]文件分享–文件不 ...

  9. 安卓学习专栏——安卓报错Version 28 (intended for Android Pie and below) is the last version of the legacy suppor

    步骤 系列文章 前言 1.报错效果 2.修改方法 总结 系列文章 提示:转到安卓学习专栏,观看更多内容! 点我直达–>安卓学习专栏 前言 'com.android.support:appcomp ...

最新文章

  1. javascript中关于作用域和闭包
  2. bootloader搞定,1.67秒!
  3. 04-老马jQuery教程-DOM节点操作及位置和大小
  4. ethercard php_关于EtherCard的webClient代码分析
  5. C++实现链栈的基本操作
  6. mysql定时发送慢日志到邮件
  7. APUE读书笔记-04文件和目录(5)
  8. PS打造电影金属字体
  9. 网吧计费管理系统(武汉理工大学大一下实验(C语言版源码))
  10. 数据库、数据湖、数据仓库、湖仓一体、智能湖仓,分别都是什么鬼
  11. 华硕电脑连接不上wifi_华硕电脑不能连接wifi怎么办
  12. python 打开网页并截图_python 使用默认浏览器打开,截图内容,并识别内容
  13. 黄油刀的配置与使用——个人学习记录
  14. Padavan老毛子的二级路由,怎样设置与主路由在同一网段
  15. 联想T460p加装固态硬盘
  16. radius pap 加/解密算法实现-golang
  17. k8s 集群之使用 nfs 网络存储挂载外部目录和文件
  18. AD中PCB布局与布线的一般原则
  19. 搜索引擎系统学习与开发实践总结
  20. Wio Terminal 读取 AHT10 传感器

热门文章

  1. 一个DDOS病毒的分析(二)
  2. MFC六大核心机制之三:动态创建
  3. 面试前,我们要复习多少Redis知识点?
  4. 当我们在谈论内存时,我们在谈论什么
  5. 视频加速方案的最优解 - Xilinx硬件加速技术专场
  6. RTMP之后,SRT与QUIC
  7. 音视频技术开发周刊 53期
  8. C/C++学习之路_七: 内存管理
  9. 写给前端工程师的 Flutter 详细教程
  10. 微服务架构系列二:密码强度评测的实现与实验