安卓系统及客户端概览 | 青训营笔记

230 阅读7分钟

安卓系统及客户端概览 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第1天

本人小白,请多多关照

一、客户端开发面临的角色包括

1.对外:创造用户价值

第一层交付:页面+逻辑+数据
第二层交付:多样性需求
第三层交付:体验+质量+安全+个性化

2..对内:节省成本

第一层:单人效率
第二层:团队和公司效能

3.对自身:打造技术品牌

第一层交付:满足交付的基本技能
第二层交付:打造自身的技术高度
第三层交付:培养自己的综合素养

二、Android 系统及客户端概览

Android平台架构图

image.png

系统应用层

这一层就是各App所在的最上层了,我们自己开发的App和系统自带的App都在这一层,两种App本质上没有太大
区别。一些系统的App提供的功能我们可以直接调用,比如打电话、发短信等,当然我们自己开发的app也可以给
其他产品提供类似的调用功能

Java API 层

这层就是Android Framework提供给开发者的接口,我们可以基于这些接口打造各自的App。在这一层主要
的技术栈就是最基础的交付内容,包括页面+逻辑+页面,一些多媒体相关的需求也有成熟的api可以直接使用。

原生 C/C++层

一些核心的系统服务和组件是C/C++编写的,我们可以用Android NDK直接从原生代码访问某些原生平台库。
从这一层往下,一些多样化的需求就可以被满足的很好,比如音视频编解码、安全、质量、体验等。

Android Runtime

这一层就会涉及虚拟机的知识,在一层会把DEX字节码进行编译,优化执行效率。
在一层我们可以做一些体验相关的优化,让代码运行更高效。所需要的技术门槛也就更高一些。

硬件抽象层 (HAL)

主要提供硬件组件的封装,包括相机、传感器和蓝牙等。当框架 API 要求访问设备硬件时,Android 系统将
为该硬件组件加载库模块。

Linux 内核

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例
如线程和内存管理。

使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

APK的构成

  • AndroidManifest.xml :生命app中四大组件,以及权限等
  • classes.dex :所有编写的java、
  • res文件夹 :资源文件夹,包括图片、颜色、字符串,以及搭建的XML布局文件
  • META-INF文件夹:存在签名和证书,用于校验和安全
  • lib文件夹:主要是存放C/C++代码编译成的so文件

/

三、课前准备

1.Git

Git的安装与方式

git分为 集中式版本控制 和 分布式版本控制
    SVN是集中式版本控制系统
    版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑
    首先要从中央服务器得到最新的版本,然后工作,完成工作以后,需要把自己做完的活推送到中央服务器。
    Git是分布式版本控制系统
    没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。

基本的linux命令学习

image.png

Git基本理论(核心)

Git工作本地有三个工作区域:
工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。
如果再加上远程的git仓库(Remote Directory)就可以分为四个工作区域。
文件在这四个区域之间的转换关系如下

image.png

远程仓库使用

注册码云,将远程服务器上的仓库完全镜像一份至本地
设置本机绑定SSH公钥,实现免密码登录

其他细节

image.png

Image.png

2.Android Studio

Android


一、简单控件


    文本显示

  • 设置文本的内容
  • 设置文本的大小

原来文本大小存在不同的字号单位,XML文件要求在字号数字后面写明单位类型,常见的字号单位主要 有px、dp、sp 3种,分别介绍如下。

1.px px是手机屏幕的最小显示单位,它与设备的显示屏有关。一般来说,同样尺寸的屏幕(比如6英寸手 机),如果看起来越清晰,则表示像素密度越高,以px计量的分辨率也越大。

2.dp dp有时也写作dip,指的是与设备无关的显示单位,它只与屏幕的尺寸有关。一般来说,同样尺寸的屏 幕以dp计量的分辨率是相同的,比如同样是6英寸手机,无论它由哪个厂家生产,其分辨率换算成dp单 位都是一个大小。

3.sp sp的原理跟dp差不多,但它专门用来设置字体大小。手机在系统设置里可以调整字体的大小(小、标 准、大、超大)。设置普通字体时,同数值dp和sp的文字看起来一样大;如果设置为大字体,用dp设置 的文字没有变化,用sp设置的文字就变大了。

字体大小采用不同单位的话,显示的文字大小各不相同。例如,30px、30dp、30sp这3个字号,在不同 手机上的显示大小有所差异。有的手机像素密度较低,一个dp相当于两个px,此时30px等同于15dp; 有的手机像素密度较高,一个dp相当于3个px,此时30px等同于10dp。假设某个App的内部文本使用字 号30px,则该App安装到前一部手机的字体大小为15dp,安装到后一部手机的字体大小为10dp,显然 后一部手机显示的文本会更小。

  • 设置文本的颜色

    视图基础

  • 设置视图的宽高

手机屏幕是块长方形区域,较短的那条边叫作宽,较长的那条边叫作高。App控件通常也是长方形状, 控件宽度通过属性android:layout_width表达,控件高度通过属性android:layout_height表达,宽高的 取值主要有下列3种:

(1)match_parent:表示与上级视图保持一致。上级视图的尺寸有多大,当前视图的尺寸就有多大。

(2)wrap_content:表示与内容自适应。对于文本视图来说,内部文字需要多大的显示空间,当前视 图就要占据多大的尺寸。但最宽不能超过上级视图的宽度,一旦超过就要换行;最高不能超过上级视图 的高度,一旦超过就会隐藏。

(3)以dp为单位的具体尺寸,比如300dp,表示宽度或者高度就是这么大。

在XML文件中采用以上任一方式均可设置视图的宽高,但在Java代码中设置宽高就有点复杂了,首先确 保XML中的宽高属性值为wrap_content,这样才允许在代码中修改宽高。接着打开该页面对应的Java代 码,依序执行以下3个步骤:

步骤一,调用控件对象的getLayoutParams方法,获取该控件的布局参数,参数类型为 ViewGroup.LayoutParams。

步骤二,布局参数的width属性表示宽度,height属性表示高度,修改这两个属性值,即可调整控件的宽 高。

步骤三,调用控件对象的setLayoutParams方法,填入修改后的布局参数使之生效。

  • 设置视图的间距
  • 设置视图的对齐方式

    常用布局

  • 线性布局LinearLayout
  • 相对布局RelativeLayout
  • 网格布局GridLayout
  • 滚动视图ScrollView

    按钮触控

  • 按钮控件Button
  • 点击事件和长按事件
  • 禁用与恢复按钮

    图像显示

  • 图像视图ImageView
  • 图像按钮ImageButton
  • 同时展示文本和图像