知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

我想做安卓开发,怎么系统学习?

发表时间:2022-03-26来源:网络

现在CSDN、知乎、掘金、GitHub上各路大佬层出不穷,他们深耕Android开发多年,总结出满满的学习干货。但同时也存在很多非良心的博主,要么活出了人类的本质,复读机一样到处转载;要么纯粹自嗨型草草说了自己的工作经历,让读者无法从良莠不齐的资源海洋中高效高质地获取真正有用的信息。

本文的目的很简单,一句话:

用最少的时间,最高效率,让你清楚:想要做Android开发,你需要学什么?你该在哪学?

本文的特点在于将繁琐的知识化为系列专题的形式展现给读者,当你能跟随博主构建的体系化学习知识点时,恭喜你,你已经干掉了BAT、字节、网易等大厂的几乎80%以上的Android开发人员。这种无所不知的痛快感,是不是感觉你已成为别人眼中的大神了?

这时可能你要怀疑我了:真的这么神吗,程序员图书馆你不会在忽悠我吧?

1.深入理解Java基础知识

Java 是 Android App 开发默认的语言, Android Framework 也是默认使用 Java 语言!既然选择了Android开发,那肯定必学Jav。

那么掌握学习Java究竟需要掌握哪些知识要点呢?

一、深入Java泛型

泛型的作用与定义
通配符与嵌套
泛型上下边界
RxJava中泛型的使用分析

二、注解深入浅出

2.1 自定义注解

自定义注解与元注解
注解参数与默认值

2.2 注解的使用

APT,编译时注解处理器
插桩,编译后处理筛选
反射,运行时动态获取注解信息

2.3 Retrofit中的注解

三、并发编程

3.1 线程共享和协作

CPU核心数,线程数,时间片轮转机制解读
synchronized、Lock、volatile、ThreadLocal如何实现线程共享
Wait,Notify/NotifyAll,Join方法如何实现线程间协作

3.2 站在巨人肩上操作CAS

CAS的原理
CAS带来的ABA问题之原子操作类的正确使用实战

3.3 仅会用线程池是不够的

Callbale、Future和FutureTask源码解读
线程池底层实现分析
线程池排队机制
手写线程池实战
Executor框架解读实战

3.4 Android AsyncTask原理解析

四、数据传输与序列化

4.1 Serializable原理

4.2 Parcelable接口原理解析

4.3 Json

五、Java虚拟机原理

5.1 垃圾回收器机制

对象存活及强、弱等各种引用辨析
快速解读GC算法之标记-清除、复制及标记-整理算法
正确姿势解读GC日志

5.2 内存分配策略

JVM栈桢及方法调用详解
JMM,Java Memory Model

5.3 Dalvik虚拟机

六、反射与类加载

6.1 反射基本概念与Class

三种获取Class对象的方式
获取构造器实例化对象与属性信息
包信息和方法
Hook技术动态编程

6.2 ClassLoader类加载器

动态代理模式
Android Davilk与ART
PathClassLoader、DexClassLoader与BootClassLoader
双亲委托机制

七、高效IO

7.1 Java IO 体系

装饰者模式
InputStream与OutputStream
Reader与Writer

7.2 File文件操作

FileChannel
内存映射

7.3 IO操作Dex加密

2.Kotlin

Google 几年前就开始走 “Kotlin First” 的路线,目前很多官方的文档和 Demo 都是使用 Kotlin 语言作为默认,Kotlin 的重要性不言而喻。

Google 官方也出了个“Refactoring to Kotlin”的教程,其介绍如下:

此 Codelab 的适用对象为任何使用 Java 并考虑将其项目迁移到 Kotlin 的开发者。我们将从数个 Java 类入手,引导您使用 IDE 将它们转换为 Kotlin。接着,我们会审视转换后的代码,研究如何加以改善,使其更符合使用习惯,同时避免常见错误

3.FLutter

Flutter越来越火,学习Flutter的人越来越多,对于刚接触Flutter的人来说最重要的是如何学习Flutter,重点学习Flutter的哪些内容。下面是Flutter的学习路线图,学会这些你就入门了,当然这仅仅是初学者的学习路线图,前路漫漫。

一、你好,Flutter

原生开发与跨平台技术

初识Flutter

Flutter开发环境搭建

二、Flutter 编码语言Dart详解系列

Dart语法篇之基础语法(一)

