Andriod知识图谱、开发工具 | 青训营笔记

235 阅读4分钟

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

Android知识图谱和开发工具

课程重点

  • 移动生态
  • 通过交付认识Android知识图谱
  • Android系统的层次划分和apk构成
  • 开发工具

从宏观讲安卓

移动生态

人通过手机了解世界。人与手机和软件之间的关系,本质上际上是人和人的关系。客户端开发直接提供App和信息,是离客户最近的研发。产品经理向用户收集需求,从世界搜集信息,基于一定的组织规则,提供需求给客户端研发。客户端实现交互、功能,服务端提供内容、数据。客户端与服务端组合形成安装包,通过QA测试后交付使用。

手机在最近十几年才成为获取信息的最主要媒介。2007 iPhone,2008 Android。

App赛道的宽度可以是用户平均每天在App中消耗的时间,我想这是注意力资源的占用比例。客户端要争取的唯一资源是用户的注意力。
用户花费时长:短视频 > 社交 > 咨询 > 长视频 > 游戏 > 购物 > 中视频 > 阅读 > 生活。该排序不代表产品体验和公司市值。

Android知识图谱 & 交付的含义

交付有什么层次、什么技能点,如何形成完整的知识图谱?

在公司内面向的用户:对外(用户)——自身——对内(公司) 对外:为用户创造价值 对内:成本,对接 自身:自身也是产品,自身的技术品牌

对外

第一层交付:页面 + 逻辑 + 数据。轮盘模拟,在用户转动之前,是否中奖的数据就已经通过网络请求获取到了。

简单交付{
    页面: [Android基础, 复杂View],
    逻辑: [语言, 代码结构],
    数据: [网络, 存储]
}

第二层交付:多样性需求
其中每一项都能支撑一个产业

多样性需求{
    视频{
        [视频格式, 编码解码],
        视频创作
    },
    直播{
        直播录制,
        直播流
    },
    AR,
    图像{
        图像格式,
        拍照美颜
    },
    游戏
}

第三层交付:体验+质量+安全+个性化 耗电量、违规信息管控、羊毛党有多少、

深层次需求{
    体验{
        耗时,
        卡顿,
        资源占用
    },
    质量{
        崩溃,
        错误
    },
    安全{
        刷量,
        泄露,
        隐私
    },
    个性化{
        端智能,
        精细场景
    }
}

注:
①很多崩溃发生在安卓底层。
②端智能:把云端计算搬到客户端

对内

第一层交付:单人效能

单人效率{
    编译{
        Gradle编译,
        编译流程优化
    },
    CICD{
        发布,
        集成
    },
    工具{
        云构建,
        机架
    }
}

第二层交付:团队效能 多人提交可能导致团队效能折损

团队效能{
    工程架构{
        组件化,
        代码重构
    },
    业务重构{
        代码架构,
        开发范式
    },
    流程管理{
        定容,
        管理平台
    },
    跨平台{
        Flutter,
        Lynx
    }
}

自身——打造个人技术品牌

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

基本技能{
    Android系统{
        基本功能开发,
        了解FrameWork,
        了解系统
    },
    语言熟练{
        基本特性,
        语法和高效写法
    },
    基本素养{
        代码质量,
        业务理解,
        协同合作
    }
}

第二层交付:打造自身的技术高度

必须在某项或某几项技术上比较突出。“刘翔只比我快几秒”,别忽视细微差异。

长板:在某个领域达到行业的前20%

技术高度{
    系统底层{
        Android原理,
        linux内核,
        Android Runtime
    },
    架构设计{
        大型App架构,
        复杂工程管理
    },
    业务能力{
        大型项目协同,
        组织管理
    }
}

第三层交付:培养自己的综合素养

综合素养{
    思维{
        系统性思维,
            结构化思维,
            批判性思维
    },
    认知{
        个人认知,
        自控力
    },
    开放{
        技术好奇心,
        持续学习,
        开源
    }
}

培养综合素质,要先做到不逃避思考和挑战。

认识Android系统

层次

  • 系统应用层
  • Java API Framework
  • C/C++原生库、Android Runtime
  • 硬件抽象层
  • Linux 内核

计导课程中有类似的分层。

APK的构成

  • AndroidManifest.xml: 生命App中四大组件以及权限
  • class.dex: Java、Kotlin代码
  • res文件夹:资源文件夹、存放图片、颜色、字符串和UI布局
  • lib文件夹:主要存放C/C++代码编译成的so文件
  • META-INF文件夹:存放签名和证书,用于校验和安全

开发工具

Android Studio,下载和配置参考官方文档即可。

Git{
    Workspace: 工作区,本地电脑存放项目文件的地方,
    Remote Repository: 远程仓库,代码存放的地方,
    Local Repository: 本地仓库,本地存放代码的地方,
    Index/Stage: 本地仓库的暂存区
}

Git的使用

  1. 本地设置
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
  1. 创建本地仓库
git init            // 建立仓库
git clone <url>     // clone到本地
git pull
  1. 建立本地分支
git branch <branch-name>    // 创建
git checkout <branch-name>  // 切换
  1. 提交
git add .
git commit -m "commit_info"
git push

其他建议

在客户端可以找到几乎所有技能的试验场。

打工人应该精通某种技能。

在移动互联网要不断接受挑战。