Android App 开发技术图谱
wptr33 2024-12-14 15:33 13 浏览
引言:
今天偶然看到StuQ的技术图谱, 找了找竟然没有Android开发的. 想起之前自己弄了一个, 翻出来看看并不过时, 整理下发出, 大家共同进步.
图片比较大, 加载较慢, 请等待~~
Android_App_Skill_Map
1. 操作系统
Windows/MacOSX/Linux
2. 编程语言
Java
HTML/JS (Hybrid/Web App)
C/C++ (NDK)
SQL (DB)
Kotlin
3. 开发工具
3.1 IDE
Android Studio
Eclipse
3.2 调试工具
3.2.1 网络调试
Charles
Wireshark
Fiddler
tcpdump
Paw/Postman
3.2.2 内存分析
monitor
MAT
3.2.3 Android tools
adb
draw9patch
hierarchyviewer
uiautomatorviewer
3.3 版本管理
3.3.1 Git
Git命令
Github/GitLab
3.3.2 SVN
3.4 CodeReview
Gerrit
Github pull request
3.5 Bug/任务管理
Redmine
JIRA
Bugzilla
Teambition
Tower
3.6 编译工具
Gradle
3.7 持续集成
Jenkins
Travis CI
3.8 应用分发
蒲公英
fir.im
1. App基础
1.1 基本组件
Activity
Service
Content Provider
Broadcast Receiver
Intent/Intent Filter
App Manifest File
1.2 UI
Layouts
Widgets
Resources
Animations
设备适配
1.3 Connectivity
WiFi
Mobile网络
网络状态监听
1.4 MultiMedia
Audio/Video
Camera/Gallery
1.5 GPS&Location&Map
1.5.1 系统定位
GPS定位
Network定位
3rd Map定位
百度Map
高德Map
2. App进阶
2.1 Process&Thread
2.1.1 Process
Linux进程
App进程原理
2.1.2 AIDL
实现方式
原理
2.1.3 Handler/Looper/MQ/Thread
2.1.4 Loader
2.1.5 AsyncTask
2.2 性能优化
2.2.1 ANR
2.2.2 布局层级性能优化
2.3 内存优化
2.3.1 内存检测工具
2.3.2 内存分析工具
2.3.3 Bitmap优化
2.3.4 内存泄露查找及分析
2.5 网络优化
2.5.1 API优化
2.5.2 低网速下优化
2.5.3 流量使用优化
判断当前网络类型
使用缓存
2.6 单元测试
3. App高级
3.1 相关原理熟悉
3.1.1 Activity
启动流程
生命周期回调原理
与View/Window的关系
与Fragment的关系
3.1.2 View/Window
View/Window关系
View渲染
View事件分发处理流程
3.1.3 编译打包
编译打包原理
逆向工程分析
热修复
3.2 Hybrid App
3.2.1 与Native App的异同
3.2.2 主流框架
PhoneGap
ionic
React Native
3.3 架构能力
3.3.1 架构
MVC
MVP
MVVM
Flux
Clean Architecture
3.3.2 App框架
分包
分层
3.3.3 设计模式
OOD原则
常用设计模式运用
3.4 ART&Dalvik
AOT compilation
GC
Bytecode&.Dex
3.5 自动化测试
monkey/monkey runner
UIAutomator
Espresso
Robotium
4. 扩展学习
4.1 响应式编程
4.1.1 Rx
RxJava
RxAndroid
RxBinding
4.1.2 Agera
4.2 主流开源库
4.2.1 快速开发
Android Annotation
ButterKnife
4.2.2 Views
太多
4.2.3 HTTP模型
Retrofit
OkHttp
Volley
4.2.4 图片处理
Glide
Fresco
Picasso
UIL
4.2.5 依赖注入
Dagger2
4.2.6 数据库
ORMLite
GreenDAO
Realm
Sugar
4.2.7 辅助
Logger
LeakCanary
DbInspector
本文已上传至Github AndroidDevResources 项目, 欢迎Fork, 提出意见.
(本文地址, 或github资源地址https://github.com/mingjunli/AndroidDevResources/wiki/Android-App%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%9B%BE%E8%B0%B1)
相关推荐
- C++企业级开发规范指南(c++开发gui)
-
打造高质量、可维护的C++代码标准一、前言C++作为一门功能强大的系统级编程语言,被广泛应用于操作系统、游戏引擎、高性能服务器、数据库系统等领域。知名互联网公司(如Google、Microsoft、腾...
- C++|整型的最值、上溢、下溢、截断、类型提升和转换
-
整数在计算机内以有限字长表示,当超出最值(有限字长)时,需要截断(溢出,求模)操作。不同字长的整型具有不同的值域,混合运算时,需要类型提升和转换。1整形最值在<limit.h>中有整型的...
- C++|漫谈STL细节及内部原理(c++ std stl)
-
1988年,AlexanderStepanov开始进入惠普的PaloAlto实验室工作,在随后的4年中,他从事的是有关磁盘驱动器方面的工作。直到1992年,由于参加并主持了实验室主任BillWo...
- C++11新特性总结 (二)(c++11新特性 pdf)
-
1.范围for语句C++11引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素vector<int>vec={1,2,3,4,5,6};f...
- C++ STL 漫谈(c++中的stl到底指的什么)
-
标准模板库(StandardTemplateLibrary,STL)是惠普实验室开发的一个函数库和类库。它是由AlexanderStepanov、MengLee和DavidRMusser在...
- C++学习教程_C++语言随到随学_不耽误上班_0基础
-
C++学习教程0基础学C++也可以,空闲时间学习,不耽误上班.2019年C语言新课程已经上线,随到随学,互动性强,效果好!带你征服C++语言,让所有学过和没有学过C++语言的人,或是正准备学习C++语...
- C++遍历vector元素的四种方式(c++ 遍历vector)
-
vector是相同类型对象的集合,集合中的每个对象有个对应的索引。vector常被称为容器(container)。C++中遍历vector的所有元素是相当常用的操作,这里介绍四种方式。1、通过下标访问...
- 一起学习c++11——c++11中的新增的容器
-
c++11新增的容器1:array当时的初衷是希望提供一个在栈上分配的,定长数组,而且可以使用stl中的模板算法。array的用法如下:#include<string>#includ...
- C++编程实战基础篇:一维数组应用之投票统计
-
题目描述班上有N个同学,有五位候选人“A,B,C,D,E”,请所有的同学投票并选举出班长,现在请你编写程序来他们计算候选人的得票总数,每位同学投票将以数字的形式投票“12345”分别代表五位候选人,...
- C++20 新特性(6):new表达式也支持数组大小推导
-
new表达式也支持数组大小推导在C++17标准中,在定义并初始化静态数组时,是可以忽略数组大小,然后通过初始化数据来推导数组的大小。但使用new来定义并初始化动态数组时,并不支持这种自动推导数组大...
- C++ 结构体(struct)最全详解(c++结构体用法)
-
一、定义与声明1.先定义结构体类型再单独进行变量定义structStudent{intCode;charName[20];charSex;intA...
- 自学 C++ 第 6 课 二维数组找最值
-
键盘输入一个m×n的二维数组,通过C++编程找出元素中的最大值,并输出其所在的位置坐标。例如,输入一个4×5的二维数组,数组元素分别为{{556623749},{578964563},...
- 从缺陷中学习C/C++:聊聊 C++ 中常见的内存问题
-
在写C/C++程序时,一提到内存,大多数人会想到内存泄露。内存泄露是一个令人头疼的问题,尤其在开发大的软件系统时。一个经典的现象是,系统运行了10天、1个月都好好的,忽然有一天宕机了:OOM(Out...
- C++开发者都应该使用的十个C++11特性(上)
-
在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下...
- 深度解读C/C++指针与数组(c++指针和数组的区别)
-
指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。今天我们就来聊一聊数组和指针千丝万缕的关系;一维数组与...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)