Dart语法篇之集合的使用与源码解析(二)

Dart语法篇之集合操作符函数与源码分析(三)

Dart语法篇之函数的使用(四)

Dart语法篇之面向对象基础(五)

Dart语法篇之面向对象继承和Mixins(六)

Dart语法篇之类型系统与泛型(七)·

三、Flutter框架原理与使用技巧

widget控件详解:text,image,button

布局分析:Linear布局,弹性布局,流水布局

如何自定义View

动画/手势交互

多线程开发原理

网络请求原理

Flutter架构与原生代码的交互

实战发布自己的Flutter库

四、Flutter架构知识落地实现

干货集中营 gank app项目实战

WanAndroid API构建客户端项目实战

3.Android相关知识要点

第一章 四大组件

第一章四大组件之Activity(一)_StayHungryStayFoolish-CSDN博客

第一章四大组件之Service(二)_StayHungryStayFoolish-CSDN博客

第一章四大组件之ContentProvider(三)_StayHungryStayFoolish-CSDN博客

第一章四大组件之BroadcastReceiver(四)_StayHungryStayFoolish-CSDN博客

第一章四大组件之补充_StayHungryStayFoolish-CSDN博客

第二章 Fragment

第二章Fragment_StayHungryStayFoolish-CSDN博客

第三章 存储(数据持久化)

第三章存储_StayHungryStayFoolish-CSDN博客

第四章 自定义组件、动画

第四章自定义组件、动画_StayHungryStayFoolish-CSDN博客

第五章 网络(包括网络基础、进阶)

第五章网络之计算机网络基础(一)_StayHungryStayFoolish-CSDN博客

第五章网络之Android网络知识&框架(二)_StayHungryStayFoolish-CSDN博客

第六章 图片

第六章图片_StayHungryStayFoolish-CSDN博客

第七章 六大布局

第七章布局_StayHungryStayFoolish-CSDN博客

第八章 性能优化

第八章性能优化之内存优化(一)_StayHungryStayFoolish-CSDN博客

第八章性能优化之App启动优化(二)_StayHungryStayFoolish-CSDN博客

第八章性能优化之布局优化(三)_StayHungryStayFoolish-CSDN博客

第八章性能优化之其他优化(四)_StayHungryStayFoolish-CSDN博客

第九章 JNI

第九章JNI_StayHungryStayFoolish-CSDN博客

第十章 多线程、进程间通信

第十章进程间的通信之多线程基础(一)_StayHungryStayFoolish-CSDN博客

第十章进程间的通信之Java/Android多线程开发(二)_StayHungryStayFoolish-CSDN博客

第十章进程间的通信之Handler机制(三)_StayHungryStayFoolish-CSDN博客

第十章进程间的通信之多进程(四)_StayHungryStayFoolish-CSDN博客

第十一章 WebView

第十一章WebView_StayHungryStayFoolish-CSDN博客

第十二章 进程保活

第十二章进程保活_StayHungryStayFoolish-CSDN博客

4.微信小程序

一、小程序介绍

背景与趋势

小程序技术方案

公众平台注册及配置

开发工具的使用

MINA框架架构剖析

应用程序配置详解

逻辑与界面分离架构

单向数据流

二、UI开发

复杂的页面布局

文字图片等内容的呈现

用户交互表单开发

对话框等交互元素开发

下拉刷新和上拉加载

图形与动画操作

页面之间的跳转过渡

用户界面事件处理

三、小程序项目实战

微信小程序的文件结构 —— 教程系列(1)

微信小程序的生命周期实例演示 —— 微信小程序教程系列(2)

微信小程序的动态修改视图层的数据 —— 微信小程序教程系列(3)

微信小程序如何新建页面 —— 微信小程序教程系列(4)

微信小程序的如何使用全局属性 —— 微信小程序教程系列(5)

微信小程序的页面跳转和参数传递 —— 微信小程序教程系列(6)

微信小程序标题栏和导航栏的设置 —— 微信小程序教程系列(7)

微信小程序的作用域和模块化 —— 微信小程序教程系列(8)

微信小程序视图层的数据绑定 —— 微信小程序教程系列(9)

微信小程序之wx:if视图层的条件渲染 —— 微信小程序教程系列(10)

微信小程序视图层的列表渲染 —— 微信小程序教程系列(11)

