2020-04-01

Android 零基础入门

Android 零基础与进阶知识学习 Roadmap

概述

本文适用于:

  • 零基础,想学习Android的同学。

  • 也适用于已经开始使用Android开发,但想要变得更好的同学。

本内容最大作用是“学习导航”,让你了解知识盲区,让你学习不走弯路,在此基础上尽力提供最佳学习资料。请同学们不要仅仅依赖本文档提供的学习资料,应该自行拓展和搜索更多资料进行学习,成为一位资深“Google”工程师。

相关知识点学习,推荐优先看 Android 官方开发指导文档:Android Developer Guides

先上一张全景图。

尊重知识产权,感谢作者 Amit Shekhar。

image

入门

  1. 首先,你必须有掌握Android开发必须具体的JAVA基础知识(先以Java为基础语言,再学习Kotlin),建议书籍HeadFirst for JavaEffective Java

  2. 在PC或笔记本电脑上设置Android开发的Android Studio IDE。 Install Android Studio

  3. 在Android Studio中设置Kotlin。 Setup Kotlin in Android Studioadd-kotlin

  4. Android Studio IDE简介。Introduction to Android Studio IDE

  5. 构建你的第一个App,Android用户界面 - XML和视图组件 Android User Interface — XML and View Components

开始学习

  1. Android 四大组件等基本概述

  2. 理解Activity 和它的生命周期,因为在构建无错误的应用程序时,了解Activity生命周期非常重要。Introduction to ActivityActivity Lifecycle

  3. Android 清单文件——Manifest File

  4. Android 资源文件——App Resources

  5. 理解 Navigations,Task和Back Stack。 Android Activity是我们希望用户浏览的屏幕的逻辑结构。 每个Activity与其他Activity相关的关系对于良好的用户体验非常重要。传送门-Android Task and Back Stack Review

  6. 掌握 Android Layouts UI 布局,尝试开发各类简单的 UI。

  7. 理解 Context 在 Android应用程序。 要开发更好的Android应用,我们必须知道什么是Context? Android开发中的 Context 几乎无处不在,它是Android开发中最重要的东西,因此我们必须理解正确使用它。传送门-Understanding Context In Android Application

  8. 理解如何处理 Configuration 更改。 某些设备配置可在运行时更改,例如屏幕方向,键盘可用性以及用户启用多窗口模式时。 我们必须知道如何处理这些变化。Handle configuration changes

  9. 理解Fragment及其生命周期。 它主要是为了在大屏幕上支持更加动态和灵活的UI设计,例如平板电脑。推荐阅读 Fragment and its LifeCycle

  10. 理解 Broadcast 和 BroadcastReceiver。Broadcasts

  11. 理解Service和 IntentService 。 Service是用于在后台执行操作的组件,例如播放音乐,处理网络事务,交互内容提供者等。它没有任何UI(用户界面)。Services

  12. 理解ContentProvider。 它们用于在应用程序之间共享数据。 它们提供了定义数据安全性和封装数据的机制。ContentProviders

开发进阶

你以为下面就是全部?No,只是开端~~,需要你自己在以后的日子里不断的深入。

实践更多的 API

  1. 理解如何调试Android应用程序,因为它是任何开发人员最重要的技能。 Android Studio提供了一个调试器,允许您执行许多重要操作。调试您的应用|Android Developer

  2. 了解如何创建自定义视图。 为开发更好的Android应用,我们必须知道如何创建自定义视图。Custom View Components|Android Developers

  3. 理解 Threading。 由于Java虚拟机允许应用程序具有多个线程执行并发运行。 我们必须知道如何正确利用多线程环境。Better performance through threadingUnderstanding Android Threading

  4. 理解Android Core。 Looper,Handler和 HandlerThread 是Android解决异步编程问题的方法。 他们不是老派,而是一个整洁的结构,在这个结构上构建了一个复杂的android框架。传送门-Understanding Android Core: Looper, Handler, and HandlerThread

  5. 了解如何发起一个 http 请求,获取 server 数据,先试试用 Volley 入门简单的网络开发(拉取一些公网数据?加载一张网络图片?),你也可以用强大的 OkHttp 试试。

  6. 理解数据库和SQL。Know about db & sql|Youtube,学会使用 SQLite Save data using SQLite

  7. 阅读有关构建安全Android应用程序的安全提示。安全要点|Android Developers

  8. 了解Android开发最佳实践。Android Development Best Practicesfuturice/android-best-practices

  9. Optional:了解Android传感器,GPS,加速。Motion sensors|Android Developers

  10. Optional:了解位置和地图。Location and Maps|Android Developers

  11. etc.

