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

115 阅读3分钟

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

根据老师讲解的内容以及学习资料一总结😄


  • 2007年初代 iPhone📴
  • 2008年第一款 Android 商用手机

产品经理👨:从获取需求,从 世界 收集信息

知识图谱

  • 面向的用户主要分为三类(交付的含义):

    1. 对外(用户):为用户创造价值

      三层交付

      1. 第一层(简单交付):页面+逻辑+数据

      2. 第二层(多样性需求):比如视频、图像、游戏等

      3. 第三次(深层次需求):体验+质量+安全+个性化

        1. 体验包括:耗时、卡顿、资源占用

        2. 质量包括:崩溃、错误

        3. 安全包括:刷量、泄漏、隐私

        4. 个性化包括:端智能、精细场景

    2. 对内(公司):对内是成本,对外是收益

      减少公司成本

      两层交付

      1. 第一层:单人效益

        • 编译
        • CICD
        • 工具
      2. 第二层:团队效能

        • 工程架构:组件化、代码重构
        • 业务架构:代码架构、开发范式
        • 流程管理:定容、管理平台
        • 跨平台:Flutter、Lynx
    3. 自身(个人):自身也算是产品

      打造技术品牌

      三层交付

      1. 第一层:满足交付的基本技能

        • 了解Android系统
        • 熟悉语言
        • 基本素养
      2. 第二层:打造自身技术高度

        • 系统高层
        • 架构设计
        • 业务能力
      3. 第三层:培养综合素养

        • 思维
        • 认知
        • 开放:技术好奇心、持续学习、开源

Android系统

Android平台架构图

img

1.系统应用层

是各app的最上层,我们自己开发的和系统自带的app都在此层,部分系统app的功能可直接调用,例如打电话、发短信,自己开发的有的也行

2.Java API层

本层是Android Framework 提供给开发者的接口,我们可以基于此打造app

主要技术栈:基础的交付内容(页面+逻辑+页面)

3.原生C/C++层和Android Runtime

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

4.硬件抽象层(HAL)

主要提供硬件的封装,如蓝牙等。当框架API要求访问设备硬件时,Android系统将为该硬件组件加载库模块

5.Linux 内核

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

APK构成

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

开发工具

Android

Android开发用的IDE是Android Studio

Git

workplace工作区,本地电脑存放项目文件的地方,自己指定位置

Remote Repository远程仓库,存放代码

Local Repository本地仓库,也就是把代码拉取到本地存放的地方

Index/Stage:本地仓库的暂存区