微信小程序视图层的模板 —— 微信小程序教程系列(12)

微信小程序之wxss —— 微信小程序教程系列(13)

微信小程序的网络请求 —— 微信小程序教程系列(14)

微信小程序的百度地图获取地理位置 —— 微信小程序教程系列(15)

微信小程序使用百度api获取天气信息 —— 微信小程序教程系列(16)

微信小程序获取系统日期和时间 —— 微信小程序教程系列(17)

微信小程序之上拉加载和下拉刷新 —— 微信小程序教程系列(18)

微信小程序之组件 —— 微信小程序教程系列(19)

微信小程序之微信登陆 —— 微信小程序教程系列(20)

微信小程序之顶部导航栏(选项卡)实例 —— 微信小程序实战系列(21)

微信小程序之加载更多(分页加载)实例 —— 微信小程序实战系列(22)

微信小程序之自定义轮播图实例 —— 微信小程序实战系列(23)

微信小程序之仿android fragment之可滑动的底部导航栏实例 —— 微信小程序实战系列(24)

微信小程序之登录页实例 —— 微信小程序实战系列(25)

微信小程序之自定义toast实例 —— 微信小程序实战系列(26)

微信小程序之自定义抽屉菜单(从下拉出)实例 —— 微信小程序实战系列(27)

微信小程序之自定义模态弹窗(带动画)实例 —— 微信小程序实战系列(28)

微信小程序之侧栏分类 —— 微信小程序实战商城系列(29)

微信小程序之仿淘宝分类入口 —— 微信小程序实战商城系列(30)

微信小程序之购物数量加减 —— 微信小程序实战商城系列(31)

微信小程序之商品属性分类 —— 微信小程序实战商城系列(32)

微信小程序之购物车 —— 微信小程序实战商城系列(33)

5.NDK模块开发

一、NDK基础知识体系

1.1 C与C++

1.1.1数据类型

1.1.2内存结构与管理

1.1.3预处理指令、Typedef别名

1.1.4结构体与共用体

1.1.5指针、智能指针、方法指针

1.1.6线程

1.1.7类

1.1.7.1函数、虚函数、纯虚函数与析构函数

1.1.7.2初始化列表

1.2JNI开发

1.2.1静态与动态注册

1.2.2方法签名、与Java通信

1.2.3本地引用与全局引用

1.3Native开发工具

1.3.1编译器、打包工具与分析器

1.3.2静态库与动态库

1.3.3CPU架构与注意事项

1.3.4构建脚本与构建工具

1.3.4.1Cmake

1.3.4.2Makefile

1.3.5交叉编译移植

1.3.4.2FFmpeg交叉编译

1.3.4.2X264、FAAC交叉编译

1.3.4.2解决所有移植问题

1.3.6AS构建NDK项目

1.4Linux编程

1.4.1Linux环境搭建,系统管理,权限系统和工具使用(vim等)

1.4.2Shell脚本编程

二、底层图片处理

2.1PNG/JPEG/WEBP图像处理与压缩

2.2微信图片压缩

2.3GIF合成原理与实现

三、音视频开发

3.1多媒体系统

3.1.1Camera与手机屏幕采集

3.1.2图像原始数据格式YUV420(NV21与YV12等)

3.1.3音频采集与播放系统

3.1.4编解码器MediaCodec

3.1.5MediaMuxer复用与MediaExtractor

3.2FFmpeg

3.2.1ffmpeg模块介绍

3.2.2音视频解码,音视频同步

3.2.3I帧,B帧,P帧解码原理

3.2.4x264视频编码与faac音频编码

3.2.5OpenGL绘制与NativeWindow绘制

3.3流媒体协议

3.3.1RTMP协议

3.3.2音视频通话P2P WebRtc

3.4音视频效果处理

3.4.1OpenGL ES滤镜开发之美颜效果

3.4.2抖音视频效果分析与实现

3.4.3音视频变速原理

3.5项目实战一:斗鱼直播app(用户端与主播端)

3.6实战项目二:抖音视频app

3.7缅怀音视频专家雷霄骅,音视频项目汇总

四、机器学习

4.1 Opencv

4.1.1图像预处理

4.1.1.1灰度化、二值化

4.1.1.2腐蚀与膨胀

4.1.2人脸检测

4.1.3身份证识别

以上就是我搜集整理的android系统进阶学习步骤和学习要点。

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