性能(如何让你的App性能更好?)

  1. 直接从Android开发者频道观看和了解Android系列视频中的Android性能模式。Android Performance Patterns|Android Developers| YouTube

  2. 了解 JVM,了解dalvik,了解 ART(Android Runtime)。

  3. 掌握系统的 GC 过程,了解你的程序是如何使用内存的。Garbage Collection|Youtube

  4. 了解获取内存使用情况,CPU使用率等指标的工具。在Android应用程序开发过程中,您应该持续测量一些指标。Android App Performance Metrics

  5. 了解如何检测和修复Android应用程序中的内存泄漏。持有对不再需要的对象的引用是一种不好的做法,在服务之后释放对象引用有助于垃圾收集器杀死该对象,这最终有助于自己解决内存泄漏问题。 如果不必要地保留对象引用,则只会导致内存泄漏。Detecting and fixing memory leaks in android

  6. 了解Bitmaps。 由于需要大量内存,因此很容易引起OOM。 用户喜欢内容! 特别是当内容格式良好且看起来不错时。 图像就是非常好的内容提供载体,主要是因为它们的图像传千字的特性。 但由此也消耗大量内存。 大量的内存!Handling bitmaps|Android Developers

  7. Glide and Fresco 加载图片的基本策略:How the Andorid image loading library glide and fresc works?

  8. 了解应用程序的启动时间并努力改进它。App Launch Time|YouTube

  9. 了解如何减少APK大小。How to reduce APK size in android

  10. 了解如何优化电量使用情况。Location & Battery Drain| YouTube

  11. 探索何时应考虑使用 ArrayMap 以获得更好的Android应用程序性能。Android App Optimization Using ArrayMap and SparseArray

  12. 理解缓存实现。Cachematters for net..|Youtube

  13. 了解优化网络请求频率。优化网络请求|Youtube

  14. etc.

架构

除了初步了解常见的架构,你需要花费大量的时间去融会贯通他们的设计思想,并不断的去学习开发过程中遇到的更新、更大规模的程序架构。

  1. 了解Android架构组件。What are Android Architecture Components?

  2. 了解MVP架构。Android MVP Introduction

  3. 了解MVVM架构。Essential Guide For Designing Your Android App Architecture: MVPandroid-mvvm-architecture

  4. 组件化

  5. etc.

工程与工具

  1. 学习Git,这样你才知道如何在全球最大男性社交网络 GitHub 上与大神们互动,知道如何在日常的协同开发中与你的同事互动。​Git Quick Start - 原理浅析、常用命令与技巧最佳实践

  2. 了解Gradle构建工具。Android Gradle PluginGradle Build Tool

  3. 掌握一些性能分析工具,如 官方工具 Android Profiler,还有很多功能强大的第三方工具待你发现。

  4. 了解如何 在Android应用程序中 应用 proguard 。 它是一种用于缩小代码,混淆代码和优化代码的工具,可以减小应用程序的大小。Applying Proguard In An Android Application

  5. 了解Android有用的工具。 因为我们都很幸运地生活在一个互相帮助的世界里,每个人都可以建立分享工具。 这些工具使开发更快,生活更轻松。 不要忘记探索和使用这些工具。Android Development Useful Tools

  6. etc.

了解更多第三方开源库

熟悉一些常见的开源库的使用,并了解它们的设计与实现,利于提高架构设计能力。

  1. OkHttp:强大的 http 请求库,https://square.github.io/okhttp/

  2. Retrofit:http 网络请求框架,https://github.com/square/retrofit

  3. Glide & Fresco:最常用的两个图片加载库,掌握 Glide 的学习成本稍低一些,Fresco 需要对Android 系统有些了解以及一些C++经验。

  4. RxJava:学习 RxJava

  5. EventBus:基于发布/订阅模式的通信组件。

  6. Dagger2:了解依赖注入。The New Dagger 2 Android InjectorIntroduction to Dagger 2

  7. 了解 ORM 框架:第三方的 greenDAO,官方的 Room

  8. etc.

理解系统原理

了解完应用层的知识,你需要学习 Android 系统相关知识,以便掌握 Android 系统和程序运行过程与原理。这不仅对你的架构设计能力提升会有大帮助,你还可以掌握或者发明一些黑科技。

一个完全开源的操作系统对程序员来说是块瑰宝,请自行前往 AOSP 学习。

  1. Binder 机制、Activity Manager Service 等系统服务(Intent 为啥可以跨进程?谁帮你干的?)

  2. Android Application 启动过程

  3. Android Activity 创建过程

  4. Android Window 创建过程

  5. Android 绘制系统(从vsync到应用层绘制)

  6. 消息机制

  7. 了解 Android(Linux)文件系统。

  8. etc.

拓展更多

  1. 学习Kotlin。A Complete Guide To Learn Kotlin For Android Developmentkoltincn

  2. TCP/UDP

  3. http/http2.0

  4. https

  5. Protocol buffer

  6. Android 热更新与插件化技术

  7. AOP 技术

  8. Hook 技术

  9. AIDL

  10. 了解如何使用lint检查改进代码使用 Lint 改进您的代码

  11. 学会使用android studio插件,这样会让android开发变得更有效率。How to become more productive in android with android studio plugins

  12. 了解编写测试。Android Testing Codelab

  13. etc.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容